def get_new_sources_from_iati_api(): from iati_synchroniser.dataset_syncer import DatasetSyncer ds = DatasetSyncer() ds.synchronize_with_iati_api(1)
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 handle(self, *args, **options): ds = DatasetSyncer() ds.synchronize_with_iati_api(1)
class DatasetSyncerTestCase(TestCase): """ Test DatasetSyncer functionality """ 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__))) def test_get_val_in_list_of_dicts(self): """ test if returns correct key's data """ input_list = [ { "key": "filetype", "value": "organisation" }, { "key": "version", "value": "2.02" }, ] keyval = self.datasetSyncer.get_val_in_list_of_dicts( "filetype", input_list) self.assertEqual(keyval, input_list[0]) @unittest.skip("Not implemented") def test_synchronize_with_iati_api(self): """ """ with open(self.BASE_DIR + '/fixtures/test_publisher.json') as fixture: publisher = json.load(fixture).get('result')[0] with open(self.BASE_DIR + '/fixtures/test_dataset.json') as fixture: dataset = json.load(fixture)['result']['results'][0] self.datasetSyncer.get_data = MagicMock(side_effect=[ { 'result': [publisher] }, # first occurance, return 1 publisher { 'result': [] }, # 2nd, return empty publisher db return { 'result': { 'results': [dataset] } }, # 3rd, return 1 dataset { 'result': { 'results': [] } } # 4th, return empty dataset db return ]) self.datasetSyncer.synchronize_with_iati_api() self.assertEqual(Publisher.objects.count(), 1) self.assertEqual(Dataset.objects.count(), 1) @unittest.skip("Not implemented") def test_update_or_create_publisher(self): """ check if dataset is saved as expected """ with open(self.BASE_DIR + '/fixtures/test_publisher.json') as fixture: data = json.load(fixture).get('result')[0] self.datasetSyncer.update_or_create_publisher(data) publisher = Publisher.objects.last() self.assertEqual("NP-SWC-27693", publisher.publisher_iati_id) self.assertEqual("Aasaman Nepal", publisher.display_name) self.assertEqual("aasaman", publisher.name) @unittest.skip("Not implemented") def test_update_or_create_dataset(self): """ """ publisher = Publisher( iati_id="85d72513-66b6-4642-a526-214b1081fff1", publisher_iati_id="", display_name="jica", name="Japan International Cooperation Agency (JICA)") publisher.save() with open(self.BASE_DIR + '/fixtures/test_dataset.json') as fixture: data = json.load(fixture)['result']['results'][0] self.datasetSyncer.update_or_create_dataset(data) dataset = Dataset.objects.all()[0] self.assertEqual("43aa0616-58a4-4d16-b0a9-1181e3871827", dataset.iati_id) self.assertEqual("cic-sl", dataset.name) self.assertEqual("088States Ex-Yugoslavia unspecified2013", dataset.title) self.assertEqual(publisher, dataset.publisher) self.assertEqual("http://aidstream.org/files/xml/cic-sl.xml", dataset.source_url) self.assertEqual(1, dataset.filetype)
def sync_dataset_with_iati_api(self): syncer = DatasetSyncer() syncer.synchronize_with_iati_api(self.type)
class DatasetSyncerTestCase(TestCase): """ Test DatasetSyncer functionality """ def setUp(self): management.call_command('flush', interactive=False, verbosity=0) self.datasetSyncer = DatasetSyncer() def test_get_val_in_list_of_dicts(self): """ test if returns correct key's data """ input_list = [ { "key": "filetype", "value": "organisation" }, { "key": "version", "value": "2.02" }, ] keyval = self.datasetSyncer.get_val_in_list_of_dicts( "filetype", input_list) self.assertEqual(keyval, input_list[0]) # @unittest.skip("Not implemented") def test_synchronize_with_iati_api(self): """ """ with open('iati_synchroniser/fixtures/test_publisher.json') as fixture: publisher = json.load(fixture).get('result')[0] with open('iati_synchroniser/fixtures/test_dataset.json') as fixture: dataset = json.load(fixture)['result']['results'][0] self.datasetSyncer.get_data = MagicMock(side_effect=[ { 'result': [publisher] }, # first occurance, return 1 publisher { 'result': [] }, # 2nd, return empty publisher db return { 'result': { 'results': [dataset] } }, # 3rd, return 1 dataset { 'result': { 'results': [] } } # 4th, return empty dataset db return ]) self.datasetSyncer.synchronize_with_iati_api() self.assertEqual(Publisher.objects.count(), 1) self.assertEqual(Dataset.objects.count(), 1) def test_update_or_create_publisher(self): """ check if dataset is saved as expected """ with open('iati_synchroniser/fixtures/test_publisher.json') as fixture: data = json.load(fixture).get('result')[0] self.datasetSyncer.update_or_create_publisher(data) publisher = Publisher.objects.all()[0] self.assertEqual("NP-SWC-27693", publisher.publisher_iati_id) self.assertEqual("Aasaman Nepal", publisher.display_name) self.assertEqual("aasaman", publisher.name) def test_update_or_create_dataset(self): """ """ publisher = Publisher( id="8797b894-9858-492e-a109-dc45b75ce27b", publisher_iati_id="", display_name="jica", name="Japan International Cooperation Agency (JICA)") publisher.save() with open('iati_synchroniser/fixtures/test_dataset.json') as fixture: data = json.load(fixture)['result']['results'][0] self.datasetSyncer.update_or_create_dataset(data) dataset = Dataset.objects.all()[0] print dataset.publisher self.assertEqual("43aa0616-58a4-4d16-b0a9-1181e3871827", dataset.id) self.assertEqual("cic-sl", dataset.name) self.assertEqual("088States Ex-Yugoslavia unspecified2013", dataset.title) self.assertEqual(publisher, dataset.publisher) self.assertEqual("http://aidstream.org/files/xml/cic-sl.xml", dataset.source_url) self.assertEqual(1, dataset.filetype)
class DatasetSyncerTestCase(TestCase): """ Test DatasetSyncer functionality """ 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__)) ) def test_get_val_in_list_of_dicts(self): """ test if returns correct key's data """ input_list = [ {"key": "filetype", "value": "organisation"}, {"key": "version", "value": "2.02"}, ] keyval = self.datasetSyncer.get_val_in_list_of_dicts( "filetype", input_list) self.assertEqual(keyval, input_list[0]) def test_synchronize_with_iati_api(self): """ """ with open(self.BASE_DIR + '/fixtures/test_publisher.json') as fixture: publisher = json.load(fixture).get('result')[0] with open(self.BASE_DIR + '/fixtures/test_dataset.json') as fixture: dataset = json.load(fixture)['result']['results'][0] self.datasetSyncer.get_data = MagicMock(side_effect=[ {'result': [publisher]}, # first occurance, return 1 publisher {'result': []}, # 2nd, return empty publisher db return {'result': {'results': [dataset]}}, # 3rd, return 1 dataset {'result': {'results': []}} # 4th, return empty dataset db return ]) self.datasetSyncer.synchronize_with_iati_api() self.assertEqual(Publisher.objects.count(), 1) self.assertEqual(Dataset.objects.count(), 1) def test_update_or_create_publisher(self): """ check if dataset is saved as expected """ with open(self.BASE_DIR + '/fixtures/test_publisher.json') as fixture: data = json.load(fixture).get('result')[0] self.datasetSyncer.update_or_create_publisher(data) publisher = Publisher.objects.last() self.assertEqual("NP-SWC-27693", publisher.publisher_iati_id) self.assertEqual("Aasaman Nepal", publisher.display_name) self.assertEqual("aasaman", publisher.name) def test_update_or_create_dataset(self): """ """ publisher = Publisher( iati_id="85d72513-66b6-4642-a526-214b1081fff1", publisher_iati_id="", display_name="jica", name="Japan International Cooperation Agency (JICA)") publisher.save() with open(self.BASE_DIR + '/fixtures/test_dataset.json') as fixture: data = json.load(fixture)['result']['results'][0] self.datasetSyncer.update_or_create_dataset(data) dataset = Dataset.objects.all()[0] self.assertEqual( "43aa0616-58a4-4d16-b0a9-1181e3871827", dataset.iati_id) self.assertEqual("cic-sl", dataset.name) self.assertEqual( "088States Ex-Yugoslavia unspecified2013", dataset.title) self.assertEqual(publisher, dataset.publisher) self.assertEqual( "http://aidstream.org/files/xml/cic-sl.xml", dataset.source_url) self.assertEqual(1, dataset.filetype)
def get_new_organisations_from_iati_api(): from iati_synchroniser.dataset_syncer import DatasetSyncer ds = DatasetSyncer() ds.synchronize_with_iati_api(2)