def test_edit_with_invalid_reviews(self): """Test that editing a fault and adding a reviewer works""" FaultType.objects.create(code="fault type") fault = utils.create_fault(user=self.user) rev_group = utils.create_fault_review_group() self.user.groups.add(rev_group.group) assert fault.modality is None modality = u_models.Modality.objects.create(name="modality") fault.unit.modalities.add(modality) edit_url = reverse("fault_edit", kwargs={'pk': fault.pk}) se = sl_utils.create_service_event() fault.related_service_events.add(se) data = { "fault-occurred": format_datetime(fault.occurred), "fault-unit": fault.unit.id, "fault-modality": modality.pk, "fault-fault_types_field": [fault.fault_types.first().code], "fault-comment": "", "fault-related_service_events": [se.pk], "review-form-0-group": rev_group.group.name, "review-form-0-reviewed_by": "", } assert fault.faultreviewinstance_set.count() == 0 resp = self.client.post(edit_url, data) assert resp.status_code == 200 assert resp.context['review_forms'][0].errors['reviewed_by']
def test_with_review_groups_with_perm(self): frg = utils.create_fault_review_group() user = qa_utils.create_user() p = Permission.objects.get(name="Can review faults") user.user_permissions.add(p) user.groups.add(frg.group) assert can_review_faults(user)
def test_valid_create_with_invalid_review(self): """Test that creating a fault with all options and an invalid reviewer does not work""" ft = FaultType.objects.create(code="fault type") rev_group = utils.create_fault_review_group() self.user.groups.add(rev_group.group) usa = sl_utils.create_unit_service_area(unit=self.unit) se = sl_utils.create_service_event(unit_service_area=usa) data = { "fault-occurred": "20 Jan 2021 17:59", "fault-unit": self.unit.id, "fault-modality": self.unit.modalities.all().first().pk, "fault-fault_types_field": [ft.code], "fault-comment": "test comment", "fault-related_service_events": [se.pk], "review-form-0-group": rev_group.group.name, "review-form-0-reviewed_by": "", } resp = self.client.post(self.create_url, data) assert resp.status_code == 200 assert resp.context['review_forms'][0].errors
def test_valid_create_with_review(self): """Test that creating a fault with all options and a reviewer set works""" ft = FaultType.objects.create(code="fault type") rev_group = utils.create_fault_review_group() self.user.groups.add(rev_group.group) usa = sl_utils.create_unit_service_area(unit=self.unit) se = sl_utils.create_service_event(unit_service_area=usa) data = { "fault-occurred": "20 Jan 2021 17:59", "fault-unit": self.unit.id, "fault-modality": self.unit.modalities.all().first().pk, "fault-fault_types_field": [ft.code], "fault-comment": "test comment", "fault-related_service_events": [se.pk], "review-form-0-group": rev_group.group.name, "review-form-0-reviewed_by": self.user.pk, } resp = self.client.post(self.create_url, data) assert resp.status_code == 302 assert resp.url == self.list_url assert Comment.objects.count() == 1 f = Fault.objects.latest('pk') assert f.faultreviewinstance_set.count() == 1 assert list(f.related_service_events.values_list( "id", flat=True)) == [se.id]
def test_edit_with_changed_reviews(self): """Test that editing a fault with existing reviewer works""" FaultType.objects.create(code="fault type") fault = utils.create_fault(user=self.user) rev_group = utils.create_fault_review_group() utils.create_fault_review(fault=fault, review_group=rev_group, reviewed_by=self.user) self.user.groups.add(rev_group.group) new_u = qa_utils.create_user() new_u.groups.add(rev_group.group) modality = u_models.Modality.objects.create(name="modality") fault.unit.modalities.add(modality) edit_url = reverse("fault_edit", kwargs={'pk': fault.pk}) se = sl_utils.create_service_event() fault.related_service_events.add(se) data = { "fault-occurred": format_datetime(fault.occurred), "fault-unit": fault.unit.id, "fault-modality": modality.pk, "fault-fault_types_field": [fault.fault_types.first().code], "fault-comment": "", "fault-related_service_events": [se.pk], "review-form-0-group": rev_group.group.name, "review-form-0-reviewed_by": new_u.pk, } assert list( fault.faultreviewinstance_set.values_list( "reviewed_by_id", flat=True)) == [self.user.pk] resp = self.client.post(edit_url, data) assert resp.status_code == 302 fault.refresh_from_db() assert fault.faultreviewinstance_set.count() == 1 assert list( fault.faultreviewinstance_set.values_list( "reviewed_by_id", flat=True)) == [new_u.pk]
def test_create_ajax_valid(self): """Test that creating a fault via ajax (e.g. from perform test list instance page) works""" ft = FaultType.objects.create(code="fault type") rev_group = utils.create_fault_review_group(required=False) self.user.groups.add(rev_group.group) data = { "fault-occurred": "20 Jan 2021 17:59", "fault-unit": self.unit.id, "fault-modality": self.unit.modalities.all().first().pk, "fault-fault_types_field": [ft.code], "fault-comment": "test comment", "review-form-0-group": rev_group.group.name, "review-form-0-reviewed_by": self.user.pk, } resp = self.client.post(self.ajax_url, data=data) assert resp.status_code == 200 assert not resp.json()['error'] assert Comment.objects.count() == 1
def test_with_review_groups_no_perm(self): utils.create_fault_review_group() user = qa_utils.create_user() assert not can_review_faults(user)
def test_review_complete_required_complete(self): rg_required = utils.create_fault_review_group() utils.create_fault_review_group(required=False) review = utils.create_fault_review(review_group=rg_required) assert review.fault.review_complete()