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()));
        }
Example #2
0
        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);
        }