public void Initialize() { this.guidCreator = new Mock <IGuidCreator>(MockBehavior.Strict); this.target = new SaveCustomerCreditToLedgerDbStatement( this.guidCreator.Object, new Mock <IFifthweekDbConnectionFactory>(MockBehavior.Strict).Object); }
public async Task WhenTotalAmountEqualsCreditAmount_ItShouldStoreLedgerRecords() { await this.DatabaseTestAsync(async testDatabase => { byte sequentialGuidIndex = 0; this.guidCreator.Setup(v => v.CreateSqlSequential()).Returns(() => this.CreateGuid(sequentialGuidIndex++)); this.target = new SaveCustomerCreditToLedgerDbStatement(this.guidCreator.Object, testDatabase); await testDatabase.TakeSnapshotAsync(); await this.target.ExecuteAsync( UserId, Timestamp, CreditAmount, CreditAmount, TransactionReference, StripeChargeId, TaxamoTransactionKey); return(new ExpectedSideEffects { Inserts = new List <IIdentityEquatable> { new AppendOnlyLedgerRecord( this.CreateGuid(0), UserId.Value, null, Timestamp, -CreditAmount.Value, LedgerAccountType.Stripe, LedgerTransactionType.CreditAddition, TransactionReference.Value, null, null, StripeChargeId, TaxamoTransactionKey), new AppendOnlyLedgerRecord( this.CreateGuid(1), UserId.Value, null, Timestamp, CreditAmount.Value, LedgerAccountType.FifthweekCredit, LedgerTransactionType.CreditAddition, TransactionReference.Value, null, null, StripeChargeId, TaxamoTransactionKey), } }); }); }