public void TestGetStateByPartialCompositeKeyWithPagination()
        {
            QueryMetadata queryMetadata = new QueryMetadata {
                Bookmark = "aaaa", PageSize = 1
            };

            ChaincodeStub stub = PrepareStubAndMockHandler(true, queryMetadata.ToByteString());

            CompositeKey key = new CompositeKey("KEY");
            IQueryResultsEnumerable <IKeyValue> queryResultsIterator = stub.GetStateByPartialCompositeKeyWithPagination(key, 1, "aaaa");

            queryResultsIterator.First(); //Otherwise GetStateByRangeAsync will not be executed, that Or GetMetadata()
            handler.Verify(a => a.GetStateByRangeAsync("myc", "txId", "", key.ToString(), key.ToString() + "\udbff\udfff", queryMetadata.ToByteString(), It.IsAny <CancellationToken>()));
            Assert.AreEqual(queryResultsIterator.GetMetadata().FetchedRecordsCount, 2);
            Assert.AreEqual(queryResultsIterator.GetMetadata().Bookmark, "bbbb");


            key = new CompositeKey("");
            queryResultsIterator = stub.GetStateByPartialCompositeKeyWithPagination(key, 1, "aaaa");
            queryResultsIterator.First(); //Otherwise GetStateByRangeAsync will not be executed, that Or GetMetadata()

            handler.Verify(a => a.GetStateByRangeAsync("myc", "txId", "", key.ToString(), key.ToString() + "\udbff\udfff", queryMetadata.ToByteString(), It.IsAny <CancellationToken>()));
            Assert.AreEqual(queryResultsIterator.GetMetadata().FetchedRecordsCount, 2);
            Assert.AreEqual(queryResultsIterator.GetMetadata().Bookmark, "bbbb");
        }
            public override Response Invoke(IChaincodeStub stub)
            {
                string key = stub.StringArgs[1];


                using (IQueryResultsEnumerable <IKeyModification> stateByRange = stub.GetHistoryForKey(key))
                {
                    foreach (IKeyModification kv in stateByRange)
                    {
                        //Do Nothing, just enumerate
                    }
                }

                return(NewSuccessResponse("OK response2"));
            }
            public override Response Invoke(IChaincodeStub stub)
            {
                string query = stub.StringArgs[1];


                using (IQueryResultsEnumerable <IKeyValue> stateByRange = stub.GetQueryResult(query))
                {
                    foreach (IKeyValue kv in stateByRange)
                    {
                        //Do Nothing, just enumerate
                    }
                }

                return(NewSuccessResponse("OK response2"));
            }
            public override Response Invoke(IChaincodeStub stub)
            {
                Assert.AreEqual(stub.Function, "invoke");
                Assert.AreEqual(stub.Args.Count, 3);
                string aKey = stub.StringArgs[1];
                string bKey = stub.StringArgs[2];

                using (IQueryResultsEnumerable <IKeyValue> stateByRange = stub.GetStateByRange(aKey, bKey))
                {
                    foreach (IKeyValue kv in stateByRange)
                    {
                        //Do Nothing, just enumerate
                    }
                }

                return(NewSuccessResponse("OK response2"));
            }
        public void TestGetStateByRangeWithPagination()
        {
            ChaincodeStub stub     = new ChaincodeStub("myc", "txId", handler.Object, new List <ByteString>(), null);
            string        startKey = "START";
            string        endKey   = "END";

            KV[]          keyValues = PrepareKeyValuePairs(2);
            QueryResponse value     = PrepareQueryResponseForRange(keyValues, true);


            QueryMetadata queryMetadata = new QueryMetadata {
                Bookmark = "aaaa", PageSize = 1
            };

            handler.Setup((a) => a.GetStateByRangeAsync("myc", "txId", "", startKey, endKey, queryMetadata.ToByteString(), token)).ReturnsAsync(value);
            IQueryResultsEnumerable <IKeyValue> queryResultsIterator = stub.GetStateByRangeWithPagination(startKey, endKey, 1, "aaaa");

            Assert.That.Contains(queryResultsIterator, keyValues.Select(a => new KeyValue(a)));
            Assert.AreEqual(queryResultsIterator.GetMetadata().FetchedRecordsCount, 2);
            Assert.AreEqual(queryResultsIterator.GetMetadata().Bookmark, "bbbb");
        }