Ejemplo 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)
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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")
Ejemplo n.º 5
0
    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()
Ejemplo n.º 6
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.']})
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
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)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 11
0
 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}))
Ejemplo n.º 13
0
 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}))
Ejemplo n.º 14
0
 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)
Ejemplo n.º 15
0
    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"])
Ejemplo n.º 16
0
 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)
Ejemplo n.º 17
0
 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}),
     )
Ejemplo n.º 18
0
 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)
Ejemplo n.º 19
0
 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}),
     )
Ejemplo n.º 20
0
 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}),
     )
Ejemplo n.º 21
0
 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}),
     )
Ejemplo n.º 22
0
 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()
Ejemplo n.º 23
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)
Ejemplo n.º 24
0
 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}))
Ejemplo n.º 25
0
    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)
Ejemplo n.º 26
0
    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)
Ejemplo n.º 27
0
 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()
Ejemplo n.º 28
0
 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)
Ejemplo n.º 29
0
 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)