def test_batch__character_limit(self): context = mock.Mock() step = BulkApiDmlOperation( sobject="Contact", operation=DataOperationType.INSERT, api_options={"batch_size": 2}, context=context, fields=["LastName"], ) records = [["Test"], ["Test2"], ["Test3"]] csv_rows = [step._serialize_csv_record(step.fields)] for r in records: csv_rows.append(step._serialize_csv_record(r)) char_limit = sum([len(r) for r in csv_rows]) - 1 # Ask for batches of three, but we # should get batches of 2 back results = list(step._batch(iter(records), n=3, char_limit=char_limit)) assert len(results) == 2 assert list(results[0]) == [ "LastName\r\n".encode("utf-8"), "Test\r\n".encode("utf-8"), "Test2\r\n".encode("utf-8"), ] assert list(results[1]) == [ "LastName\r\n".encode("utf-8"), "Test3\r\n".encode("utf-8"), ]
def test_serialize_csv_record(self): context = mock.Mock() step = BulkApiDmlOperation( sobject="Contact", operation=DataOperationType.INSERT, api_options={"batch_size": 2}, context=context, fields=["Id", "FirstName", "LastName"], ) serialized = step._serialize_csv_record(step.fields) assert serialized == b"Id,FirstName,LastName\r\n" record = ["1", "Bob", "Ross"] serialized = step._serialize_csv_record(record) assert serialized == b"1,Bob,Ross\r\n" record = ["col1", "multiline\ncol2"] serialized = step._serialize_csv_record(record) assert serialized == b'col1,"multiline\ncol2"\r\n'