예제 #1
0
    def test_delete_network_members_provider(self):
        self.login_creator()
        member_1 = base.DataProviderFactory(
            id=1,
            name="test member 1",
            is_network=True,
            created_by=self.creator,
            countries=[base.CountryFactory(code="T1").pk],
        )
        member_2 = base.DataProviderFactory(
            id=2,
            name="test member 2",
            is_network=False,
            created_by=self.creator,
            countries=[base.CountryFactory(code="T2").pk],
        )
        network = base.DataProviderFactory(
            id=3,
            is_network=True,
            created_by=self.creator,
        )
        network.members.set([member_1.pk, member_2.pk])
        data = dict()
        data["members"] = [member_1.pk]
        resp = self.client.post(
            reverse("provider:edit_network_members",
                    kwargs={"pk": network.pk}), data)

        network.refresh_from_db()

        self.assertEqual(resp.status_code, 302)
        self.assertEqual(network.members.count(), 1)
        self.assertEqual(
            network.members.get(id=member_1.pk).name, member_1.name)
예제 #2
0
    def setUp(self):
        super().setUp()
        countries = [
            base.CountryFactory(code="TST1"),
            base.CountryFactory(code="TST2")
        ]

        self._DATA = {
            'name': 'test name',
            'description': 'test description',
            'countries': [country.pk for country in countries],
            'is_network': True
        }

        self.details_fields = [
            'acronym', 'website', 'address', 'phone', 'email',
            'contact_person', 'provider_type', 'data_provider'
        ]

        self.details_required_fields = ['provider_type']

        provider_type = base.ProviderTypeFactory()
        self._DETAILS_DATA = {
            'acronym': 'acronym',
            'website': 'http://test.website',
            'address': 'test address',
            'phone': 'test phone',
            'email': '*****@*****.**',
            'contact_person': 'test person',
            'provider_type': provider_type.pk
        }
        self.creator = base.UserFactory(username='******')
        self.client.force_login(self.creator)
예제 #3
0
    def setUp(self):
        super().setUp()
        self.data = base.DataFactory(created_by=self.creator)
        countries = [base.CountryFactory(code="T1"), base.CountryFactory(code="T2")]
        self.provider = base.DataProviderFactory(
            countries=countries, created_by=self.creator
        )

        self._DATA = {"role": 1, "data": self.data.pk, "provider": self.provider.pk}
        user = base.UserFactory(username="******")
        self.client.force_login(user)
