From b7dc0e9cb52040c40b972fb91b9cd28d42eb4043 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 13 Dec 2017 12:30:44 +0100 Subject: [PATCH] unit tests for model worker functions --- smash/web/models/worker.py | 6 +++--- smash/web/tests/models/test_worker.py | 31 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/smash/web/models/worker.py b/smash/web/models/worker.py index efca00bd..46f63ef0 100644 --- a/smash/web/models/worker.py +++ b/smash/web/models/worker.py @@ -29,14 +29,14 @@ def role_choices_by_worker_type(worker_type): elif worker_type == WORKER_VOUCHER_PARTNER: return VOUCHER_PARTNER_ROLE_CHOICES else: - return () + raise TypeError("Unknown worker type") def worker_type_by_worker(worker): roles = worker.roles.filter(study=GLOBAL_STUDY_ID) if roles.count() == 0: return WORKER_STAFF - role = roles[0] + role = roles[0].role for role_type, role_name in STUDY_ROLE_CHOICES: if role_type == role: return WORKER_STAFF @@ -46,7 +46,7 @@ def worker_type_by_worker(worker): for role_type, role_name in VOUCHER_PARTNER_ROLE_CHOICES: if role_type == role: return WORKER_VOUCHER_PARTNER - return WORKER_STAFF + raise TypeError("Unknown worker role") class Worker(models.Model): diff --git a/smash/web/tests/models/test_worker.py b/smash/web/tests/models/test_worker.py index e43ae0bb..1b479467 100644 --- a/smash/web/tests/models/test_worker.py +++ b/smash/web/tests/models/test_worker.py @@ -4,6 +4,9 @@ from django.contrib.auth.models import User, AnonymousUser from django.test import Client, TestCase from web.models import Holiday, Worker +from web.models.worker import role_choices_by_worker_type, worker_type_by_worker +from web.models.worker_study_role import WORKER_STAFF, ROLE_CHOICES_SECRETARY, ROLE_CHOICES_HEALTH_PARTNER, \ + WORKER_HEALTH_PARTNER, ROLE_CHOICES_VOUCHER_PARTNER, WORKER_VOUCHER_PARTNER from web.tests.functions import create_worker from web.views.notifications import get_today_midnight_date @@ -60,3 +63,31 @@ class WorkerModelTests(TestCase): def test_get_by_user_for_anonymous(self): self.assertIsNone(Worker.get_by_user(AnonymousUser())) + + def test_role_choices_by_worker_type(self): + with self.assertRaises(Exception): + role_choices_by_worker_type("invalid arg") + + def test_worker_type_by_worker_without_role(self): + self.assertEqual(WORKER_STAFF, worker_type_by_worker(Worker())) + + def test_worker_type_by_worker_with_secretary_role(self): + worker = create_worker() + worker.roles.update(role=ROLE_CHOICES_SECRETARY) + self.assertEqual(WORKER_STAFF, worker_type_by_worker(worker)) + + def test_worker_type_by_worker_with_health_partner_role(self): + worker = create_worker() + worker.roles.update(role=ROLE_CHOICES_HEALTH_PARTNER) + self.assertEqual(WORKER_HEALTH_PARTNER, worker_type_by_worker(worker)) + + def test_worker_type_by_worker_with_voucher_partner_role(self): + worker = create_worker() + worker.roles.update(role=ROLE_CHOICES_VOUCHER_PARTNER) + self.assertEqual(WORKER_VOUCHER_PARTNER, worker_type_by_worker(worker)) + + def test_worker_type_by_worker_with_invalid_role(self): + worker = create_worker() + worker.roles.update(role="unk") + with self.assertRaises(Exception): + worker_type_by_worker(worker) -- GitLab