Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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.']})
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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.']})
Exemplo n.º 7
0
 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}))
Exemplo n.º 8
0
 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
                     }))
Exemplo n.º 9
0
 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
                     }))
Exemplo n.º 10
0
 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)
Exemplo n.º 11
0
    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."]})
Exemplo n.º 12
0
 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
             },
         ),
     )
Exemplo n.º 13
0
 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)
Exemplo n.º 14
0
 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)
Exemplo n.º 15
0
 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
             },
         ),
     )
Exemplo n.º 16
0
 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)
Exemplo n.º 17
0
 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."]})
Exemplo n.º 18
0
    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)
Exemplo n.º 19
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)