public async Task IfInvalidVacancyStatus_ShouldThrowError(VacancyStatus invalidCloneStatus) { var newVacancyId = Guid.NewGuid(); var existingVacancy = _autoFixture.Build <Vacancy>().With(c => c.Status, invalidCloneStatus).Create(); var currentTime = DateTime.UtcNow; var startDate = DateTime.Now.AddDays(20); var closingDate = DateTime.Now.AddDays(10); var user = new VacancyUser { Name = "Test", Email = "*****@*****.**", UserId = "123" }; var command = new CloneVacancyCommand( cloneVacancyId: existingVacancy.Id, newVacancyId: newVacancyId, user: user, sourceOrigin: SourceOrigin.EmployerWeb, startDate: startDate, closingDate: closingDate); var mockRepository = new Mock <IVacancyRepository>(); var mockTimeProvider = new Mock <ITimeProvider>(); mockTimeProvider.Setup(x => x.Now).Returns(currentTime); mockRepository.Setup(x => x.GetVacancyAsync(existingVacancy.Id)).ReturnsAsync(existingVacancy); var handler = new CloneVacancyCommandHandler( Mock.Of <ILogger <CloneVacancyCommandHandler> >(), mockRepository.Object, Mock.Of <IMessaging>(), mockTimeProvider.Object ); await Assert.ThrowsAsync <InvalidStateException>(() => handler.Handle(command, new CancellationToken())); }
public async Task CheckClonedVacancyHasCorrectFieldsSet() { var newVacancyId = Guid.NewGuid(); var existingVacancy = GetTestVacancy(); var currentTime = DateTime.UtcNow; Vacancy clone = null; var mockRepository = new Mock <IVacancyRepository>(); var mockTimeProvider = new Mock <ITimeProvider>(); mockTimeProvider.Setup(x => x.Now).Returns(currentTime); mockRepository.Setup(x => x.GetVacancyAsync(existingVacancy.Id)).ReturnsAsync(existingVacancy); mockRepository.Setup(x => x.CreateAsync(It.IsAny <Vacancy>())) .Callback <Vacancy>(arg => clone = arg) .Returns(Task.CompletedTask); var handler = new CloneVacancyCommandHandler( Mock.Of <ILogger <CloneVacancyCommandHandler> >(), mockRepository.Object, Mock.Of <IMessaging>(), mockTimeProvider.Object ); var user = new VacancyUser { Name = "Test", Email = "*****@*****.**", UserId = "123" }; var command = new CloneVacancyCommand(cloneVacancyId: existingVacancy.Id, newVacancyId: newVacancyId, user: user, sourceOrigin: SourceOrigin.EmployerWeb); await handler.Handle(command, new CancellationToken()); AssertUpdatedProperties(existingVacancy, currentTime, clone, command); AssertNulledOutProperties(clone); AssertUnchangedProperties(existingVacancy, clone); }