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); }
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); }
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); }
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); } }