예제 #1
0
            public async Task When_Last_Block_Processed_Exceeds_Starting_Block_Returns_Null()
            {
                Web3Mock.BlockNumberMock.Setup(r => r.SendRequestAsync(null)).ReturnsAsync(50.ToHexBigInteger());
                ProgressRepo.Setup(r => r.GetLastBlockNumberProcessedAsync()).ReturnsAsync((ulong)50);

                Assert.Null(await Service.GetNextBlockRangeToProcessAsync(100));
            }
            public async Task When_Last_Block_Processed_Exceeds_Starting_Block_Returns_Null()
            {
                Web3.Setup(r => r.GetMaxBlockNumberAsync()).ReturnsAsync((ulong)50);
                ProgressRepo.Setup(r => r.GetLastBlockNumberProcessedAsync()).ReturnsAsync((ulong)50);

                Assert.Null(await Service.GetNextBlockRangeToProcessAsync(100));
            }
            public async Task Calls_Upsert_On_Repository()
            {
                const ulong LastBlockNumberProcessed = 99;

                await Service.SaveLastBlockProcessedAsync(LastBlockNumberProcessed);

                ProgressRepo.Verify(r => r.UpsertProgressAsync(LastBlockNumberProcessed), Times.Once);
            }
            public async Task Returns_Next_Unprocessed_Block()
            {
                Web3.Setup(r => r.GetMaxBlockNumberAsync()).ReturnsAsync((ulong)50);
                ProgressRepo.Setup(r => r.GetLastBlockNumberProcessedAsync()).ReturnsAsync((ulong)5);

                var range = await Service.GetNextBlockRangeToProcessAsync(100);

                Assert.Equal(new BlockRange(6, 50), range);
            }
            public async Task When_Nothing_Has_Been_Processed_Returns_Specified_Starting_Block()
            {
                Web3.Setup(r => r.GetMaxBlockNumberAsync()).ReturnsAsync((ulong)20);
                ProgressRepo.Setup(r => r.GetLastBlockNumberProcessedAsync()).ReturnsAsync((ulong?)null);

                var range = await Service.GetNextBlockRangeToProcessAsync(100);

                Assert.Equal(new BlockRange(10, 20), range);
            }
예제 #6
0
            public async Task Returns_Next_Unprocessed_Block()
            {
                Web3Mock.BlockNumberMock.Setup(r => r.SendRequestAsync(null)).ReturnsAsync(50.ToHexBigInteger());
                ProgressRepo.Setup(r => r.GetLastBlockNumberProcessedAsync()).ReturnsAsync(5);

                var range = await Service.GetNextBlockRangeToProcessAsync(100);

                var expectedBlockRange = new BlockRange(6, 50);

                Assert.Equal(expectedBlockRange, range.Value);
            }
예제 #7
0
            public async Task When_Nothing_Has_Been_Processed_Returns_Specified_Starting_Block()
            {
                Web3Mock.BlockNumberMock.Setup(r => r.SendRequestAsync(null)).ReturnsAsync(20.ToHexBigInteger());
                ProgressRepo.Setup(r => r.GetLastBlockNumberProcessedAsync()).ReturnsAsync((ulong?)null);

                var range = await Service.GetNextBlockRangeToProcessAsync(100);

                var expectedBlockRange = new BlockRange(10, 20);

                Assert.Equal(expectedBlockRange, range.Value);
            }
예제 #8
0
            public async Task When_Nothing_Has_Been_Processed_And_Default_Starting_Block_Is_Null_Returns_Current_Block_On_The_Chain_Less_Min_Confirmations()
            {
                Service = new BlockProgressService(Web3Mock.Web3, null, ProgressRepo.Object, minimumBlockConfirmations: 6);

                Web3Mock.BlockNumberMock.Setup(r => r.SendRequestAsync(null)).ReturnsAsync(20.ToHexBigInteger());
                ProgressRepo.Setup(r => r.GetLastBlockNumberProcessedAsync()).ReturnsAsync((BigInteger?)null);

                var range = await Service.GetNextBlockRangeToProcessAsync(100);

                var expectedBlockRange = new BlockRange(14, 14);

                Assert.Equal(expectedBlockRange, range.Value);
            }