public void Should_not_throw_exception_if_MaxAmountPerTransaction_zero_in_update_paymentSettings() { // Arrange Container.Resolve <SecurityTestHelper>().SignInAdmin(new Core.Security.Data.Users.Admin() { Username = "******" }); var settings = new PaymentSettings(); settings.Id = new Guid("84c60b9f-16ad-49e0-bb9a-0e7670054dd5"); settings.MinAmountPerTransaction = 1; settings.MaxAmountPerTransaction = 1; settings.PaymentGatewayMethod = PaymentMethod.Online; settings.PaymentMethod = "XPAY"; _paymentRepository.PaymentSettings.Add(settings); var saveSettingsCommand = new SavePaymentSettingsCommand(); saveSettingsCommand.Id = settings.Id; saveSettingsCommand.MinAmountPerTransaction = 1; saveSettingsCommand.MaxAmountPerTransaction = 0; saveSettingsCommand.PaymentGatewayMethod = PaymentMethod.Online; saveSettingsCommand.PaymentMethod = "XPAY"; // Act Action action = () => _commands.UpdateSettings(saveSettingsCommand); //Assert action.ShouldNotThrow(); }
public void Update_payment_settings_limits_test() { // Arrange var paymentSettings = new PaymentSettings { Id = new Guid("50797305-5320-4086-BA1C-9D062DDF53D9") }; _paymentRepository.PaymentSettings.Add(paymentSettings); var savePaymentSettingsCommand = new SavePaymentSettingsCommand(); savePaymentSettingsCommand.Id = paymentSettings.Id; savePaymentSettingsCommand.MinAmountPerTransaction = 10; savePaymentSettingsCommand.MaxAmountPerTransaction = 20; savePaymentSettingsCommand.MaxAmountPerDay = 30; savePaymentSettingsCommand.MaxTransactionPerDay = 40; savePaymentSettingsCommand.MaxTransactionPerWeek = 50; savePaymentSettingsCommand.MaxTransactionPerMonth = 60; savePaymentSettingsCommand.PaymentMethod = "XPAY"; savePaymentSettingsCommand.PaymentGatewayMethod = PaymentMethod.Online; // Act _commands.UpdateSettings(savePaymentSettingsCommand); //Assert var settings = _paymentRepository.PaymentSettings.Single(x => x.Id == paymentSettings.Id); settings.MinAmountPerTransaction.ShouldBeEquivalentTo(10); settings.MaxAmountPerTransaction.ShouldBeEquivalentTo(20); settings.MaxAmountPerDay.ShouldBeEquivalentTo(30); settings.MaxTransactionPerDay.ShouldBeEquivalentTo(40); settings.MaxTransactionPerWeek.ShouldBeEquivalentTo(50); settings.MaxTransactionPerMonth.ShouldBeEquivalentTo(60); settings.UpdatedBy.ShouldBeEquivalentTo(_actorInfoProvider.Actor.UserName); settings.UpdatedDate.Should().BeCloseTo(DateTime.Now, 5000); }
public PaymentSettings CreatePaymentSettings(Core.Brand.Interface.Data.Brand brand, PaymentType type, string vipLevel, PaymentSettingsValues settings) { var model = new SavePaymentSettingsCommand { Id = Guid.NewGuid(), Licensee = brand.Licensee.Id, Brand = brand.Id, PaymentType = type, PaymentGatewayMethod = PaymentMethod.OfflineBank, PaymentMethod = PaymentMethodDto.OfflinePayMethod, Currency = brand.BrandCurrencies.First().CurrencyCode, VipLevel = vipLevel, MinAmountPerTransaction = settings.MinAmountPerTransaction, MaxAmountPerTransaction = settings.MaxAmountPerTransaction, MaxTransactionPerDay = settings.MaxTransactionsPerDay, MaxTransactionPerWeek = settings.MaxTransactionsPerWeek, MaxTransactionPerMonth = settings.MaxTransactionsPerMonth }; var paymentSettingsId = _paymentSettingsCommands.AddSettings(model); var ps = _paymentRepository.PaymentSettings .Single(x => x.Id == paymentSettingsId); _paymentSettingsCommands.Enable(ps.Id, "remark"); return(ps); }
public PaymentSettings CreatePaymentSettings(Core.Brand.Interface.Data.Brand brand, PaymentType type, bool enable = true) { var model = new SavePaymentSettingsCommand { Id = Guid.NewGuid(), Licensee = brand.Licensee.Id, Brand = brand.Id, PaymentType = type, PaymentGatewayMethod = PaymentMethod.OfflineBank, PaymentMethod = PaymentMethodDto.OfflinePayMethod, Currency = brand.BrandCurrencies.First().CurrencyCode, VipLevel = brand.DefaultVipLevelId.ToString(), MinAmountPerTransaction = 10, MaxAmountPerTransaction = 200, MaxTransactionPerDay = 10, MaxTransactionPerWeek = 20, MaxTransactionPerMonth = 30 }; var paymentSettingsId = _paymentSettingsCommands.AddSettings(model); var ps = _paymentRepository.PaymentSettings .Single(x => x.Id == paymentSettingsId); if (enable) { _paymentSettingsCommands.Enable(ps.Id, "remark"); } return(ps); }
public void Cannot_save_payment_setting_with_invalid_brand() { // Arrange var brandTestHelper = Container.Resolve <BrandTestHelper>(); var paymentTestHelper = Container.Resolve <PaymentTestHelper>(); var licensee = brandTestHelper.CreateLicensee(); var brand = brandTestHelper.CreateBrand(licensee, isActive: true); var brandBankAccount = paymentTestHelper.CreateBankAccount(brand.Id, brand.DefaultCurrency); var model = new SavePaymentSettingsCommand { Id = Guid.Empty, Licensee = brand.Licensee.Id, Brand = brand.Id, PaymentType = PaymentType.Deposit, PaymentMethod = PaymentMethodDto.OfflinePayMethod, PaymentGatewayMethod = PaymentMethod.OfflineBank, Currency = brand.BrandCurrencies.First().CurrencyCode, VipLevel = brand.DefaultVipLevelId.ToString(), MinAmountPerTransaction = 10, MaxAmountPerTransaction = 200, MaxTransactionPerDay = 10, MaxTransactionPerWeek = 20, MaxTransactionPerMonth = 30 }; LogWithNewAdmin(Modules.PaymentSettings, Permissions.Create); // Act Assert.Throws <InsufficientPermissionsException>(() => _paymentSettingsQueries.SaveSetting(model)); }
public void Should_throw_exception_if_negative_values_in_MaxTransactionPerWeek() { // Arrange var saveSettingsCommand = new SavePaymentSettingsCommand(); saveSettingsCommand.MaxTransactionPerWeek = -1; // Act Action action = () => _commands.AddSettings(saveSettingsCommand); //Assert action.ShouldThrow <RegoException>().WithMessage("MaxTransactionPerWeekError"); }
public void Should_throw_exception_if_no_paymentMethod() { // Arrange var savePaymentSettingsCommand = new SavePaymentSettingsCommand(); //Add to pass Validator savePaymentSettingsCommand.MaxAmountPerTransaction = 1; savePaymentSettingsCommand.PaymentGatewayMethod = PaymentMethod.OfflineBank; // Act Action action = () => _commands.AddSettings(savePaymentSettingsCommand); //Assert action.ShouldThrow <Exception>().WithMessage("PaymentMethodIsRequired"); }
public void Should_throw_exception_if_MaxTransactionsPerDay_greater_than_MaxTransactionsPerMonth_in_add_paymentSettings() { // Arrange var saveSettingsCommand = new SavePaymentSettingsCommand(); saveSettingsCommand.MaxTransactionPerDay = 2; saveSettingsCommand.MaxTransactionPerMonth = 1; // Act Action action = () => _commands.AddSettings(saveSettingsCommand); //Assert action.ShouldThrow <RegoException>().WithMessage("MaxTransactionPerMonthErrorPerDay"); }
public void Should_throw_exception_if_MaxAmountPerTransaction_equal_MinAmountPerTransaction_in_add_paymentSettings() { // Arrange var saveSettingsCommand = new SavePaymentSettingsCommand(); saveSettingsCommand.MinAmountPerTransaction = 1; saveSettingsCommand.MaxAmountPerTransaction = 1; // Act Action action = () => _commands.AddSettings(saveSettingsCommand); //Assert action.ShouldThrow <RegoException>().WithMessage("MaxminAmountPerTransactionError"); }
public Guid AddSettings(SavePaymentSettingsCommand model) { var validationResult = new SavePaymentSettingsValidator().Validate(model); if (!validationResult.IsValid) { throw new RegoException(validationResult.Errors.First().ErrorMessage); } if (_repository.PaymentSettings.Any(x => x.Id == model.Id)) { throw new RegoException(PaymentSettingsErrors.AlreadyExistsError.ToString()); } var paymentSettings = new PaymentSettings(); paymentSettings.Id = model.Id == Guid.Empty ? Guid.NewGuid() : model.Id; paymentSettings.BrandId = model.Brand; paymentSettings.CurrencyCode = model.Currency; paymentSettings.VipLevel = model.VipLevel; paymentSettings.PaymentType = model.PaymentType; paymentSettings.PaymentMethod = model.PaymentMethod; paymentSettings.PaymentGatewayMethod = model.PaymentGatewayMethod; paymentSettings.CreatedDate = DateTime.Now; paymentSettings.CreatedBy = _actorInfoProvider.Actor.UserName; paymentSettings.MinAmountPerTransaction = model.MinAmountPerTransaction; paymentSettings.MaxAmountPerTransaction = model.MaxAmountPerTransaction; paymentSettings.MaxAmountPerDay = model.MaxAmountPerDay; paymentSettings.MaxTransactionPerDay = model.MaxTransactionPerDay; paymentSettings.MaxTransactionPerWeek = model.MaxTransactionPerWeek; paymentSettings.MaxTransactionPerMonth = model.MaxTransactionPerMonth; paymentSettings.Enabled = Status.Inactive; _repository.PaymentSettings.Add(paymentSettings); _repository.SaveChanges(); _eventBus.Publish(new PaymentSettingCreated { Id = paymentSettings.Id, CreatedBy = paymentSettings.CreatedBy, CreatedDate = paymentSettings.CreatedDate, VipLevel = paymentSettings.VipLevel, CurrencyCode = paymentSettings.CurrencyCode, BrandId = paymentSettings.BrandId }); return(paymentSettings.Id); }
public void Should_not_throw_exception_if_MaxAmountPerTransaction_zero_in_add_paymentSettings() { // Arrange var saveSettingsCommand = new SavePaymentSettingsCommand(); saveSettingsCommand.MinAmountPerTransaction = 1; saveSettingsCommand.MaxAmountPerTransaction = 0; // Act Action action = () => _commands.AddSettings(saveSettingsCommand); //Assert action.ShouldThrow <RegoException>().Where(x => !x.Message.Contains("MaxminAmountPerTransactionError")); }
public PaymentSettingSaveResult SaveSetting(SavePaymentSettingsCommand model) { string message; var paymentSettingsId = model.Id; if (model.Id == Guid.Empty) { paymentSettingsId = _settingsCommands.AddSettings(model); message = "CreatedSuccessfully"; } else { _settingsCommands.UpdateSettings(model); message = "UpdatedSuccessfully"; } return(new PaymentSettingSaveResult { Message = message, PaymentSettingsId = paymentSettingsId }); }
public void UpdateSettings(SavePaymentSettingsCommand model) { var validationResult = new SavePaymentSettingsValidator().Validate(model); if (!validationResult.IsValid) { throw new RegoException(validationResult.Errors.First().ErrorMessage); } var paymentSettings = _repository.PaymentSettings .SingleOrDefault(x => x.Id == model.Id); if (paymentSettings == null) { throw new RegoException(string.Format("Payment settings with id '{0}' were not found", model.Id)); } paymentSettings.MinAmountPerTransaction = model.MinAmountPerTransaction; paymentSettings.MaxAmountPerTransaction = model.MaxAmountPerTransaction; paymentSettings.MaxAmountPerDay = model.MaxAmountPerDay; paymentSettings.MaxTransactionPerDay = model.MaxTransactionPerDay; paymentSettings.MaxTransactionPerWeek = model.MaxTransactionPerWeek; paymentSettings.MaxTransactionPerMonth = model.MaxTransactionPerMonth; paymentSettings.UpdatedDate = DateTime.Now; paymentSettings.UpdatedBy = _actorInfoProvider.Actor.UserName; _eventBus.Publish(new PaymentSettingUpdated { Id = paymentSettings.Id, UpdatedBy = paymentSettings.UpdatedBy, UpdatedDate = paymentSettings.UpdatedDate.GetValueOrDefault(), VipLevel = paymentSettings.VipLevel, CurrencyCode = paymentSettings.CurrencyCode, BrandId = paymentSettings.BrandId }); _repository.SaveChanges(); }
public string Save(SavePaymentSettingsCommand model) { try { var result = _paymentSettingsQueries .SaveSetting(model); return(SerializeJson(new { Result = "success", Data = result.Message, Id = result.PaymentSettingsId })); } catch (RegoException regoEx) { return(SerializeJson(new { Result = "failed", Data = regoEx.Message })); } catch (ValidationError e) { return(SerializeJson(new { Result = "failed", Data = e.ErrorMessage })); } }