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_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_product_group_requirement_add_unique_relation_to_products_without( self): data = copy.deepcopy(self._DATA) data.pop("product") product_group = base.ProductGroupFactory() product1 = base.ProductFactory(group=product_group) product2 = base.ProductFactory(group=product_group) base.ProductRequirementFactory( product=product1, requirement=self.requirement, relevance=self.relevance, created_by=self.creator, ) data["product_group"] = product_group.pk resp = self.client.post( reverse( "requirement:product:add_group", kwargs={"requirement_pk": self._DATA["requirement"]}, ), data, ) self.assertEqual(resp.status_code, 302) products = [ product_requirement.product for product_requirement in models. ProductRequirement.objects.filter(product__group=product_group) ] self.assertEqual(len(products), 2) self.assertIn(product1, products) self.assertIn(product2, products)
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_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_product_requirement_add_unique(self): base.ProductRequirementFactory(product=self.product, requirement=self.requirement, relevance=self.relevance, created_by=self.creator) data = self._DATA resp = self.client.post( reverse('requirement:product:add', kwargs={'requirement_pk': self.requirement.pk}), data) self.assertEqual(resp.status_code, 200) self.assertEqual(resp.context['form'].errors, {'__all__': ['This relation already exists.']})
def test_product_requirement_edit_not_auth(self): 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 ) self.check_user_redirect_all_methods( redirect_url=self.login_url, url=reverse('requirement:product:edit', kwargs={'requirement_pk': requirement.pk, 'pk': product_requirement.pk}))
def test_product_requirement_delete_teammate(self): 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) self.check_permission_for_teammate( method='GET', url=reverse('requirement:product:delete', kwargs={ 'requirement_pk': requirement.pk, 'pk': product_requirement.pk }))
def test_product_requirement_delete_auth(self): 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) self.check_authenticated_user_redirect_all_methods( redirect_url=reverse('requirement:list'), url=reverse('requirement:product:delete', kwargs={ 'requirement_pk': requirement.pk, 'pk': product_requirement.pk }))
def test_get_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) resp = self.client.get( reverse('requirement:product:edit', kwargs={'requirement_pk': product_requirement.requirement.pk, 'pk': product_requirement.pk})) self.assertEqual(resp.status_code, 200)
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, ) 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_product_requirement_delete_not_auth(self): 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) self.check_user_redirect_all_methods( redirect_url=reverse("requirement:list"), url=reverse( "requirement:product:delete", kwargs={ "requirement_pk": requirement.pk, "pk": product_requirement.pk }, ), )
def test_get_product_requirement_delete(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) resp = self.client.get( reverse( "requirement:product:delete", kwargs={ "requirement_pk": product_requirement.requirement.pk, "pk": product_requirement.pk, }, )) self.assertEqual(resp.status_code, 200)
def test_product_requirement_delete(self): self.login_creator() data = {} 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) resp = self.client.post( reverse('requirement:product:delete', kwargs={ 'requirement_pk': product_requirement.requirement.pk, 'pk': product_requirement.pk }), data) self.assertEqual(resp.status_code, 302) self.check_single_object_deleted(models.ProductRequirement)
def test_product_requirement_delete_teammate(self): 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) self.check_permission_for_teammate( method="GET", url=reverse( "requirement:product:delete", kwargs={ "requirement_pk": requirement.pk, "pk": product_requirement.pk }, ), )
def test_delete_requirement_related_objects(self): self.login_creator() metrics = base.RequirementFactory.create_metrics(self.creator) requirement = base.RequirementFactory(name='Test requirement', created_by=self.creator, **metrics) base.ProductRequirementFactory(requirement=requirement, created_by=self.creator) data = base.DataFactory(created_by=self.creator) base.DataRequirementFactory(requirement=requirement, data=data, created_by=self.creator) self.client.post( reverse('requirement:delete', kwargs={'pk': requirement.pk})) self.check_objects_are_soft_deleted(models.ProductRequirement) self.check_objects_are_soft_deleted(models.DataRequirement)
def test_product_requirement_add_unique(self): base.ProductRequirementFactory( product=self.product, requirement=self.requirement, relevance=self.relevance, created_by=self.creator, ) data = self._DATA resp = self.client.post( reverse( "requirement:product:add", kwargs={"requirement_pk": self.requirement.pk}, ), data, ) self.assertEqual(resp.status_code, 200) self.assertEqual(resp.context["form"].errors, {"__all__": ["This relation already exists."]})
def test_list_provider_json_filter_component(self): metrics = base.RequirementFactory.create_metrics(self.creator) romania = base.CountryFactory(code="RO") # Create 4 components first_component = base.ComponentFactory(name="First component") second_component = base.ComponentFactory(name="Second component") common_component = base.ComponentFactory(name="Common component") other_component = base.ComponentFactory(name="Other component") # Create data provider dpr1 = base.DataProviderRelationFactory( created_by=self.creator, data__created_by=self.creator, provider__name="First provider", provider__created_by=self.creator, provider__countries=[romania], ) requirement1 = base.RequirementFactory(created_by=self.creator, **metrics) data_req1 = base.DataRequirementFactory( created_by=self.creator, data=dpr1.data, requirement=requirement1, ) # Associate it with first and common components prod_req1 = base.ProductRequirementFactory( created_by=self.creator, requirement=requirement1, product__component=first_component, ) base.ProductRequirementFactory( created_by=self.creator, requirement=requirement1, product__component=common_component, ) # Create a second data provider dpr2 = base.DataProviderRelationFactory( created_by=self.creator, data__created_by=self.creator, provider__name="Second provider", provider__created_by=self.creator, provider__countries=[romania], ) requirement2 = base.RequirementFactory(created_by=self.creator, **metrics) base.DataRequirementFactory( created_by=self.creator, data=dpr2.data, requirement=requirement2, ) # Associate it with second and common components base.ProductRequirementFactory( created_by=self.creator, requirement=requirement2, product__component=second_component, ) base.ProductRequirementFactory( created_by=self.creator, requirement=requirement2, product__component=common_component, ) # Create a third data provider dpr3 = base.DataProviderRelationFactory( created_by=self.creator, data__created_by=self.creator, provider__name="Third provider", provider__created_by=self.creator, provider__countries=[romania], ) requirement3 = base.RequirementFactory(created_by=self.creator, **metrics) base.DataRequirementFactory( created_by=self.creator, data=dpr3.data, requirement=requirement3, ) # Associate it with other component base.ProductRequirementFactory( created_by=self.creator, requirement=requirement3, product__component=other_component, ) # Filter by component (First component) resp = self.client.get(reverse("provider:json"), {"component": "First component"}) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIs(data["recordsTotal"], 3) self.assertIs(data["recordsFiltered"], 1) # Filter by component (Second component) resp = self.client.get(reverse("provider:json"), {"component": "Second component"}) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIs(data["recordsTotal"], 3) self.assertIs(data["recordsFiltered"], 1) # Filter by component (Common component) resp = self.client.get(reverse("provider:json"), {"component": "Common component"}) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIs(data["recordsTotal"], 3) self.assertIs(data["recordsFiltered"], 2) objs_to_soft_delete = [ dpr1.provider, dpr1, dpr1.data, data_req1, requirement1, prod_req1, prod_req1.product, ] # Soft delete intermediate objects for obj in objs_to_soft_delete: with soft_deleted(obj): resp = self.client.get(reverse("provider:json"), {"component": "First component"}) self.assertEqual(resp.status_code, 200) data = resp.json() # No records are filtered self.assertIs(data["recordsFiltered"], 0)
def test_list_data_json_filter_component(self): metrics = base.RequirementFactory.create_metrics(self.creator) # Create 4 components first_component = base.ComponentFactory(name="First component") second_component = base.ComponentFactory(name="Second component") common_component = base.ComponentFactory(name="Common component") other_component = base.ComponentFactory(name="Other component") # Create first Data and DataRequirement objects data1 = base.DataFactory(created_by=self.creator) requirement1 = base.RequirementFactory(created_by=self.creator, **metrics) data_req1 = base.DataRequirementFactory( created_by=self.creator, data=data1, requirement=requirement1, ) # Associate it with first and common components prod_req1 = base.ProductRequirementFactory( created_by=self.creator, requirement=requirement1, product__component=first_component, ) base.ProductRequirementFactory( created_by=self.creator, requirement=requirement1, product__component=common_component, ) # Create second Data and DataRequirement objects data2 = base.DataFactory(created_by=self.creator) requirement = base.RequirementFactory(created_by=self.creator, **metrics) base.DataRequirementFactory( created_by=self.creator, data=data2, requirement=requirement, ) # Associate it with second and common components base.ProductRequirementFactory( created_by=self.creator, requirement=requirement, product__component=second_component, ) base.ProductRequirementFactory( created_by=self.creator, requirement=requirement, product__component=common_component, ) # Create third Data and DataRequirement objects data3 = base.DataFactory(created_by=self.creator) requirement = base.RequirementFactory(created_by=self.creator, **metrics) base.DataRequirementFactory( created_by=self.creator, data=data3, requirement=requirement, ) # Associate it with other component base.ProductRequirementFactory( created_by=self.creator, requirement=requirement, product__component=other_component, ) # Filter by component (First component) resp = self.client.get(reverse("data:json"), {"component": "First component"}) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIs(data["recordsTotal"], 3) self.assertIs(data["recordsFiltered"], 1) # Filter by component (Second component) resp = self.client.get(reverse("data:json"), {"component": "Second component"}) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIs(data["recordsTotal"], 3) self.assertIs(data["recordsFiltered"], 1) # Filter by component (Common component) resp = self.client.get(reverse("data:json"), {"component": "Common component"}) self.assertEqual(resp.status_code, 200) data = resp.json() self.assertIs(data["recordsTotal"], 3) self.assertIs(data["recordsFiltered"], 2) objs_to_soft_delete = [ data1, data_req1, requirement1, prod_req1, prod_req1.product, ] # Soft delete intermediate objects for obj in objs_to_soft_delete: with soft_deleted(obj): resp = self.client.get(reverse("provider:json"), {"component": "First component"}) self.assertEqual(resp.status_code, 200) data = resp.json() # No records are filtered self.assertIs(data["recordsFiltered"], 0)