示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }