public void Should_return_false_if_the_same_setting_existed()
        {
            // Arrange
            var brand = Container.Resolve <BrandTestHelper>().CreateBrand(isActive: true);

            var repositorySettings = new PaymentGatewaySettings
            {
                Id      = new Guid("50797305-5320-4086-BA1C-9D062DDF53D9"),
                BrandId = brand.Id,
                OnlinePaymentMethodName = "OnlinePaymentMethodName",
                PaymentGatewayName      = "XPAY",
                Channel = 1,
                Status  = Status.Active
            };

            _paymentRepository.PaymentGatewaySettings.Add(repositorySettings);

            var savePaymentSettingsCommand = new SavePaymentGatewaysSettingsData
            {
                Brand = brand.Id,
                OnlinePaymentMethodName = "OnlinePaymentMethodName2",
                PaymentGatewayName      = "XPAY",
                Channel    = 1,
                EntryPoint = "http://domain.com"
            };

            // Act
            var response = _commands.ValidateThatPaymentGatewaySettingsCanBeAdded(savePaymentSettingsCommand);

            //Assert
            response.IsValid.Should().Be(false);
            response.Errors.First().ErrorMessage.Should().Be("PaymentGatewaySettingAlreadyExists");
        }
        public void Can_add_the_same_onlinePaymentMethodName_in_different_brands()
        {
            // Arrange
            var brand = Container.Resolve <BrandTestHelper>().CreateBrand(isActive: true);

            var repositorySettings = new PaymentGatewaySettings
            {
                Id      = new Guid("50797305-5320-4086-BA1C-9D062DDF53D9"),
                BrandId = brand.Id,
                OnlinePaymentMethodName = "OnlinePaymentMethodName",
                Status = Status.Active
            };

            _paymentRepository.PaymentGatewaySettings.Add(repositorySettings);

            var brand2 = Container.Resolve <BrandTestHelper>().CreateBrand(isActive: true);
            var savePaymentSettingsCommand = new SavePaymentGatewaysSettingsData
            {
                Brand                   = brand2.Id,
                Channel                 = 1,
                PaymentGatewayName      = "PG-NAME",
                OnlinePaymentMethodName = "OnlinePaymentMethodName",
                EntryPoint              = "http://domain.com"
            };

            // Act
            var response = _commands.ValidateThatPaymentGatewaySettingsCanBeAdded(savePaymentSettingsCommand);

            //Assert
            response.IsValid.Should().Be(true);
        }
Exemplo n.º 3
0
        public SavePaymentGatewaysSettingsResult Edit(SavePaymentGatewaysSettingsData model)
        {
            var validationResult = new SavePaymentGatewaySettingsValidator(_repository, false).Validate(model);

            if (!validationResult.IsValid)
            {
                throw new RegoValidationException(validationResult);
            }

            var setting = _repository.PaymentGatewaySettings
                          .SingleOrDefault(x => x.Id == model.Id);

            if (setting == null)
            {
                throw new RegoException(string.Format("Payment gateway settings with id '{0}' were not found", model.Id));
            }

            setting.OnlinePaymentMethodName = model.OnlinePaymentMethodName;
            setting.PaymentGatewayName      = model.PaymentGatewayName;
            setting.Channel     = model.Channel;
            setting.EntryPoint  = model.EntryPoint;
            setting.Remarks     = model.Remarks;
            setting.DateUpdated = _paymentQueries.GetBrandDateTimeOffset(model.Brand);
            setting.UpdatedBy   = _actorInfoProvider.Actor.UserName;

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                _repository.SaveChanges();

                _eventBus.Publish(new PaymentGatewaySettingUpdated
                {
                    Id                      = setting.Id,
                    UpdatedBy               = setting.UpdatedBy,
                    UpdatedDate             = setting.DateUpdated.GetValueOrDefault(),
                    OnlinePaymentMethodName = setting.OnlinePaymentMethodName,
                    PaymentGatewayName      = setting.PaymentGatewayName,
                    Channel                 = setting.Channel,
                    EntryPoint              = setting.EntryPoint,
                    BrandId                 = setting.BrandId
                });

                scope.Complete();
            }

            return(new SavePaymentGatewaysSettingsResult
            {
                PaymentGatewaySettingsId = setting.Id
            });
        }