예제 #4
0
    def test_list_provider_json_filter(self):
        base.DataProviderFactory(name="Test provider",
                                 created_by=self.creator,
                                 countries=[base.CountryFactory(code='RO')])
        base.DataProviderFactory(name="Other provider",
                                 created_by=self.creator,
                                 countries=[base.CountryFactory(code='UK')])
        resp = self.client.get(reverse('provider: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)
예제 #5
0
    def test_add_non_network_provider(self):
        self.erase_logging_file()
        data = self._DATA
        details_data = self._DETAILS_DATA
        data.update(**details_data)
        network_1 = base.DataProviderFactory(
            name="test network",
            is_network=True,
            created_by=self.creator,
            countries=[base.CountryFactory(code="T1").pk],
        )
        network_2 = base.DataProviderFactory(
            name="test network 2",
            is_network=True,
            created_by=self.creator,
            countries=[base.CountryFactory(code="T2").pk],
        )
        data["networks"] = [network_1.pk, network_2.pk]
        resp = self.client.post(reverse("provider:add_non_network"), data)

        provider = models.DataProvider.objects.last()
        details = provider.details.first()
        network_1.refresh_from_db()
        network_2.refresh_from_db()
        data["is_network"] = False

        self.assertEqual(resp.status_code, 302)
        self.check_object(provider, data)

        self.assertEqual(network_1.members.count(), 1)
        self.assertEqual(network_1.members.first(), provider)

        self.assertEqual(network_2.members.count(), 1)
        self.assertEqual(network_2.members.first(), provider)

        self.assertEqual(provider.networks.count(), 2)
        self.assertIn(network_1, provider.networks.all())
        self.assertIn(network_2, provider.networks.all())

        self.assertEqual(provider.details.count(), 1)
        details_data.pop("provider_type")
        for attr in details_data.keys():
            self.assertEqual(getattr(details, attr), data[attr])
        self.assertEqual(
            getattr(details, "provider_type").pk, data["provider_type"])
        self.logging()
예제 #6
0
    def setUp(self):
        super().setUp()
        self.data = base.DataFactory(created_by=self.creator)
        countries = [
            base.CountryFactory(code='T1'),
            base.CountryFactory(code='T2')
        ]
        self.provider = base.DataProviderFactory(countries=countries,
                                                 created_by=self.creator)

        self._DATA = {
            'role': 1,
            'data': self.data.pk,
            'provider': self.provider.pk
        }
        user = base.UserFactory(username='******')
        self.client.force_login(user)
예제 #7
0
    def test_list_provider_json_filter(self):
        base.DataProviderFactory(
            name="Test provider",
            created_by=self.creator,
            countries=[base.CountryFactory(code="RO")],
        )
        base.DataProviderFactory(
            name="Other provider",
            created_by=self.creator,
            countries=[base.CountryFactory(code="UK")],
        )
        resp = self.client.get(reverse("provider: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)
예제 #8
0
    def setUp(self):
        super().setUp()
        countries = [
            base.CountryFactory(code="TST1"),
            base.CountryFactory(code="TST2")
        ]

        self._DATA = {
            "name": "test name",
            "edmo": 234,
            "description": "test description",
            "countries": [country.pk for country in countries],
            "is_network": True,
        }

        self.details_fields = [
            "acronym",
            "website",
            "address",
            "phone",
            "email",
            "contact_person",
            "provider_type",
            "data_provider",
        ]

        self.details_required_fields = ["provider_type"]

        provider_type = base.ProviderTypeFactory()
        self._DETAILS_DATA = {
            "acronym": "acronym",
            "website": "http://test.website",
            "address": "test address",
            "phone": "test phone",
            "email": "*****@*****.**",
            "contact_person": "test person",
            "provider_type": provider_type.pk,
        }
        self.creator = base.UserFactory(username="******")
        self.client.force_login(self.creator)

        with open(os.devnull, "w") as f:
            call_command("search_index", "--rebuild", "-f", stdout=f)
예제 #9
0
 def test_add_non_network_provider_fail_detail_form_validation(self):
     self.erase_logging_file()
     data = self._DATA
     network_1 = base.DataProviderFactory(
         name='test network',
         is_network=True,
         created_by=self.creator,
         countries=[base.CountryFactory(code="T1").pk])
     network_2 = base.DataProviderFactory(
         name='test network 2',
         is_network=True,
         created_by=self.creator,
         countries=[base.CountryFactory(code="T2").pk])
     data['networks'] = [network_1.pk, network_2.pk]
     resp = self.client.post(reverse('provider:add_non_network'), data)
     detail_errors = {
         field: self.REQUIRED_ERROR
         for field in self.details_required_fields
     }
     self.assertDictEqual(resp.context['details'].errors, detail_errors)
예제 #10
0
    def test_edit_network_members_provider(self):
        self.login_creator()
        member_1 = base.DataProviderFactory(
            id=1,
            name='test member 1',
            is_network=True,
            created_by=self.creator,
            countries=[base.CountryFactory(code="T1").pk])
        member_2 = base.DataProviderFactory(
            id=2,
            name='test member 2',
            is_network=False,
            created_by=self.creator,
            countries=[base.CountryFactory(code="T2").pk])
        member_3 = base.DataProviderFactory(
            id=3,
            name='test member 3',
            is_network=True,
            created_by=self.creator,
            countries=[base.CountryFactory(code="T3").pk])
        network = base.DataProviderFactory(is_network=True,
                                           created_by=self.creator)
        data = dict()
        data['members'] = [member_1.pk, member_2.pk, member_3.pk]
        resp = self.client.post(
            reverse('provider:edit_network_members',
                    kwargs={'pk': network.pk}), data)

        network.refresh_from_db()

        self.assertEqual(resp.status_code, 302)
        self.assertEqual(network.members.count(), 3)
        self.assertEqual(
            network.members.get(id=member_1.pk).name, member_1.name)
        self.assertEqual(
            network.members.get(id=member_2.pk).name, member_2.name)
        self.assertEqual(
            network.members.get(id=member_3.pk).name, member_3.name)
예제 #11
0
 def _create_clone_data(self, data):
     inspire_themes = [
         base.InspireThemeFactory(),
         base.InspireThemeFactory()
     ]
     geographical_coverages = [base.CountryFactory(code="T4")]
     DATA_FOR_CLONE = {
         "name":
         data.name,
         "note":
         "TEST note",
         "dissemination":
         data.dissemination.pk,
         "update_frequency":
         data.update_frequency.pk,
         "area":
         data.area.pk,
         "status":
         data.status.pk,
         "timeliness":
         data.timeliness.pk,
         "data_policy":
         data.data_policy.pk,
         "data_type":
         data.data_type.pk,
         "data_format":
         data.data_format.pk,
         "start_time_coverage":
         datetime.date(day=1, month=1, year=2000),
         "end_time_coverage":
         datetime.date(day=1, month=1, year=2000),
         "quality_control_procedure":
         data.quality_control_procedure.pk,
         "inspire_themes":
         [inspire_theme.pk for inspire_theme in inspire_themes],
         "geographical_coverage": [
             geographical_coverage.code
             for geographical_coverage in geographical_coverages
         ],
         "essential_variables": [],
     }
     return DATA_FOR_CLONE
예제 #12
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)
예제 #13
0
    def setUp(self):
        super().setUp()
        update_frequency = base.UpdateFrequencyFactory()
        area = base.AreaFactory()
        status = base.StatusFactory()
        timeliness = base.TimelinessFactory()
        data_policy = base.DataPolicyFactory()
        data_type = base.DataTypeFactory()
        data_format = base.DataFormatFactory()
        quality_control_procedure = base.QualityControlProcedureFactory()
        inspire_themes = [
            base.InspireThemeFactory(),
            base.InspireThemeFactory()
        ]
        essential_variables = [
            base.EssentialVariableFactory(),
            base.EssentialVariableFactory(),
            base.EssentialVariableFactory(),
        ]
        geographical_coverages = [base.CountryFactory(code="T3")]
        dissemination = base.DisseminationFactory()

        self._DATA = {
            "name":
            "TEST data",
            "note":
            "TEST note",
            "update_frequency":
            update_frequency.pk,
            "area":
            area.pk,
            "status":
            status.pk,
            "timeliness":
            timeliness.pk,
            "data_policy":
            data_policy.pk,
            "data_type":
            data_type.pk,
            "data_format":
            data_format.pk,
            "quality_control_procedure":
            quality_control_procedure.pk,
            "inspire_themes":
            [inspire_theme.pk for inspire_theme in inspire_themes],
            "start_time_coverage":
            datetime.date(day=1, month=1, year=2000),
            "end_time_coverage":
            datetime.date(day=1, month=1, year=2000),
            "essential_variables": [
                essential_variable.pk
                for essential_variable in essential_variables
            ],
            "geographical_coverage": [
                geographical_coverage.code
                for geographical_coverage in geographical_coverages
            ],
            "dissemination":
            dissemination.pk,
        }

        self.creator = base.UserFactory(username="******")
        self.client.force_login(self.creator)

        with open(os.devnull, "w") as f:
            call_command("search_index", "--rebuild", "-f", stdout=f)