public async Task InitializeAsync_Error_Includes_Reason() { // Arrange using var stream = ResourceHelper.ReadResourceAsStream(@"Documents\Query\failure_cas_mismatch_reason.json"); using var blockResult = new BlockQueryResult <dynamic>(stream, new DefaultSerializer()); await blockResult.InitializeAsync().ConfigureAwait(false); // Act await blockResult.ToListAsync().ConfigureAwait(false); var result = blockResult.MetaData.Status; Assert.NotEmpty(blockResult.Errors); Assert.NotNull(blockResult.Errors.First().Reason); Assert.Equal("CAS mismatch", blockResult.Errors.First().Reason.Message); Assert.Equal("couchbase:2065", blockResult.Errors.First().Reason.Caller); Assert.Equal(12033, blockResult.Errors.First().Reason.Code); Assert.Equal("datastore.couchbase.CAS_mismatch", blockResult.Errors.First().Reason.Key); Assert.False(blockResult.Errors.First().Retry); Assert.Equal(QueryStatus.Fatal, blockResult.MetaData.Status); Assert.NotNull(blockResult.MetaData.Metrics); }
public async Task GetAsyncEnumerator_HasNotInitialized_InvalidOperationException() { // Arrange using var stream = ResourceHelper.ReadResourceAsStream(@"Documents\Query\query-200-success.json"); using var blockResult = new BlockQueryResult <dynamic>(stream, new DefaultSerializer()); // Act/Assert await Assert.ThrowsAsync <InvalidOperationException>(() => blockResult.ToListAsync().AsTask()).ConfigureAwait(false); }
public async Task GetAsyncEnumerator_CalledTwice_StreamAlreadyReadException(string filename) { // Arrange using var stream = ResourceHelper.ReadResourceAsStream(filename); using var blockResult = new BlockQueryResult <dynamic>(stream, new DefaultSerializer()); await blockResult.InitializeAsync().ConfigureAwait(false); // Act/Assert await blockResult.ToListAsync().ConfigureAwait(false); await Assert.ThrowsAsync <StreamAlreadyReadException>(() => blockResult.ToListAsync().AsTask()).ConfigureAwait(false); }
public async Task GetAsyncEnumerator_NoResults_Empty() { // Arrange using var stream = ResourceHelper.ReadResourceAsStream(@"Documents\Query\query-n1ql-error-response-400.json"); using var blockResult = new BlockQueryResult <dynamic>(stream, new DefaultSerializer()); await blockResult.InitializeAsync().ConfigureAwait(false); // Act var result = await blockResult.ToListAsync().ConfigureAwait(false); // Assert Assert.Empty(result); }
public async Task ShouldRetry_Handles_Retry_Cases(string fileName, bool enableEnhancedPreparedStatements, bool shouldRetry) { // Arrange using var stream = ResourceHelper.ReadResourceAsStream(fileName); using var blockResult = new BlockQueryResult <dynamic>(stream, new DefaultSerializer()); await blockResult.InitializeAsync().ConfigureAwait(false); // Act var actual = blockResult.ShouldRetry(enableEnhancedPreparedStatements); // Assert Assert.Equal(shouldRetry, actual); }
public async Task GetAsyncEnumerator_HasInitialized_GetsResults() { // Arrange using var stream = ResourceHelper.ReadResourceAsStream(@"Documents\Query\query-200-success.json"); using var blockResult = new BlockQueryResult <dynamic>(stream, new DefaultSerializer()); await blockResult.InitializeAsync().ConfigureAwait(false); // Act var result = await blockResult.ToListAsync().ConfigureAwait(false); // Assert Assert.True(blockResult.Success); Assert.Equal(QueryStatus.Success, blockResult.MetaData.Status); Assert.NotEmpty(result); }
public async Task GetAsyncEnumerator_AfterEnumeration_HasErrors(string filename, QueryStatus expectedStatus) { // Arrange using var stream = ResourceHelper.ReadResourceAsStream(filename); using var blockResult = new BlockQueryResult <dynamic>(stream, new DefaultSerializer()); await blockResult.InitializeAsync().ConfigureAwait(false); // Act await blockResult.ToListAsync().ConfigureAwait(false); var result = blockResult.MetaData.Status; // Assert Assert.False(blockResult.Success); Assert.Equal(expectedStatus, result); Assert.NotEmpty(blockResult.Errors); }