def test_list_requirement_json_filter_component(self): metrics = base.RequirementFactory.create_metrics(self.creator) req1 = base.RequirementFactory(name="First requirement", created_by=self.creator, **metrics) base.ProductRequirementFactory( requirement=req1, created_by=self.creator, product__name="Product 1", product__component__name="Component 1", ) metrics = base.RequirementFactory.create_metrics(self.creator) req2 = base.RequirementFactory(name="Second requirement", created_by=self.creator, **metrics) base.ProductRequirementFactory( requirement=req2, product__name="Product 2", product__component__name="Component 2", created_by=self.creator, ) resp = self.client.get(reverse("requirement:json"), {"component": "Component 1"}) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIs(data["recordsTotal"], 2) self.assertIs(data["recordsFiltered"], 1)
def test_transition_inexistent_state(self): self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name="Test requirement", created_by=self.creator, **metrics) data = base.DataFactory(name="Test data", created_by=self.creator) data_requirement = base.DataRequirementFactory(data=data, created_by=self.creator, requirement=requirement) provider = base.DataProviderFactory(name="Test provider", created_by=self.creator) data_provider = base.DataProviderRelationFactory( data=data, created_by=self.creator, provider=provider) items = [requirement, data, data_requirement, provider, data_provider] response = self.client.post( reverse( "requirement:transition", kwargs={ "source": "draft", "target": "nosuchstate", "pk": requirement.pk, }, )) self.assertEqual(response.status_code, 404) for item in items: getattr(item, "refresh_from_db")() self.assertEqual((getattr(item, "state")).name, "draft")
def test_transition_with_draft_data(self): self.erase_logging_file() self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name="Test requirement", created_by=self.creator, **metrics) data = base.DataFactory(name="Test data", created_by=self.creator, update_frequency=None) data_requirement = base.DataRequirementFactory(data=data, created_by=self.creator, requirement=requirement) items = [requirement, data_requirement] for item in items: self.assertEqual((getattr(item, "state")).name, "draft") self.client.force_login(self.creator) response = self.client.get( reverse( "requirement:transition", kwargs={ "source": "draft", "target": "ready", "pk": requirement.pk }, )) self.assertTrue(response.status_code, 200)
def test_transition_changes_requested_feedback(self): self.erase_logging_file() self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator, state="ready") requirement = base.RequirementFactory(name="Test requirement", state="ready", created_by=self.creator, **metrics) data = base.DataFactory(name="Test data", created_by=self.creator) data_requirement = base.DataRequirementFactory(data=data, state="ready", created_by=self.creator, requirement=requirement) items = [requirement, data_requirement] for item in items: self.assertEqual((getattr(item, "state")).name, "ready") self.client.force_login(self.other_user) self.client.post( reverse( "requirement:transition", kwargs={ "source": "ready", "target": "changes", "pk": requirement.pk }, ), {"feedback": "this is a feedback test"}, ) getattr(requirement, "refresh_from_db")() self.assertEqual(requirement.state, "changes") self.assertEqual(requirement.feedback, "this is a feedback test")
def test_post_add_with_clone(self): self.erase_logging_file() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) cloned_data = self._create_clone_data(requirement) cloned_data['name'] = 'Updated requirement' resp = self.client.post( reverse('requirement:add') + '?pk=' + str(requirement.pk), cloned_data) self.assertEqual(resp.status_code, 200) cloned_data['note'] = 'Updated note' resp = self.client.post( reverse('requirement:add') + '?pk=' + str(requirement.pk), cloned_data) self.assertEqual(resp.status_code, 200) cloned_data['uncertainty__threshold'] = 'test threshold 2' resp = self.client.post( reverse('requirement:add') + '?pk=' + str(requirement.pk), cloned_data) requirement.delete() self.assertEqual(resp.status_code, 302) self.check_single_object(models.Requirement, cloned_data) self.logging()
def test_product_requirement_edit_unique(self): self.login_creator() self.product_two = base.ProductFactory() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(created_by=self.creator, **metrics) product_requirement = base.ProductRequirementFactory( product=self.product, requirement=requirement, created_by=self.creator, relevance=self.relevance, ) product_to_test_against = base.ProductRequirementFactory( requirement=requirement, product=self.product_two, created_by=self.creator, relevance=self.relevance, ) data = self._DATA data['product'] = self.product_two.id data['requirement'] = product_requirement.requirement.id data['relevance'] = product_requirement.relevance.id resp = self.client.post( reverse('requirement:product:edit', kwargs={'requirement_pk': product_requirement.requirement.pk, 'pk': product_requirement.pk}), data) data = self._DATA self.assertEqual(resp.status_code, 200) self.assertEqual(resp.context['form'].errors, {'__all__': ['This relation already exists.']})
def test_transition_with_draft_data(self): self.erase_logging_file() self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) data = base.DataFactory(name='Test data', created_by=self.creator, update_frequency=None) data_requirement = base.DataRequirementFactory(data=data, created_by=self.creator, requirement=requirement) items = ([requirement, data_requirement] + list(metrics.values())) for item in items: self.assertEqual((getattr(item, 'state')).name, 'draft') self.client.force_login(self.creator) response = self.client.get( reverse('requirement:transition', kwargs={ 'source': 'draft', 'target': 'ready', 'pk': requirement.pk })) self.assertTrue(response.status_code, 200)
def test_product_requirement_edit(self): self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(created_by=self.creator, **metrics) product_requirement = base.ProductRequirementFactory( requirement=requirement, created_by=self.creator) data = self._DATA data["product"] = product_requirement.product.id data["requirement"] = product_requirement.requirement.id data["relevance"] = product_requirement.relevance.id resp = self.client.post( reverse( "requirement:product:edit", kwargs={ "requirement_pk": product_requirement.requirement.pk, "pk": product_requirement.pk, }, ), data, ) self.assertEqual(resp.status_code, 302) data["product"] = product_requirement.product.pk data["requirement"] = product_requirement.requirement.pk self.check_single_object(models.ProductRequirement, data)
def test_transition_existent_state_no_transition(self): self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) data = base.DataFactory(name='Test data', created_by=self.creator) data_requirement = base.DataRequirementFactory(data=data, created_by=self.creator, requirement=requirement) provider = base.DataProviderFactory(name='Test provider', created_by=self.creator) data_provider = base.DataProviderRelationFactory( data=data, created_by=self.creator, provider=provider) items = ([requirement, data_requirement] + list(metrics.values())) response = self.client.post( reverse('requirement:transition', kwargs={ 'source': 'draft', 'target': 'valid', 'pk': requirement.pk })) self.assertEqual(response.status_code, 404) for item in items: getattr(item, 'refresh_from_db')() self.assertEqual((getattr(item, 'state')).name, 'draft')
def test_data_requirement_edit(self): self.login_creator() data_object = base.DataFactory(created_by=self.creator) metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(created_by=self.creator, **metrics) data_requirement = base.DataRequirementFactory( data=data_object, requirement=requirement, created_by=self.creator, ) data = self._DATA data.pop("data") data.pop("requirement") resp = self.client.post( reverse( "requirement:data:edit", kwargs={ "requirement_pk": data_requirement.requirement.pk, "pk": data_requirement.pk, }, ), data, ) self.assertEqual(resp.status_code, 302) data["data"] = data_requirement.data.pk data["requirement"] = data_requirement.requirement.pk self.check_single_object(models.DataRequirement, data)
def test_requirement_edit_not_auth(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) self.check_user_redirect_all_methods( redirect_url=self.redirect_requirement_url_non_auth, url=reverse('requirement:edit', kwargs={'pk': requirement.pk}))
def test_data_requirement_add_not_auth_from_data_requirement(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(created_by=self.creator, **metrics) self.check_user_redirect_all_methods( redirect_url=self.login_url, url=reverse('requirement:data:add', kwargs={'requirement_pk': requirement.pk}))
def test_requirement_delete_auth(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) self.check_authenticated_user_redirect_all_methods( redirect_url=reverse('requirement:list'), url=reverse('requirement:delete', kwargs={'pk': requirement.pk}))
def test_requirement_detail_not_auth(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name="Test requirement", created_by=self.creator, **metrics) resp = self.client.get( reverse("requirement:detail", kwargs={"pk": requirement.pk})) self.assertEqual(resp.status_code, 200)
def test_list_requirement_json(self): metrics = base.RequirementFactory.create_metrics(self.creator) base.RequirementFactory(created_by=self.creator, **metrics) resp = self.client.get(reverse("requirement:json")) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIsNot(data["recordsTotal"], 0) self.assertEqual(data["recordsTotal"], data["recordsFiltered"])
def test_get_edit_requirement(self): self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name="Test requirement", created_by=self.creator, **metrics) resp = self.client.get( reverse("requirement:edit", kwargs={"pk": requirement.pk})) self.assertEqual(resp.status_code, 200)
def test_product_requirement_add_not_auth(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(created_by=self.creator, **metrics) self.check_user_redirect_all_methods( redirect_url=reverse("requirement:list"), url=reverse("requirement:product:add", kwargs={"requirement_pk": requirement.pk}), )
def test_get_delete_requirement(self): self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) resp = self.client.get( reverse('requirement:delete', kwargs={'pk': requirement.pk})) self.assertEqual(resp.status_code, 200)
def test_requirement_delete_teammate(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name="Test requirement", created_by=self.creator, **metrics) self.check_permission_for_teammate( method="GET", url=reverse("requirement:delete", kwargs={"pk": requirement.pk}), )
def test_requirement_delete_auth(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name="Test requirement", created_by=self.creator, **metrics) self.check_authenticated_user_redirect_all_methods( redirect_url=reverse("requirement:list"), url=reverse("requirement:delete", kwargs={"pk": requirement.pk}), )
def test_requirement_edit_not_auth(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name="Test requirement", created_by=self.creator, **metrics) self.check_user_redirect_all_methods( redirect_url=self.redirect_url, url=reverse("requirement:edit", kwargs={"pk": requirement.pk}), )
def test_list_requirements(self): self.erase_logging_file() metrics = base.RequirementFactory.create_metrics(self.creator) base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) resp = self.client.get(reverse('requirement:list')) self.assertTemplateUsed(resp, 'requirement/list.html') self.logging()
def test_delete_product_related_objects(self): product = base.ProductFactory() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(created_by=self.creator, **metrics) base.ProductRequirementFactory( product=product, requirement=requirement, created_by=self.creator ) self.client.post(reverse("product:delete", kwargs={"pk": product.pk})) self.check_objects_are_soft_deleted(models.ProductRequirement)
def test_requirement_delete_teammate(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) self.check_permission_for_teammate(method='GET', url=reverse( 'requirement:delete', kwargs={'pk': requirement.pk}))
def test_list_requirement_json_filter(self): metrics = base.RequirementFactory.create_metrics(self.creator) base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) metrics = base.RequirementFactory.create_metrics(self.creator) base.RequirementFactory(name='Other requirement', created_by=self.creator, **metrics) resp = self.client.get(reverse('requirement:json'), {'search[value]': 'Other'}) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIsNot(data['recordsTotal'], 0) self.assertFalse(data['recordsTotal'] < 2) self.assertIs(data['recordsFiltered'], 1)
def test_list_requirement_json_filter(self): metrics = base.RequirementFactory.create_metrics(self.creator) base.RequirementFactory(name="Test requirement", created_by=self.creator, **metrics) metrics = base.RequirementFactory.create_metrics(self.creator) base.RequirementFactory(name="Other requirement", created_by=self.creator, **metrics) resp = self.client.get(reverse("requirement:json"), {"search[value]": "Other"}) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIsNot(data["recordsTotal"], 0) self.assertFalse(data["recordsTotal"] < 2) self.assertIs(data["recordsFiltered"], 1)
def test_detail_requirement(self): self.erase_logging_file() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) resp = self.client.get( reverse('requirement:detail', kwargs={'pk': requirement.pk})) self.assertEqual(resp.context['requirement'], requirement) self.logging()
def test_post_add_with_clone_duplicate_error(self): metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) cloned_data = self._create_clone_data(requirement) resp = self.client.post( reverse('requirement:add') + '?pk=' + str(requirement.pk), cloned_data) self.assertEqual(resp.context['form'].errors, self.cloned_errors)
def test_delete_requirement(self): self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) resp = self.client.post( reverse('requirement:delete', kwargs={'pk': requirement.pk})) self.assertEqual(resp.status_code, 302) self.check_single_object_deleted(models.Requirement) self.check_objects_are_soft_deleted(models.Requirement, RequirementDoc)
def test_data_requirement_add_required_fields(self): data = {} metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(created_by=self.creator, **metrics) errors_requirement = self.errors.copy() errors_requirement.pop('requirement') resp = self.client.post( reverse('requirement:data:add', kwargs={'requirement_pk': requirement.pk}), data) self.check_required_errors(resp, errors_requirement)