示例#1
0
    def test_remove_publisher_duplicates(self):

        publisher = synchroniser_factory.PublisherFactory.create(org_id='NL-1')
        publisher_duplicate = synchroniser_factory.PublisherFactory.create(
            org_id='NL-1')
        synchroniser_factory.DatasetFactory.create(
            ref='first_set',
            source_url='http://www.nourl.com/test1.xml',
            publisher=publisher)
        synchroniser_factory.DatasetFactory.create(
            ref='second_set',
            source_url='http://www.nourl.com/test2.xml',
            publisher=publisher_duplicate)

        syncer = DatasetSyncer()

        syncer.remove_publisher_duplicates('NL-1')

        # publisher duplicate should be removed, all datasets should be under the first publisher

        self.assertEqual(publisher,
                         Publisher.objects.filter(org_id='NL-1')[0],
                         "first publisher should still be in the database")

        self.assertEqual(
            1, Publisher.objects.count(),
            "publisher duplicate should be removed from the database")

        self.assertEqual(2,
                         publisher.iatixmlsource_set.all().count(),
                         "Both XML sources should still be in the database")

        self.assertEqual(2, IatiXmlSource.objects.count(),
                         "Both XML sources should still be in the database")
示例#2
0
 def setUp(self):
     management.call_command('flush', interactive=False, verbosity=0)
     self.datasetSyncer = DatasetSyncer()
     iati_factory.LanguageFactory.create(code='en', name='English')
     iati_factory.VersionFactory.create(code='2.02', name='2.02')
     iati_factory.OrganisationTypeFactory.create(code='22',
                                                 name='Multilateral')
示例#3
0
    def setUp(self):
        # XXX: previously, django's 'flush' management command was called to
        # flush the database, but it breaks tests ('no table blah blah exists')
        # and etc., so let's just manually remove objects which were created
        # during previous fixtures.
        # TODO: get rid of fixtures and use factory-boy everywhere.
        Publisher.objects.all().delete()

        self.datasetSyncer = DatasetSyncer()
        iati_factory.LanguageFactory.create(code='en', name='English')
        iati_factory.VersionFactory.create(code='2.02', name='2.02')
        iati_factory.OrganisationTypeFactory.create(code='22',
                                                    name='Multilateral')

        self.BASE_DIR = os.path.dirname(
            os.path.dirname(os.path.realpath(__file__)))
示例#4
0
    def test_if_publisher_assigned_to_source(self):
        """
        Test if correct publisher assigned to IatiXmlSource
        """
        syncer = DatasetSyncer()

        with open('iati_synchroniser/fixtures/test_activity.json') as fixture:
            data = json.load(fixture).get('results', [
                {},
            ])[0]
            syncer.parse_json_line(data)

        source = IatiXmlSource.objects.get(ref="cic-sl")
        publisher = Publisher.objects.get(org_id="GB-CHC-1020488")
        self.assertEqual(publisher, source.publisher,
                         "IatiXmlSource should have correct publisher")
示例#5
0
    def test_parsed_published_data_integrity(self):
        """
        Test if publisher data parsed correctly
        """
        syncer = DatasetSyncer()

        with open('iati_synchroniser/fixtures/test_activity.json') as fixture:
            data = json.load(fixture).get('results', [
                {},
            ])[0]
            syncer.parse_json_line(data)

        publisher = Publisher.objects.all()[0]
        self.assertEqual("GB-CHC-1020488", publisher.org_id)
        self.assertEqual("cic", publisher.org_abbreviate)
        self.assertEqual("Children in Crisis", publisher.org_name)
示例#6
0
    def test_line_parser(self):
        """
        Test if activity source data parsed
        """
        syncer = DatasetSyncer()

        publishers_count = Publisher.objects.count()
        sources_count = IatiXmlSource.objects.count()

        with open('iati_synchroniser/fixtures/test_activity.json') as fixture:
            data = json.load(fixture).get('results', [
                {},
            ])[0]
            syncer.parse_json_line(data)

        self.assertNotEqual(publishers_count, Publisher.objects.count(),
                            "New publisher should be added into database")

        self.assertNotEqual(sources_count, IatiXmlSource.objects.count(),
                            "New IatiXmlSource should be added into database")
示例#7
0
    def test_parsed_xml_source_data_integrity(self):
        """
        Test if activity source data parsed correctly
        """
        syncer = DatasetSyncer()

        with open('iati_synchroniser/fixtures/test_activity.json') as fixture:
            data = json.load(fixture).get('results', [
                {},
            ])[0]
            syncer.parse_json_line(data)

        source = IatiXmlSource.objects.all()[0]

        self.assertEqual("cic-sl", source.ref)
        self.assertEqual("http://aidstream.org/files/xml/cic-sl.xml",
                         source.source_url)
        self.assertEqual("Children in Crisis  Activity File for Sierra leone",
                         source.title)

        self.assertFalse(source.is_parsed,
                         "New IatiXmlSource should not be marked as parsed")
示例#8
0
def get_new_sources_from_iati_api():
    from iati_synchroniser.dataset_syncer import DatasetSyncer
    ds = DatasetSyncer()
    ds.synchronize_with_iati_api(1)
示例#9
0
    def handle(self, *args, **options):

        ds = DatasetSyncer()
        ds.synchronize_with_iati_api()
    def handle(self, *args, **options):

        ds = DatasetSyncer()
        ds.synchronize_with_iati_api(is_download_datasets=True)
 def setUp(self):
     management.call_command('flush', interactive=False, verbosity=0)
     self.datasetSyncer = DatasetSyncer()