// There is no need to match merge threshold while all of the units has been consumed public async Task will_merge_if_consumed_all_but_did_not_match_threshold() { var depositId = Keccak.Zero; TestConsumer consumer = TestConsumer.ForDeposit(depositId) .WithNode(1).AddSession().WithUnpaidUnits(10) .And.WithNode(2).AddSession().WithUnpaidUnits(20) .And.Build(); ConfigureMocks(consumer); _sessionManager.GetSession(depositId, consumer.Node(1).Node.Peer) .Returns(consumer.Node(1).Node.Sessions.First(s => s.DepositId == depositId)); IDepositNodesHandler depositHandler = await _depositManager.InitAsync(depositId); AddReciptsToMerge(consumer, depositHandler); _receiptsPolicies.CanMergeReceipts(depositHandler.UnmergedUnits, depositHandler.UnitPrice).Returns(false); depositHandler.SetConsumedUnits(100); depositHandler.SetUnmergedUnits(50); await _depositManager.HandleUnpaidUnitsAsync(depositId, consumer.Node(1).Node.Peer); Assert.IsTrue(depositHandler.UnmergedUnits == 0); }
public async Task returns_unclaimed_units_correctly() { var depositId = Keccak.Zero; TestConsumer consumer = TestConsumer.ForDeposit(depositId) .WithNode(1).AddSession().WithUnpaidUnits(10) .And.WithNode(2).AddSession().WithUnpaidUnits(20) .And.Build(); ConfigureMocks(consumer); _sessionManager.GetSession(depositId, consumer.Node(1).Node.Peer) .Returns(consumer.Node(1).Node.Sessions.First(s => s.DepositId == depositId)); IDepositNodesHandler depositHandler = await _depositManager.InitAsync(depositId); AddReciptsToMerge(consumer, depositHandler); _receiptsPolicies.CanMergeReceipts(depositHandler.UnmergedUnits, depositHandler.UnitPrice).Returns(true); depositHandler.SetConsumedUnits(80); depositHandler.SetUnmergedUnits(50); await _depositManager.HandleUnpaidUnitsAsync(depositId, consumer.Node(1).Node.Peer); var unclaimedUnits = _depositManager.GetUnclaimedUnits(depositId); Assert.AreEqual(10, unclaimedUnits); }
// Merging recipts runs when consumer consumed all of the purchased units or there is enough unmerged units to be above merge threshold (unmergedUnits * unitPrice >= mergeThreshold). public async Task can_merge_recipts_when_consumed_all_units() { var depositId = Keccak.Zero; TestConsumer consumer = TestConsumer.ForDeposit(depositId) .WithNode(1).AddSession().WithUnpaidUnits(10) .And.WithNode(2).AddSession().WithUnpaidUnits(20) .And.Build(); ConfigureMocks(consumer); _sessionManager.GetSession(depositId, consumer.Node(1).Node.Peer) .Returns(consumer.Node(1).Node.Sessions.First(s => s.DepositId == depositId)); IDepositNodesHandler depositHandler = await _depositManager.InitAsync(depositId); AddReciptsToMerge(consumer, depositHandler); depositHandler.SetConsumedUnits(100); depositHandler.SetUnmergedUnits(50); await _depositManager.HandleUnpaidUnitsAsync(depositId, consumer.Node(1).Node.Peer); Assert.IsTrue(depositHandler.UnmergedUnits == 0); }