Beispiel #1
0
        public async Task Then_If_It_Is_Not_A_Valid_Receiver_The_FailedTransferReceiver_Flag_Is_Set()
        {
            //Arrange
            _employerAccountService.Setup(x =>
                                          x.GetTransferConnections(ExpectedTransferSenderEmployerAccountId))
            .ReturnsAsync(new List <EmployerTransferConnection> {
                new EmployerTransferConnection
                {
                    FundingEmployerAccountId             = 1,
                    FundingEmployerAccountName           = "Test",
                    FundingEmployerHashedAccountId       = "123EDC",
                    FundingEmployerPublicHashedAccountId = "YTR34"
                }
            });
            var command = new CreateReservationLevyEmployerCommand
            {
                TransferSenderEmployerAccountId = ExpectedTransferSenderEmployerAccountId,
                AccountId            = ExpectedAccountId,
                AccountLegalEntityId = 234,
                TransferSenderId     = 245
            };

            //Act
            var result = await _validator.ValidateAsync(command);

            //Assert
            Assert.IsTrue(result.FailedTransferReceiverCheck);
        }
Beispiel #2
0
        public async Task Then_If_There_Is_A_Transfer_Id_It_Is_Checked_To_See_If_It_Is_A_Valid_Receiver_And_The_Api_Is_Not_Checked_And_FailedAutoReservationCheck_Is_False()
        {
            //Arrange
            _employerAccountService.Setup(x =>
                                          x.GetTransferConnections(ExpectedAccountHashedId))
            .ReturnsAsync(new List <EmployerTransferConnection> {
                new EmployerTransferConnection
                {
                    FundingEmployerAccountId             = 78954,
                    FundingEmployerAccountName           = "Test",
                    FundingEmployerHashedAccountId       = "123EDC",
                    FundingEmployerPublicHashedAccountId = ExpectedTransferSenderEmployerAccountId
                }
            });
            var command = new CreateReservationLevyEmployerCommand
            {
                AccountId                       = ExpectedAccountId,
                AccountLegalEntityId            = 234,
                TransferSenderId                = 345,
                TransferSenderEmployerAccountId = ExpectedTransferSenderEmployerAccountId
            };

            //Act
            var result = await _validator.ValidateAsync(command);

            //Assert
            _employerAccountService.Verify(x => x.GetTransferConnections(ExpectedAccountHashedId));
            Assert.IsFalse(result.FailedTransferReceiverCheck);
            _apiClient.Verify(x => x.Get <AccountReservationStatusResponse>(It.IsAny <AccountReservationStatusRequest>()), Times.Never);
            Assert.IsFalse(result.FailedAutoReservationCheck);
        }
Beispiel #3
0
        public async Task ThenCallsReservationServiceToCreateReservation(
            CreateReservationLevyEmployerCommand request,
            Guid id,
            [Frozen] Mock <IValidator <CreateReservationLevyEmployerCommand> > validator,
            [Frozen] Mock <IReservationService> service,
            CreateReservationLevyEmployerCommandHandler handler)
        {
            //Arrange
            request.TransferSenderId = null;
            validator.Setup(x => x.ValidateAsync(request))
            .ReturnsAsync(new ValidationResult
            {
                ValidationDictionary        = new Dictionary <string, string>(),
                FailedAutoReservationCheck  = false,
                FailedTransferReceiverCheck = false
            });

            service.Setup(x =>
                          x.CreateReservationLevyEmployer(It.IsAny <Guid>(), request.AccountId, request.AccountLegalEntityId, request.TransferSenderId, request.UserId))
            .ReturnsAsync(new CreateReservationResponse {
                Id = id
            });

            //Act
            var result = await handler.Handle(request, CancellationToken.None);

            //Assert
            service.Verify(x => x.CreateReservationLevyEmployer(It.IsAny <Guid>(), request.AccountId, request.AccountLegalEntityId, request.TransferSenderId, request.UserId));
            Assert.AreEqual(id, result.ReservationId);
        }
Beispiel #4
0
        public async Task Then_If_The_Account_Is_Not_A_Levy_Account_Then_A_Reservation_Is_Not_Created_And_Null_Returned(
            CreateReservationLevyEmployerCommand request,
            Guid id,
            [Frozen] Mock <IValidator <CreateReservationLevyEmployerCommand> > validator,
            [Frozen] Mock <IReservationService> service,
            CreateReservationLevyEmployerCommandHandler handler
            )
        {
            //Arrange
            request.TransferSenderId = null;
            validator.Setup(x => x.ValidateAsync(request))
            .ReturnsAsync(new ValidationResult
            {
                ValidationDictionary       = new Dictionary <string, string>(),
                FailedAutoReservationCheck = true
            });
            service.Setup(x =>
                          x.CreateReservationLevyEmployer(It.IsAny <Guid>(), request.AccountId, request.AccountLegalEntityId, request.TransferSenderId, request.UserId))
            .ReturnsAsync(new CreateReservationResponse {
                Id = id
            });

            //Act
            var result = await handler.Handle(request, CancellationToken.None);

            //Assert
            service.Verify(x => x.CreateReservationLevyEmployer(It.IsAny <Guid>(), It.IsAny <long>(), It.IsAny <long>(), It.IsAny <long?>(), It.IsAny <Guid?>()), Times.Never);
            Assert.IsNull(result);
        }
