Exemple #1
0
        public void PersistNewMaturedBlockDeposits_Should_Call_Store_And_Pass_Deposits_Upon_New_Block_Arrival_And_No_Deposits_In_Block()
        {
            int depositCount = 0;
            var deposits     = new List <IMaturedBlockDeposits[]>();

            deposits.Add(new[] { new MaturedBlockDepositsModel(new MaturedBlockModel()
                {
                    BlockHash   = 0,
                    BlockHeight = 0
                }, TestingValues.GetMaturedBlockDeposits(depositCount, new HashHeightPair(0, 0)).Deposits) });

            IObservable <IMaturedBlockDeposits[]> maturedBlockStream = deposits.ToObservable();

            this.maturedBlockReceiver.MaturedBlockDepositStream.Returns(maturedBlockStream);

            this.eventsPersister = new EventsPersister(this.loggerFactory, this.store, this.maturedBlockReceiver, this.maturedBlocksRequester);

            var indexedCallArguments = this.mockStore.Invocations
                                       .Where(i => i.Method.Name == nameof(ICrossChainTransferStore.RecordLatestMatureDepositsAsync))
                                       .Select((c, i) => new { Index = i, Deposits = ((IMaturedBlockDeposits[])c.Arguments[0])[0].Deposits }).ToList();

            indexedCallArguments.ForEach(
                ca =>
            {
                ca.Deposits.Count.Should().Be(depositCount);
                ca.Deposits.Select(d => d).Should().BeEquivalentTo(deposits[ca.Index][0].Deposits);
            });
        }
Exemple #2
0
        public void PersistNewMaturedBlockDeposits_Should_Call_Store_And_Pass_Deposits_For_Each_Incomming_Matured_Block()
        {
            int blocksCount = 10;
            var deposits    = new List <IMaturedBlockDeposits[]>();

            for (int i = 0; i < blocksCount; i++)
            {
                deposits.Add(new[] { new MaturedBlockDepositsModel(new MaturedBlockModel()
                    {
                        BlockHash   = new uint256((ulong)i),
                        BlockHeight = i
                    }, TestingValues.GetMaturedBlockDeposits(i, new HashHeightPair((uint)i, i)).Deposits) });
            }

            IObservable <IMaturedBlockDeposits[]> maturedBlockStream = deposits.ToObservable();

            this.maturedBlockReceiver.MaturedBlockDepositStream.Returns(maturedBlockStream);

            int blockNum = 0;

            this.mockStore.SetupGet(o => o.NextMatureDepositHeight).Returns(() => blockNum);
            this.mockStore.Setup(mock => mock.RecordLatestMatureDepositsAsync(It.IsAny <IMaturedBlockDeposits[]>()))
            .Returns(() => Task <bool> .Run(() => { blockNum++; return(true); }));

            this.eventsPersister = new EventsPersister(this.loggerFactory, this.store, this.maturedBlockReceiver, this.maturedBlocksRequester);

            var indexedCallArguments = this.mockStore.Invocations
                                       .Where(i => i.Method.Name == nameof(ICrossChainTransferStore.RecordLatestMatureDepositsAsync))
                                       .Select((c, i) => new { Index = i, Deposits = ((IMaturedBlockDeposits[])c.Arguments[0])[0].Deposits }).ToList();

            indexedCallArguments.ForEach(
                ca =>
            {
                ca.Deposits.Count.Should().Be(ca.Index);
                ca.Deposits.Select(d => d).Should().BeEquivalentTo(deposits[ca.Index][0].Deposits);
            });
        }