public void SomeRowsInserted() { ErrorProto row1Error1 = new ErrorProto { Location = "field_1", Reason = "reason_1", Message = "message_1" }; ErrorProto row1Error2 = new ErrorProto { Location = "field_2", Message = "message_2" }; InsertErrorsData row1List1 = new InsertErrorsData { Index = 1, Errors = new List <ErrorProto> { row1Error1, row1Error2 } }; ErrorProto row5Error1 = new ErrorProto { Location = "field_3", Reason = "reason_3" }; InsertErrorsData row5List1 = new InsertErrorsData { Index = 5, Errors = new List <ErrorProto> { row5Error1 } }; InsertErrorsData row6List1 = new InsertErrorsData { Index = 6 }; ErrorProto row1Error3 = new ErrorProto { Location = "field_4", Reason = "reason_4", Message = "message_4" }; InsertErrorsData row1List2 = new InsertErrorsData { Index = 1, Errors = new List <ErrorProto> { row1Error3 } }; TableDataInsertAllResponse response = new TableDataInsertAllResponse { InsertErrors = new List <InsertErrorsData> { row1List1, row5List1, row6List1, row1List2 } }; IReadOnlyList <BigQueryInsertRow> rows = Enumerable.Range(0, 8).Select(_ => new BigQueryInsertRow()).ToList().AsReadOnly(); List <BigQueryInsertRowErrors> expectedInsertRowErrors = new List <BigQueryInsertRowErrors> { new BigQueryInsertRowErrors(rows[1], new List <InsertErrorsData> { row1List1, row1List2 }), new BigQueryInsertRowErrors(rows[5], new List <InsertErrorsData> { row5List1 }), new BigQueryInsertRowErrors(rows[6], new List <InsertErrorsData> { row6List1 }), }; List <SingleError> expectedSingleErrors = expectedInsertRowErrors.SelectMany(rowError => rowError).ToList(); BigQueryInsertResults results = new BigQueryInsertResults( _client, new InsertOptions { SkipInvalidRows = true }, rows, response); Assert.Equal(BigQueryInsertStatus.SomeRowsInserted, results.Status); Assert.Equal(3, results.OriginalRowsWithErrors); Assert.Equal(8, results.InsertAttemptRowCount); Assert.Equal(expectedInsertRowErrors, results.Errors.ToList(), new BigQueryInsertRowErrorEqualityComparer()); Assert.Same(results, results.ThrowOnNoneInserted()); AssertException(results.ThrowOnNotAllInserted, expectedSingleErrors, BigQueryInsertStatus.SomeRowsInserted); AssertException(results.ThrowOnAnyError, expectedSingleErrors, BigQueryInsertStatus.SomeRowsInserted); }
public void NoRowsInserted_NoSkip() { ErrorProto row1Error1 = new ErrorProto { Location = "field_1", Reason = "reason_1", Message = "message_1" }; ErrorProto row1Error2 = new ErrorProto { Location = "field_2", Message = "message_2" }; InsertErrorsData row1List1 = new InsertErrorsData { Index = 1, Errors = new List <ErrorProto> { row1Error1, row1Error2 } }; ErrorProto row5Error1 = new ErrorProto { Location = "field_3", Reason = "reason_3" }; InsertErrorsData row5List1 = new InsertErrorsData { Index = 5, Errors = new List <ErrorProto> { row5Error1 } }; InsertErrorsData row6List1 = new InsertErrorsData { Index = 6 }; ErrorProto row1Error3 = new ErrorProto { Location = "field_4", Reason = "reason_4", Message = "message_4" }; InsertErrorsData row1List2 = new InsertErrorsData { Index = 1, Errors = new List <ErrorProto> { row1Error3 } }; TableDataInsertAllResponse response = new TableDataInsertAllResponse { InsertErrors = new List <InsertErrorsData> { row1List1, row5List1, row6List1, row1List2 } }; IReadOnlyList <BigQueryInsertRow> rows = Enumerable.Range(0, 8).Select(_ => new BigQueryInsertRow()).ToList().AsReadOnly(); // We don't need to have errors for all rows to know that no rows were inserted. // If SkipInvalidRows is not set to true, then even if only one row has errors, no rows are inserted. List <BigQueryInsertRowErrors> expectedInsertRowErrors = new List <BigQueryInsertRowErrors> { new BigQueryInsertRowErrors(rows[1], new List <InsertErrorsData> { row1List1, row1List2 }), new BigQueryInsertRowErrors(rows[5], new List <InsertErrorsData> { row5List1 }), new BigQueryInsertRowErrors(rows[6], new List <InsertErrorsData> { row6List1 }), }; List <SingleError> expectedSingleErrors = expectedInsertRowErrors.SelectMany(rowError => rowError).ToList(); BigQueryInsertResults results = new BigQueryInsertResults( _client, new InsertOptions(), rows, response); Assert.Equal(BigQueryInsertStatus.NoRowsInserted, results.Status); Assert.Equal(3, results.OriginalRowsWithErrors); Assert.Equal(8, results.InsertAttemptRowCount); Assert.Equal(expectedInsertRowErrors, results.Errors.ToList(), new BigQueryInsertRowErrorEqualityComparer()); AssertException(results.ThrowOnNoneInserted, expectedSingleErrors, BigQueryInsertStatus.NoRowsInserted); AssertException(results.ThrowOnNotAllInserted, expectedSingleErrors, BigQueryInsertStatus.NoRowsInserted); AssertException(results.ThrowOnAnyError, expectedSingleErrors, BigQueryInsertStatus.NoRowsInserted); }