Exemplo n.º 4
0
        public SavePaymentGatewaysSettingsResult Add(SavePaymentGatewaysSettingsData model)
        {
            var validationResult = new SavePaymentGatewaySettingsValidator(_repository, true).Validate(model);

            if (!validationResult.IsValid)
            {
                throw new RegoValidationException(validationResult);
            }

            var setting = new PaymentGatewaySettings
            {
                Id      = Guid.NewGuid(),
                BrandId = model.Brand,
                OnlinePaymentMethodName = model.OnlinePaymentMethodName,
                PaymentGatewayName      = model.PaymentGatewayName,
                Channel     = model.Channel,
                EntryPoint  = model.EntryPoint,
                Remarks     = model.Remarks,
                Status      = Status.Inactive,
                DateCreated = _paymentQueries.GetBrandDateTimeOffset(model.Brand),
                CreatedBy   = _actorInfoProvider.Actor.UserName
            };

            _repository.PaymentGatewaySettings.Add(setting);

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                _repository.SaveChanges();

                _eventBus.Publish(new PaymentGatewaySettingCreated
                {
                    Id                      = setting.Id,
                    CreatedBy               = setting.CreatedBy,
                    CreatedDate             = setting.DateCreated,
                    OnlinePaymentMethodName = setting.OnlinePaymentMethodName,
                    PaymentGatewayName      = setting.PaymentGatewayName,
                    Channel                 = setting.Channel,
                    EntryPoint              = setting.EntryPoint,
                    BrandId                 = setting.BrandId
                });

                scope.Complete();
            }

            return(new SavePaymentGatewaysSettingsResult
            {
                PaymentGatewaySettingsId = setting.Id
            });
        }
        public void Can_edit_paymentGatewaySettings()
        {
            // Arrange
            var brand = Container.Resolve <BrandTestHelper>().CreateBrand(isActive: true);

            var paymentGatewaySettings = Container.Resolve <PaymentTestHelper>().CreatePaymentGatewaySettings(
                brand.Id,
                enable: false,
                onlinePaymentMethodName: "TEST PAYMENT NAME1",
                paymentGatewayName: "XXPAY",
                channel: 99,
                entryPoint: "http://test.com/payment/issue",
                remarks: "ADD SETTING REMARK");


            var editData = new SavePaymentGatewaysSettingsData
            {
                Id    = paymentGatewaySettings.Id,
                Brand = paymentGatewaySettings.BrandId,
                OnlinePaymentMethodName = "Modified Name",
                PaymentGatewayName      = "YYPAY",
                Channel    = 100,
                EntryPoint = "http://changedDomain.com/payment/issue",
                Remarks    = "Edit SETTING REMARK"
            };
            // Act
            var response = _commands.Edit(editData);

            //Assert
            response.PaymentGatewaySettingsId.Should().Be(paymentGatewaySettings.Id);

            var settings = _paymentRepository.PaymentGatewaySettings.Single(x => x.Id == paymentGatewaySettings.Id);

            settings.Should().NotBeNull();
            settings.BrandId.Should().NotBeEmpty();
            settings.OnlinePaymentMethodName.ShouldBeEquivalentTo("Modified Name");
            settings.PaymentGatewayName.ShouldBeEquivalentTo("YYPAY");
            settings.Channel.ShouldBeEquivalentTo(100);
            settings.EntryPoint.ShouldBeEquivalentTo("http://changedDomain.com/payment/issue");
            settings.Remarks.ShouldBeEquivalentTo("Edit SETTING REMARK");
            settings.Status.Should().Be(Status.Inactive);
            settings.UpdatedBy.ShouldBeEquivalentTo(_actorInfoProvider.Actor.UserName);
            settings.DateUpdated.Should().BeCloseTo(DateTime.Now, 60000);
            settings.ActivatedBy.Should().BeNull();
            settings.DateActivated.Should().NotHaveValue();
            settings.DeactivatedBy.Should().BeNull();
            settings.DateDeactivated.Should().NotHaveValue();
        }
        public void Should_return_false_if_onlinePaymentMethodName_isnull()
        {
            // Arrange
            var brand = Container.Resolve <BrandTestHelper>().CreateBrand(isActive: true);

            var savePaymentSettingsCommand = new SavePaymentGatewaysSettingsData
            {
                Brand = brand.Id,
                PaymentGatewayName = "XPAY",
                Channel            = 1,
                EntryPoint         = "http://domain.com"
            };

            // Act
            var response = _commands.ValidateThatPaymentGatewaySettingsCanBeAdded(savePaymentSettingsCommand);

            //Assert
            response.IsValid.Should().Be(false);
            response.Errors.First().ErrorMessage.Should().Be(PaymentGatewaySettingsErrors.RequiredField.ToString());
        }
        public void Can_add_paymentGatewaySettings()
        {
            // Arrange
            var brand = Container.Resolve <BrandTestHelper>().CreateBrand(isActive: true);

            // Act
            var addData = new SavePaymentGatewaysSettingsData
            {
                Brand = brand.Id,
                OnlinePaymentMethodName = "TEST PAYMENT NAME1",
                PaymentGatewayName      = "XXPAY",
                Channel    = 99,
                EntryPoint = "http://test.com/payment/issue",
                Remarks    = "ADD NEW SETTING REMARK"
            };
            // Act
            var response = _commands.Add(addData);

            //Assert
            response.PaymentGatewaySettingsId.Should().NotBeEmpty();

            var newSettingId = response.PaymentGatewaySettingsId;
            var settings     = _paymentRepository.PaymentGatewaySettings.Single(x => x.Id == newSettingId);

            settings.Should().NotBeNull();
            settings.BrandId.Should().NotBeEmpty();
            settings.OnlinePaymentMethodName.ShouldBeEquivalentTo("TEST PAYMENT NAME1");
            settings.PaymentGatewayName.ShouldBeEquivalentTo("XXPAY");
            settings.Channel.ShouldBeEquivalentTo(99);
            settings.EntryPoint.ShouldBeEquivalentTo("http://test.com/payment/issue");
            settings.Remarks.ShouldBeEquivalentTo("ADD NEW SETTING REMARK");
            settings.Status.Should().Be(Status.Inactive);
            settings.CreatedBy.ShouldBeEquivalentTo(_actorInfoProvider.Actor.UserName);
            settings.DateCreated.Should().BeCloseTo(DateTime.Now, 60000);
            settings.UpdatedBy.Should().BeNull();
            settings.DateUpdated.Should().NotHaveValue();
            settings.ActivatedBy.Should().BeNull();
            settings.DateActivated.Should().NotHaveValue();
            settings.DeactivatedBy.Should().BeNull();
            settings.DateDeactivated.Should().NotHaveValue();
        }
