def test_bulk_api_query(self): # FIXME: test wait sf = Mock() sf.bulk_url = "https://salesforce.com" conn = Connection(sf) conn._bulk = Mock() retval = [{"Id": "001000000000001"}, {"Id": "001000000000002"}] conn._bulk.is_batch_done = Mock(side_effect=[False, True]) conn._bulk.create_query_job = Mock(return_value="075000000000000AAA") conn._bulk.get_all_results_for_query_batch = Mock( return_value=[IteratorBytesIO([json.dumps(retval).encode("utf-8")])] ) results = list(conn.bulk_api_query("Account", "SELECT Id FROM Account", [], 5)) conn._bulk.query.assert_called_once_with( "075000000000000AAA", "SELECT Id FROM Account" ) self.assertEqual( conn._bulk.is_batch_done.call_args_list, [call(conn._bulk.query.return_value), call(conn._bulk.query.return_value)], ) conn._bulk.get_all_results_for_query_batch.assert_called_once_with( conn._bulk.query.return_value ) self.assertEqual(retval, results)
def test_bulk_query_converts_datetimes(self): sf = Mock() sf.bulk_url = "https://salesforce.com" conn = Connection(sf) conn._bulk = Mock() retval = [ {"Id": "001000000000001", "CreatedDate": 1546659665000}, {"Id": "001000000000002", "CreatedDate": None}, ] conn._bulk.is_batch_done = Mock(side_effect=[False, True]) conn._bulk.create_query_job = Mock(return_value="075000000000000AAA") conn._bulk.get_all_results_for_query_batch = Mock( return_value=[IteratorBytesIO([json.dumps(retval).encode("utf-8")])] ) results = list( conn.bulk_api_query( "Account", "SELECT Id, CreatedDate, FROM Account", ["CreatedDate"], 5 ) ) self.assertEqual( results[0], {"Id": "001000000000001", "CreatedDate": "2019-01-05T03:41:05.000+0000"}, ) self.assertEqual(results[1], {"Id": "001000000000002", "CreatedDate": None})
def test_bulk_api_update(self): sf = Mock() sf.bulk_url = "https://salesforce.com" conn = Connection(sf, "48.0") conn._bulk = Mock() conn._bulk_api_insert_update = Mock(return_value=[]) self.assertEqual( [], list(conn.bulk_api_update("Account", [], 120, 5, 1, "Parallel")) ) conn._bulk.create_update_job.assert_called_once_with( "Account", contentType="JSON", concurrency="Parallel" ) conn._bulk_api_insert_update.assert_called_once() assert ( conn._bulk_api_insert_update.call_args[0][0] == conn._bulk.create_update_job.return_value ) assert conn._bulk_api_insert_update.call_args[0][1] == "Account" assert conn._bulk_api_insert_update.call_args[0][3] == 120 assert conn._bulk_api_insert_update.call_args[0][4] == 5 assert conn._bulk_api_insert_update.call_args[0][5] == 1
def test_bulk_api_insert_update(self): sf = Mock() sf.bulk_url = "https://salesforce.com" conn = Connection(sf) conn._bulk = Mock() job = Mock() retval = [ [{"Id": "001000000000001"}, {"Id": "001000000000002"}], [{"Id": "001000000000003"}], ] conn._bulk.is_batch_done = Mock(side_effect=[False, True]) conn._bulk.get_batch_results = Mock(side_effect=retval) input_data = [{"Name": "Test"}, {"Name": "Test2"}, {"Name": "Test3"}] results = list( conn._bulk_api_insert_update(job, "Account", input_data, 120, 5, 2) ) self.assertEqual(2, conn._bulk.post_batch.call_count) self.assertEqual( conn._bulk.wait_for_batch.call_args_list, [ call( job, conn._bulk.post_batch.return_value, timeout=120, sleep_interval=5, ), call( job, conn._bulk.post_batch.return_value, timeout=120, sleep_interval=5, ), ], ) conn._bulk.close_job.assert_called_once_with(job) self.assertEqual( conn._bulk.get_batch_results.call_args_list, [ call(conn._bulk.post_batch.return_value, job), call(conn._bulk.post_batch.return_value, job), ], ) self.assertEqual( results, [ {"Id": "001000000000001"}, {"Id": "001000000000002"}, {"Id": "001000000000003"}, ], )