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_get_results(self, download_mock): context = mock.Mock() context.bulk.endpoint = "https://test" download_mock.side_effect = [ io.StringIO("""id,success,created,error 003000000000001,true,true, 003000000000002,true,true,"""), io.StringIO("""id,success,created,error 003000000000003,false,false,error"""), ] step = BulkApiDmlOperation( sobject="Contact", operation=DataOperationType.INSERT, api_options={}, context=context, fields=["LastName"], ) step.job_id = "JOB" step.batch_ids = ["BATCH1", "BATCH2"] results = step.get_results() assert list(results) == [ DataOperationResult("003000000000001", True, None), DataOperationResult("003000000000002", True, None), DataOperationResult(None, False, "error"), ] download_mock.assert_has_calls([ mock.call("https://test/job/JOB/batch/BATCH1/result", context.bulk), mock.call("https://test/job/JOB/batch/BATCH2/result", context.bulk), ])
def test_get_results__failure(self, download_mock): context = mock.Mock() context.bulk.endpoint = "https://test" download_mock.return_value.side_effect = Exception step = BulkApiDmlOperation( sobject="Contact", operation=DataOperationType.INSERT, api_options={}, context=context, fields=["LastName"], ) step.job_id = "JOB" step.batch_ids = ["BATCH1", "BATCH2"] with self.assertRaises(BulkDataException): list(step.get_results())
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