Exemplo n.º 8
0
        public PaymentGatewaySettings CreatePaymentGatewaySettings(Guid brandId, bool enable      = true,
                                                                   string onlinePaymentMethodName = "", string paymentGatewayName = "XPAY", int channel = -1,
                                                                   string entryPoint = "http://domain.com", string remarks        = "some remarks")
        {
            if (string.IsNullOrEmpty(onlinePaymentMethodName))
            {
                onlinePaymentMethodName = TestDataGenerator.GetRandomString(50);
            }
            if (channel == -1)
            {
                channel = TestDataGenerator.GetRandomNumber(99999, 1);
            }
            var model = new SavePaymentGatewaysSettingsData
            {
                Brand = brandId,
                OnlinePaymentMethodName = onlinePaymentMethodName,
                Channel            = channel,
                PaymentGatewayName = paymentGatewayName,
                EntryPoint         = entryPoint,
                Remarks            = remarks
            };

            var result = _paymentGatewaySettingsCommands.Add(model);

            var ps =
                _paymentRepository.PaymentGatewaySettings
                .Single(x => x.Id == result.PaymentGatewaySettingsId);

            if (enable)
            {
                _paymentGatewaySettingsCommands.Activate(
                    new ActivatePaymentGatewaySettingsData
                {
                    Id      = ps.Id,
                    Remarks = "remark"
                });
            }

            return(ps);
        }
Exemplo n.º 9
0
        public ValidationResult ValidateThatPaymentGatewaySettingsCanBeEdited(SavePaymentGatewaysSettingsData model)
        {
            var validator = new SavePaymentGatewaySettingsValidator(_repository, false);

            return(validator.Validate(model));
        }