예제 #1
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)
예제 #2
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)
예제 #3
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")
예제 #4
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")
 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)
예제 #6
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_add_unique(self):
     base.DataRequirementFactory(data=self.data,
                                 requirement=self.requirement,
                                 created_by=self.creator)
     data = self._DATA
     resp = self.client.post(
         reverse('requirement:data: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_data_requirement_add_unique(self):
     base.DataRequirementFactory(data=self.data,
                                 requirement=self.requirement,
                                 created_by=self.creator)
     data = self._DATA
     resp = self.client.post(
         reverse("requirement:data: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_delete_data_related_objects(self):
     self.login_creator()
     data = base.DataFactory(created_by=self.creator)
     metrics = base.RequirementFactory.create_metrics(self.creator)
     requirement = base.RequirementFactory(created_by=self.creator,
                                           **metrics)
     base.DataRequirementFactory(data=data,
                                 requirement=requirement,
                                 created_by=self.creator)
     data_provider = base.DataProviderFactory(created_by=self.creator)
     base.DataProviderRelationFactory(data=data,
                                      provider=data_provider,
                                      created_by=self.creator)
     self.client.post(reverse('data:delete', kwargs={'pk': data.pk}))
     self.check_objects_are_soft_deleted(models.DataRequirement)
     self.check_objects_are_soft_deleted(models.DataProviderRelation)
예제 #10
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)
 def test_data_requirement_delete_auth_from_data_requirement(self):
     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,
     )
     self.check_authenticated_user_redirect_all_methods(
         redirect_url=reverse('requirement:list'),
         url=reverse('requirement:data:delete',
                     kwargs={
                         'requirement_pk': data_requirement.pk,
                         'pk': data_requirement.pk
                     }))
 def test_get_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,
     )
     resp = self.client.get(
         reverse('requirement:data:edit',
                 kwargs={
                     'requirement_pk': data_requirement.requirement.pk,
                     'pk': data_requirement.pk
                 }))
     self.assertEqual(resp.status_code, 200)
 def test_data_requirement_edit_teammate_from_data_requirement(self):
     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,
     )
     self.check_permission_for_teammate(method='GET',
                                        url=reverse('requirement:data:edit',
                                                    kwargs={
                                                        'requirement_pk':
                                                        data_requirement.pk,
                                                        'pk':
                                                        data_requirement.pk
                                                    }))
 def test_data_requirement_delete(self):
     self.login_creator()
     data = {}
     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,
     )
     resp = self.client.post(
         reverse('requirement:data:delete',
                 kwargs={
                     'requirement_pk': data_requirement.requirement.pk,
                     'pk': data_requirement.pk
                 }), data)
     self.assertEqual(resp.status_code, 302)
     self.check_single_object_deleted(models.DataRequirement)
 def test_data_requirement_delete_teammate_from_data_requirement(self):
     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,
     )
     self.check_permission_for_teammate(
         method="GET",
         url=reverse(
             "requirement:data:delete",
             kwargs={
                 "requirement_pk": data_requirement.pk,
                 "pk": data_requirement.pk,
             },
         ),
     )
 def test_data_requirement_delete_not_auth_from_data_requirement(self):
     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,
     )
     self.check_user_redirect_all_methods(
         redirect_url=reverse("requirement:list"),
         url=reverse(
             "requirement:data:delete",
             kwargs={
                 "requirement_pk": data_requirement.pk,
                 "pk": data_requirement.pk,
             },
         ),
     )
 def test_get_data_requirement_delete(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,
     )
     resp = self.client.get(
         reverse(
             "requirement:data:delete",
             kwargs={
                 "requirement_pk": data_requirement.requirement.pk,
                 "pk": data_requirement.pk,
             },
         ))
     self.assertEqual(resp.status_code, 200)
 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)
예제 #19
0
    def test_transition(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)
        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")

        transitions = [
            {
                "source": "draft",
                "target": "ready",
                "user": self.creator
            },
            {
                "source": "ready",
                "target": "draft",
                "user": self.creator
            },
            {
                "source": "draft",
                "target": "ready",
                "user": self.creator
            },
            {
                "source": "ready",
                "target": "changes",
                "user": self.other_user
            },
            {
                "source": "changes",
                "target": "draft",
                "user": self.creator
            },
            {
                "source": "draft",
                "target": "ready",
                "user": self.creator
            },
            {
                "source": "ready",
                "target": "valid",
                "user": self.other_user
            },
            {
                "source": "ready",
                "target": "valid",
                "user": self.creator
            },
        ]

        for transition in transitions:
            for item in items:
                self.assertEqual((getattr(item, "state")).name,
                                 transition["source"])
            self.client.force_login(transition["user"])
            response = self.client.post(
                reverse(
                    "requirement:transition",
                    kwargs={
                        "source": transition["source"],
                        "target": transition["target"],
                        "pk": requirement.pk,
                    },
                ))
            self.assertRedirects(
                response,
                reverse("requirement:detail", kwargs={"pk": requirement.pk}))
            for item in items:
                getattr(item, "refresh_from_db")()
                self.assertEqual((getattr(item, "state")).name,
                                 transition["target"])
            if transition["target"] == "valid":
                for item in items:
                    item.state = transition["source"]
                    item.save()
        self.logging(check_username=False)
예제 #20
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)
예제 #21
0
    def test_transition(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)
        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')

        transitions = [
            {
                'source': 'draft',
                'target': 'ready',
                'user': self.creator
            },
            {
                'source': 'ready',
                'target': 'draft',
                'user': self.creator
            },
            {
                'source': 'draft',
                'target': 'ready',
                'user': self.creator
            },
            {
                'source': 'ready',
                'target': 'changes',
                'user': self.other_user
            },
            {
                'source': 'changes',
                'target': 'draft',
                'user': self.creator
            },
            {
                'source': 'draft',
                'target': 'ready',
                'user': self.creator
            },
            {
                'source': 'ready',
                'target': 'valid',
                'user': self.other_user
            },
            {
                'source': 'ready',
                'target': 'valid',
                'user': self.creator
            },
        ]

        for transition in transitions:
            for item in items:
                self.assertEqual((getattr(item, 'state')).name,
                                 transition['source'])
            self.client.force_login(transition['user'])
            response = self.client.post(
                reverse('requirement:transition',
                        kwargs={
                            'source': transition['source'],
                            'target': transition['target'],
                            'pk': requirement.pk
                        }))
            self.assertRedirects(
                response,
                reverse('requirement:detail', kwargs={'pk': requirement.pk}))
            for item in items:
                getattr(item, 'refresh_from_db')()
                self.assertEqual((getattr(item, 'state')).name,
                                 transition['target'])
            if transition['target'] == 'valid':
                for item in items:
                    item.state = transition['source']
                    item.save()
        self.logging(check_username=False)
예제 #22
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)