Beispiel #5
0
        public async Task AndTheCommandIsValid_ThenNoErrorsAdded()
        {
            //Arrange
            var command = new CreateReservationLevyEmployerCommand
            {
                AccountId            = ExpectedAccountId,
                AccountLegalEntityId = 324234
            };

            //Act
            var result = await _validator.ValidateAsync(command);

            //Assert
            Assert.True(result.IsValid());
        }
Beispiel #6
0
        public async Task Then_The_AccountId_Is_Unable_To_Create_Auto_Reservations_A_Flag_Is_Set()
        {
            //Arrange
            var command = new CreateReservationLevyEmployerCommand
            {
                AccountId            = 123,
                AccountLegalEntityId = 234
            };

            //Act
            var result = await _validator.ValidateAsync(command);

            //Assert
            Assert.IsTrue(result.FailedAutoReservationCheck);
        }
Beispiel #7
0
        public async Task AndOnlyAccountIdInvalid_ThenAddsError()
        {
            //Arrange
            var command = new CreateReservationLevyEmployerCommand
            {
                AccountId            = -234,
                AccountLegalEntityId = 5131
            };

            //Act
            var result = await _validator.ValidateAsync(command);

            //Assert
            Assert.False(result.IsValid());
            Assert.True(result.ValidationDictionary.ContainsKey(nameof(command.AccountId)));
            Assert.False(result.ValidationDictionary.ContainsKey(nameof(command.AccountLegalEntityId)));
        }
Beispiel #8
0
        public void Then_Throws_A_TransferSender_Not_Allowed_Exception_If_Has_Failed_Validation_For_TransferSender(
            CreateReservationLevyEmployerCommand request,
            [Frozen] Mock <IValidator <CreateReservationLevyEmployerCommand> > validator,
            CreateReservationLevyEmployerCommandHandler handler
            )
        {
            //Arrange
            validator.Setup(x => x.ValidateAsync(It.IsAny <CreateReservationLevyEmployerCommand>()))
            .ReturnsAsync(new ValidationResult {
                ValidationDictionary = new Dictionary <string, string>( ), FailedTransferReceiverCheck = true
            });

            //Act
            Assert.ThrowsAsync <TransferSenderNotAllowedException>(() => handler.Handle(request, CancellationToken.None));

            //Assert
            validator.Verify(x => x.ValidateAsync(request), Times.Once());
        }
Beispiel #9
0
        public void ThenTheCommandGetsValidatedAndThrowsAnExceptionIfNotValid(
            CreateReservationLevyEmployerCommand request,
            [Frozen] Mock <IValidator <CreateReservationLevyEmployerCommand> > validator,
            CreateReservationLevyEmployerCommandHandler handler)
        {
            //Arrange
            validator.Setup(x => x.ValidateAsync(It.IsAny <CreateReservationLevyEmployerCommand>()))
            .ReturnsAsync(new ValidationResult {
                ValidationDictionary = new Dictionary <string, string> {
                    { "", "" }
                }
            });
            //Act
            Assert.ThrowsAsync <ValidationException>(() => handler.Handle(request, CancellationToken.None));

            //Assert
            validator.Verify(x => x.ValidateAsync(request), Times.Once());
        }
Beispiel #10
0
        public async Task Then_The_AccountId_Is_Checked_If_There_Is_No_TransferId_To_Make_Sure_It_Is_Able_To_Create_Levy_Reservations()
        {
            //Arrange

            var command = new CreateReservationLevyEmployerCommand
            {
                AccountId            = ExpectedAccountId,
                AccountLegalEntityId = 234
            };

            //Act
            var result = await _validator.ValidateAsync(command);

            //Assert
            _apiClient.Verify(x => x.Get <AccountReservationStatusResponse>(
                                  It.Is <AccountReservationStatusRequest>(c => c.BaseUrl.Equals(ExpectedUrl) &&
                                                                          c.AccountId.Equals(ExpectedAccountId))), Times.Once);
            Assert.IsFalse(result.FailedAutoReservationCheck);
        }