class TestBulkImport(unittest.TestCase): def setUp(self): self.van = VAN(os.environ['VAN_API_KEY'], db="MyVoters", raise_for_status=False) @requests_mock.Mocker() def test_get_bulk_import_resources(self, m): json = [ 'Contacts', 'Contributions', 'ActivistCodes', 'ContactsActivistCodes' ] m.get(self.van.connection.uri + 'bulkImportJobs/resources', json=json) self.assertEqual(self.van.get_bulk_import_resources(), json) @requests_mock.Mocker() def test_get_bulk_import_job(self, m): m.get(self.van.connection.uri + 'bulkImportJobs/53407', json=bulk_import_job) self.assertEqual(self.van.get_bulk_import_job(53407), bulk_import_job) @requests_mock.Mocker() def test_get_bulk_import_job_results(self, m): results_tbl = Table([[ 'BulkUploadDataID', 'ULFileID', 'PrimaryKey', 'PrimaryKeyType', 'MailingAddress_3581' ], ['1', '1983', '101596008', 'VanID', 'Processed']]) bulk_import_job = { 'id': 92, 'status': 'Completed', 'resourceType': 'Contacts', 'webhookUrl': None, 'resultFileSizeLimitKb': 5000, 'errors': [], 'resultFiles': [{ 'url': Table.to_csv(results_tbl), 'dateExpired': '2020-09-04T22:07:04.0770295-04:00' }] } m.get(self.van.connection.uri + 'bulkImportJobs/53407', json=bulk_import_job) assert_matching_tables(self.van.get_bulk_import_job_results(53407), results_tbl) @requests_mock.Mocker() def test_get_bulk_import_mapping_types(self, m): m.get(self.van.connection.uri + 'bulkImportMappingTypes', json=mapping_type) assert_matching_tables(self.van.get_bulk_import_mapping_types(), Table(mapping_type)) @requests_mock.Mocker() def test_get_bulk_import_mapping_type(self, m): m.get(self.van.connection.uri + 'bulkImportMappingTypes/ActivistCode', json=mapping_type) self.assertEqual(self.van.get_bulk_import_mapping_type('ActivistCode'), mapping_type) @requests_mock.Mocker() def get_bulk_import_mapping_type_fields(self, m): json = [{ 'name': 'Unsubscribed', 'id': '0', 'parents': None }, { 'name': 'Not Subscribed', 'id': '1', 'parents': None }, { 'name': 'Subscribed', 'id': '2', 'parents': None }] m.get(self.van.connection.uri + 'bulkImportMappingTypes/Email/EmailSubscriptionStatusId/values') r = self.van.get_bulk_import_mapping_type_fields( 'Email', 'EmailSubscriptionStatusId') self.assertEqual(json, r) @requests_mock.Mocker() def test_post_bulk_import(self, m): # Mock Cloud Storage cloud_storage.post_file = mock.MagicMock() cloud_storage.post_file.return_value = 'https://s3.com/my_file.zip' tbl = Table([['Vanid', 'ActivistCodeID'], [1234, 345345]]) m.post(self.van.connection.uri + 'bulkImportJobs', json={'jobId': 54679}) r = self.van.post_bulk_import(tbl, 'S3', 'ContactsActivistCodes', [{ "name": "ActivistCode" }], 'Activist Code Upload', bucket='my-bucket') self.assertEqual(r, 54679) @requests_mock.Mocker() def test_bulk_apply_activist_codes(self, m): # Mock Cloud Storage cloud_storage.post_file = mock.MagicMock() cloud_storage.post_file.return_value = 'https://s3.com/my_file.zip' tbl = Table([['Vanid', 'ActivistCodeID'], [1234, 345345]]) m.post(self.van.connection.uri + 'bulkImportJobs', json={'jobId': 54679}) job_id = self.van.bulk_apply_activist_codes(tbl, url_type="S3", bucket='my-bucket') self.assertEqual(job_id, 54679) @requests_mock.Mocker() def test_bulk_upsert_contacts(self, m): # Mock Cloud Storage cloud_storage.post_file = mock.MagicMock() cloud_storage.post_file.return_value = 'https://s3.com/my_file.zip' tbl = Table([['Vanid', 'email'], [1234, '*****@*****.**']]) m.post(self.van.connection.uri + 'bulkImportJobs', json={'jobId': 54679}) job_id = self.van.bulk_upsert_contacts(tbl, url_type="S3", bucket='my-bucket') self.assertEqual(job_id, 54679)
class TestBulkImport(unittest.TestCase): def setUp(self): self.van = VAN(os.environ['VAN_API_KEY'], db="MyVoters", raise_for_status=False) def tearDown(self): pass @requests_mock.Mocker() def test_get_bulk_import_resources(self, m): json = [ 'Contacts', 'Contributions', 'ActivistCodes', 'ContactsActivistCodes' ] m.get(self.van.connection.uri + 'bulkImportJobs/resources', json=json) self.assertEqual(self.van.get_bulk_import_resources(), json) @requests_mock.Mocker() def test_get_bulk_import_job(self, m): json = { 'id': 59, 'status': 'InProgress', 'resourceType': 'ContactsActivistCodes', 'webhookUrl': None, 'resultFileSizeLimitKb': 5000, 'errors': [], 'resultFiles': [] } m.get(self.van.connection.uri + 'bulkImportJobs/53407', json=json) self.assertEqual(self.van.get_bulk_import_job(53407), json) @requests_mock.Mocker() def test_get_bulk_import_mapping_types(self, m): m.get(self.van.connection.uri + 'bulkImportMappingTypes', json=mapping_type) assert_matching_tables(self.van.get_bulk_import_mapping_types(), Table(mapping_type)) @requests_mock.Mocker() def test_get_bulk_import_mapping_type(self, m): m.get(self.van.connection.uri + 'bulkImportMappingTypes/ActivistCode', json=mapping_type) self.assertEqual(self.van.get_bulk_import_mapping_type('ActivistCode'), mapping_type) @requests_mock.Mocker() def test_post_bulk_import(self, m): # Mock Cloud Storage cloud_storage.post_file = mock.MagicMock() cloud_storage.post_file.return_value = 'https://s3.com/my_file.zip' tbl = Table([['Vanid', 'ActivistCodeID'], [1234, 345345]]) m.post(self.van.connection.uri + 'bulkImportJobs', json={'jobId': 54679}) r = self.van.post_bulk_import(tbl, 'S3', 'ContactsActivistCodes', [{ "name": "ActivistCode" }], 'Activist Code Upload', bucket='my-bucket') self.assertEqual(r, 54679) @requests_mock.Mocker() def test_bulk_apply_activist_codes(self, m): # Mock Cloud Storage cloud_storage.post_file = mock.MagicMock() cloud_storage.post_file.return_value = 'https://s3.com/my_file.zip' tbl = Table([['Vanid', 'ActivistCodeID'], [1234, 345345]]) m.post(self.van.connection.uri + 'bulkImportJobs', json={'jobId': 54679}) job_id = self.van.bulk_apply_activist_codes(tbl, url_type="S3", bucket='my-bucket') self.assertEqual(job_id, 54679)