diff --git a/svjis/articles/tests/factories/__init__.py b/svjis/articles/tests/factories/__init__.py index 7ff90a3..d535f0b 100644 --- a/svjis/articles/tests/factories/__init__.py +++ b/svjis/articles/tests/factories/__init__.py @@ -7,6 +7,7 @@ from .preferences import PreferencesFactory from .company import CompanyFactory from .advert_type import AdvertTypeFactory +from .fault_report import FaultReportFactory __all__ = [ "ContentTypeFactory", @@ -18,4 +19,5 @@ "PreferencesFactory", "CompanyFactory", "AdvertTypeFactory", + "FaultReportFactory", ] diff --git a/svjis/articles/tests/factories/fault_report.py b/svjis/articles/tests/factories/fault_report.py new file mode 100644 index 0000000..b98eafb --- /dev/null +++ b/svjis/articles/tests/factories/fault_report.py @@ -0,0 +1,17 @@ +import factory + +from .user import UserFactory +from ...models import FaultReport + + +class FaultReportFactory(factory.django.DjangoModelFactory): + subject = factory.Faker('sentence', nb_words=3) + slug = factory.Faker('slug') + description = factory.Faker('text') + created_date = factory.Faker('date_time') + created_by_user = factory.SubFactory(UserFactory) + assigned_to_user = factory.SubFactory(UserFactory) + closed = factory.Faker('boolean') + + class Meta: + model = FaultReport diff --git a/svjis/articles/tests/test_faults.py b/svjis/articles/tests/test_faults.py index 8b1724f..f2f201d 100644 --- a/svjis/articles/tests/test_faults.py +++ b/svjis/articles/tests/test_faults.py @@ -1,22 +1,70 @@ from django.test import TestCase from django.urls import reverse -from .testdata import UserDataMixin +from .factories.fault_report import FaultReportFactory +from .testdata import UserDataMixin, PreferencesDataMixin -class FaultsTest(UserDataMixin, TestCase): +class FaultsTest(UserDataMixin, PreferencesDataMixin, TestCase): + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.fault = FaultReportFactory(created_by_user=cls.u_jiri, closed=False) + + cls.create_url = reverse('faults_fault_create_save') + cls.detail_url = reverse('fault', kwargs={'slug': cls.fault.slug}) + cls.update_url = reverse('faults_fault_update') def create_fault_and_get_created_by(self, username, password, fault_form): logged_in = self.client.login(username=username, password=password) self.assertTrue(logged_in) response = self.client.post( - reverse('faults_fault_create_save'), + self.create_url, fault_form, follow=True, ) self.assertEqual(response.status_code, 200) return response.context['obj'] + def test_retrieve(self): + logged_in = self.client.login(username='jiri', password=self.u_jiri_password) + self.assertTrue(logged_in) + response = self.client.get(self.detail_url) + self.assertEqual(response.status_code, 200) + fault = response.context['obj'] + self.assertEqual(fault, self.fault) + self.assertEqual(fault.logs.count(), 0) + + def test_close_fault_retrieve_logs(self): + logged_in = self.client.login(username='jiri', password=self.u_jiri_password) + self.assertTrue(logged_in) + response = self.client.post( + self.update_url, + { + 'assigned_to_user': self.u_jarda.pk, + 'closed': True, + 'pk': self.fault.pk, + 'subject': self.fault.subject, + 'description': self.fault.description, + 'created_by_user': self.fault.created_by_user.pk, + }, + follow=True, + ) + self.assertEqual(response.status_code, 200) + + self.fault.refresh_from_db() + + self.assertEqual(self.fault.closed, True) + self.assertEqual(self.fault.logs.count(), 2) + assigned, closed = self.fault.logs.all() + self.assertEqual(assigned.type, assigned.TYPE_ASSIGNED) + self.assertEqual(assigned.resolver, self.u_jarda) + self.assertEqual(assigned.user, self.u_jiri) + self.assertEqual(closed.type, closed.TYPE_CLOSED) + self.assertEqual(closed.resolver, self.u_jarda) + self.assertEqual(closed.user, self.u_jiri) + # Created by user def test_owner_created_by_user(self): fault = self.create_fault_and_get_created_by( diff --git a/svjis/articles/tests/testdata/preferences_data.py b/svjis/articles/tests/testdata/preferences_data.py index 7abb9b2..6c353f3 100644 --- a/svjis/articles/tests/testdata/preferences_data.py +++ b/svjis/articles/tests/testdata/preferences_data.py @@ -20,3 +20,6 @@ def setUpTestData(cls): cls.p_fault_assigned = PreferencesFactory( key="mail.template.fault.assigned", value="Uživatel {} vám přiřadil tiket {}:


{}" ) + cls.p_fault_closed = PreferencesFactory( + key="mail.template.fault.closed", value="Uživatel {} uzavřel tiket {}:


{}" + )