public async void Next_emits_OnData_when_data_is_available() { var response = new QueryResponse() { HasMore = true }; response.Results.AddRange(new[] { new QueryResultBytes() { ResultBytes = new KV() { Key = "key1", Namespace = "namespace1", Value = "foo".ToByteString() } .ToByteString() }, new QueryResultBytes() { ResultBytes = new KV() { Key = "key2", Namespace = "namespace2", Value = "bar".ToByteString() } .ToByteString() } }); QueryResult <KV> queryResult = null; var iterator = new StateQueryIterator(null, null, null, response); iterator.Data += result => queryResult = result; var iteratorResult = await iterator.Next(); iteratorResult.Should().NotBeNull(); queryResult.Should().NotBeNull(); iteratorResult.Should().BeSameAs(queryResult); queryResult.Value.Key.Should().Be("key1"); queryResult.Value.Namespace.Should().Be("namespace1"); queryResult.Value.Value.ToStringUtf8().Should().Be("foo"); iteratorResult = await iterator.Next(); iteratorResult.Should().NotBeNull(); queryResult.Should().NotBeNull(); iteratorResult.Should().BeSameAs(queryResult); queryResult.Value.Key.Should().Be("key2"); queryResult.Value.Namespace.Should().Be("namespace2"); queryResult.Value.Value.ToStringUtf8().Should().Be("bar"); }
Next_calls_handlers_HandleQueryNextState_when_results_are_processed_but_more_results_are_available() { var response = new QueryResponse(); response.Results.Add(new QueryResultBytes() { ResultBytes = new KV() { Key = "key", Namespace = "namespace", Value = "value".ToByteString() }.ToByteString() }); var handlerMock = new Mock <IHandler>(); handlerMock.Setup(m => m.HandleQueryStateNext("Id", "ChannelId", "TxId")) .ReturnsAsync(response); var iterator = new StateQueryIterator(handlerMock.Object, "ChannelId", "TxId", new QueryResponse() { HasMore = true, Id = "Id" }); var result = await iterator.Next(); handlerMock.VerifyAll(); result.Value.Key.Should().Be("key"); result.Value.Namespace.Should().Be("namespace"); result.Value.Value.ToStringUtf8().Should().Be("value"); }
public async void Next_emits_OnEnd_when_no_more_result_sets_are_available() { var eventDispatched = false; var iterator = new StateQueryIterator(null, null, null, new QueryResponse() { HasMore = false }); iterator.End += () => eventDispatched = true; var result = await iterator.Next(); eventDispatched.Should().BeTrue(); result.Done.Should().BeTrue(); }