Ejemplo n.º 1
0
        public void Then_an_application_with_an_invalid_account_id_is_rejected()
        {
            //Arrange
            var incentiveApplication = _fixture.Create <IncentiveApplication>();
            var command = new SubmitIncentiveApplicationCommand(incentiveApplication.Id, _fixture.Create <long>(), _fixture.Create <DateTime>(), _fixture.Create <string>(), _fixture.Create <string>());

            _mockDomainRepository.Setup(x => x.Find(command.IncentiveApplicationId))
            .ReturnsAsync(incentiveApplication);

            // Act
            Func <Task> action = async() => await _sut.Handle(command);

            // Assert
            action.Should().Throw <InvalidRequestException>();
            _mockDomainRepository.Verify(m => m.Save(incentiveApplication), Times.Never);
        }
Ejemplo n.º 2
0
        public async Task Then_a_valid_application_is_updated_in_the_domain_repository()
        {
            //Arrange
            var incentiveApplication = _fixture.Create <IncentiveApplication>();
            var command = new SubmitIncentiveApplicationCommand(incentiveApplication.Id, incentiveApplication.AccountId, _fixture.Create <DateTime>(), _fixture.Create <string>(), _fixture.Create <string>());

            _mockDomainRepository.Setup(x => x.Find(command.IncentiveApplicationId))
            .ReturnsAsync(incentiveApplication);

            // Act
            await _sut.Handle(command);

            // Assert
            incentiveApplication.Status.Should().Be(IncentiveApplicationStatus.Submitted);
            incentiveApplication.DateSubmitted.Should().Be(command.DateSubmitted);
            incentiveApplication.SubmittedByEmail.Should().Be(command.SubmittedByEmail);
            incentiveApplication.SubmittedByName.Should().Be(command.SubmittedByName);

            _mockDomainRepository.Verify(m => m.Save(incentiveApplication), Times.Once);
        }
Ejemplo n.º 3
0
        public void Then_an_application_with_an_already_submitted_uln_is_rejected()
        {
            var incentiveApplication = _fixture.Create <IncentiveApplication>();

            incentiveApplication.SetApprenticeships(_fixture.CreateMany <Apprenticeship>(3));

            var command = new SubmitIncentiveApplicationCommand(incentiveApplication.Id, incentiveApplication.AccountId, _fixture.Create <DateTime>(), _fixture.Create <string>(), _fixture.Create <string>());

            _mockUlnValidationService.Setup(x => x.UlnAlreadyOnSubmittedIncentiveApplication(incentiveApplication.Apprenticeships[1].ULN)).ReturnsAsync(true);

            _mockDomainRepository.Setup(x => x.Find(command.IncentiveApplicationId))
            .ReturnsAsync(incentiveApplication);

            // Act
            Func <Task> action = async() => await _sut.Handle(command);

            // Assert
            action.Should().Throw <UlnAlreadySubmittedException>();
            _mockDomainRepository.Verify(m => m.Save(incentiveApplication), Times.Never);
        }
Ejemplo n.º 4
0
        public async Task Then_application_with_ineligible_employment_start_date_is_removed(DateTime employmentStartdate, bool isRemoved)
        {
            //Arrange
            var apprentice = new Apprenticeship(Guid.NewGuid(), _fixture.Create <long>(), _fixture.Create <string>(),
                                                _fixture.Create <string>(), _fixture.Create <DateTime>(), _fixture.Create <long>(), _fixture.Create <DateTime>(),
                                                ApprenticeshipEmployerType.NonLevy, _fixture.Create <long>(), _fixture.Create <string>(), employmentStartdate);

            var incentiveApplication = _fixture.Create <IncentiveApplication>();

            incentiveApplication.SetApprenticeships(new List <Apprenticeship> {
                apprentice
            });

            var command = new SubmitIncentiveApplicationCommand(incentiveApplication.Id, incentiveApplication.AccountId, _fixture.Create <DateTime>(), _fixture.Create <string>(), _fixture.Create <string>());

            _mockDomainRepository.Setup(x => x.Find(command.IncentiveApplicationId))
            .ReturnsAsync(incentiveApplication);


            // Act
            await _sut.Handle(command);

            // Assert
            incentiveApplication.Status.Should().Be(IncentiveApplicationStatus.Submitted);
            _mockDomainRepository.Verify(m => m.Save(incentiveApplication), Times.Once);

            // Assert
            if (isRemoved)
            {
                incentiveApplication.Apprenticeships.Count.Should().Be(0);
            }
            else
            {
                incentiveApplication.Apprenticeships.Count.Should().Be(1);
                incentiveApplication.Apprenticeships.Single().Id.Should().Be(apprentice.Id);
            }
        }