public void WithdrawFailTest_TestsIfWithdrawValidationisReturnedTrueWhenSufficientBalanceIsNotAvailable_VerifiesThroughReturnedValue() { var mockFundsRepository = new MockFundsRepository(); var mockBalanceRepository = new MockBalanceRepository(); var mockFeeCalculationService = new MockFeeCalculationService(); var mockWithdrawFeesRepository = new MockWithdrawFeesRepository(); var mockWithdrawIdGeneratorService = new MockWithdrawIdGeneratorService(); var depositLimitEvaluationService = new DepositLimitEvaluationService(); var mockLedgerRepository = new MockLedgerRepository(); var mockDepositLimitRepository = new MockDepositLimitRepository(); var mockWithdrawLimitEvaluationService = new WithdrawLimitEvaluationService(); var mockWithdrawLimitRepository = new MockWithdrawLimitRepository(); var mockTierLevelRetrievalService = new MockTierLevelRetrievalService(); var mockWithdrawRepository = new MockWithdrawRepository(); var tierValidationService = new TierValidationService(); var mockBboRetrievalService = new MockBboRetrievalService(); var mockLimitsConfigurationService = new LimitsConfigurationService(mockDepositLimitRepository, depositLimitEvaluationService, mockWithdrawLimitRepository, mockWithdrawLimitEvaluationService, mockBboRetrievalService); TransactionService transactionService = new TransactionService(mockFundsRepository, new MockLedgerGeneratorService(), mockLimitsConfigurationService); FundsValidationService fundsValidationService = new FundsValidationService(transactionService, mockFundsRepository, mockBalanceRepository, mockFeeCalculationService, mockWithdrawFeesRepository, mockWithdrawIdGeneratorService, mockLedgerRepository, depositLimitEvaluationService, mockDepositLimitRepository, mockWithdrawLimitEvaluationService, mockWithdrawLimitRepository, mockTierLevelRetrievalService, mockWithdrawRepository, tierValidationService, mockLimitsConfigurationService); Balance balance = new Balance(new Currency("XBT", true), new AccountId(123), 100, 100); mockBalanceRepository.AddBalance(balance); Withdraw withdrawalResponse = fundsValidationService.ValidateFundsForWithdrawal(balance.AccountId, balance.Currency, 100.0002M, new TransactionId("transaction123"), new BitcoinAddress("bitcoinid123")); Assert.IsNull(withdrawalResponse); }
public void WithdrawConfirmedTest_TestIfWithdrawalConfirmationExecutesAsExpected_TestsThroughReturnedValue() { var mockFundsRepository = new MockFundsRepository(); var mockBalanceRepository = new MockBalanceRepository(); var mockFeeCalculationService = new MockFeeCalculationService(); var mockWithdrawFeesRepository = new MockWithdrawFeesRepository(); var mockWithdrawIdGeneratorService = new MockWithdrawIdGeneratorService(); var depositLimitEvaluationService = new DepositLimitEvaluationService(); var mockLedgerRepository = new MockLedgerRepository(); var mockDepositLimitRepository = new MockDepositLimitRepository(); var mockWithdrawLimitEvaluationService = new WithdrawLimitEvaluationService(); var mockWithdrawLimitRepository = new MockWithdrawLimitRepository(); var mockTierLevelRetrievalService = new MockTierLevelRetrievalService(); var mockWithdrawRepository = new MockWithdrawRepository(); var tierValidationService = new TierValidationService(); var mockBboRetrievalService = new MockBboRetrievalService(); var mockLimitsConfigurationService = new LimitsConfigurationService(mockDepositLimitRepository, depositLimitEvaluationService, mockWithdrawLimitRepository, mockWithdrawLimitEvaluationService, mockBboRetrievalService); TransactionService transactionService = new TransactionService(mockFundsRepository, new MockLedgerGeneratorService(), mockLimitsConfigurationService); FundsValidationService fundsValidationService = new FundsValidationService(transactionService, mockFundsRepository, mockBalanceRepository, mockFeeCalculationService, mockWithdrawFeesRepository, mockWithdrawIdGeneratorService, mockLedgerRepository, depositLimitEvaluationService, mockDepositLimitRepository, mockWithdrawLimitEvaluationService, mockWithdrawLimitRepository, mockTierLevelRetrievalService, mockWithdrawRepository, tierValidationService, mockLimitsConfigurationService); Withdraw withdraw = new Withdraw(new Currency("XBT", true), "123", DateTime.Now, WithdrawType.Bitcoin, 0.4m, 0.001m, TransactionStatus.Pending, new AccountId(123), new BitcoinAddress("bitcoin123")); Balance balance = new Balance(withdraw.Currency, withdraw.AccountId, 400, 800); mockBalanceRepository.AddBalance(balance); Withdraw withdrawalResponse = fundsValidationService.ValidateFundsForWithdrawal(withdraw.AccountId, withdraw.Currency, withdraw.Amount, withdraw.TransactionId, withdraw.BitcoinAddress); Assert.IsNotNull(withdrawalResponse); bool withdrawalExecuted = fundsValidationService.WithdrawalExecuted(withdrawalResponse); Assert.IsTrue(withdrawalExecuted); Assert.AreEqual(5, mockFundsRepository.GetNumberOfObjects()); }