def test_contextmanager(self): context = mock.Mock() context.bulk.create_job.return_value = "JOB" step = BulkApiDmlOperation( sobject="Contact", operation=DataOperationType.INSERT, api_options={}, context=context, fields=["LastName"], ) step._wait_for_job = mock.Mock() step._wait_for_job.return_value = DataOperationJobResult( DataOperationStatus.SUCCESS, [], 0, 0) step.job_id = "JOB" with step: pass context.bulk.create_job.assert_called_once_with("Contact", "insert", contentType="CSV", concurrency="Parallel") assert step.job_id == "JOB" context.bulk.close_job.assert_called_once_with("JOB") step._wait_for_job.assert_called_once_with("JOB") assert step.job_result.status is DataOperationStatus.SUCCESS
def test_end_to_end(self, download_mock): context = mock.Mock() context.bulk.endpoint = "https://test" context.bulk.create_job.return_value = "JOB" context.bulk.post_batch.side_effect = ["BATCH1", "BATCH2"] download_mock.return_value = io.StringIO("""id,success,created,error 003000000000001,true,true, 003000000000002,true,true, 003000000000003,false,false,error""") step = BulkApiDmlOperation( sobject="Contact", operation=DataOperationType.INSERT, api_options={}, context=context, fields=["LastName"], ) step._wait_for_job = mock.Mock() step._wait_for_job.return_value = DataOperationJobResult( DataOperationStatus.SUCCESS, [], 0, 0) step.start() step.load_records(iter([["Test"], ["Test2"], ["Test3"]])) step.end() assert step.job_result.status is DataOperationStatus.SUCCESS results = step.get_results() assert list(results) == [ DataOperationResult("003000000000001", True, None), DataOperationResult("003000000000002", True, None), DataOperationResult(None, False, "error"), ]
def test_end__failed(self): context = mock.Mock() context.bulk.create_job.return_value = "JOB" step = BulkApiDmlOperation( sobject="Contact", operation=DataOperationType.INSERT, api_options={}, context=context, fields=["LastName"], ) step._wait_for_job = mock.Mock() step._wait_for_job.return_value = DataOperationJobResult( DataOperationStatus.JOB_FAILURE, [], 0, 0) step.job_id = "JOB" step.end() context.bulk.close_job.assert_called_once_with("JOB") step._wait_for_job.assert_called_once_with("JOB") assert step.job_result.status is DataOperationStatus.JOB_FAILURE