public async void ShouldQueueNextExecution() { var fixture = new Fixture(); var queueClient = new Mock <IQueueClient>(); var mediator = new Mock <IMediator>(); var userService = new Mock <ICurrentUserService>(); var createCommand = fixture.Create <CreateManagementJobCommand>(); using (var dbContext = DbContextHelpers.CreateDatabaseContext()) { var createCommandHandler = new CreateManagementJobCommandHandler(dbContext); var createdId = await createCommandHandler.Handle(createCommand, CancellationToken.None); // set the job to "IsActive" var startCommand = new StartManagementJobCommand { ManagementJobId = createdId }; var startCommandHandler = new StartManagementJobCommandHandler(dbContext); await startCommandHandler.Handle(startCommand, CancellationToken.None); var executeCommand = new ExecuteManagementJobCommand { ManagementJobId = createdId }; var executeCommandHandler = new ExecuteManagementJobCommandHandler(dbContext, queueClient.Object, mediator.Object, userService.Object); await executeCommandHandler.Handle(executeCommand, CancellationToken.None); // should not call queue client because job is set to inactive queueClient.Verify(x => x.EnqueueManagementJob(executeCommand), Times.Once); } }
public async void ShouldAddUser() { var fixture = new Fixture(); using (DatabaseContext dbContext = DbContextHelpers.CreateDatabaseContext()) { var command = fixture.Create <AddUserCommand>(); var handler = new AddUserCommandHandler(dbContext); await handler.Handle(command, CancellationToken.None); var created = await dbContext.Users.FindAsync(command.UserId); created.Id.Should().Be(command.UserId); } }
public async void ShouldThrowIfJobDoesNotExist() { var fixture = new Fixture(); var queueClient = new Mock <IQueueClient>(); var mediator = new Mock <IMediator>(); var userService = new Mock <ICurrentUserService>(); // id of management job will not exist in database, therefore execption will be thrown var command = fixture.Create <ExecuteManagementJobCommand>(); using (var dbContext = DbContextHelpers.CreateDatabaseContext()) { var handler = new ExecuteManagementJobCommandHandler(dbContext, queueClient.Object, mediator.Object, userService.Object); await Assert.ThrowsAsync <ManagementJobNotFoundException>(() => handler.Handle(command, CancellationToken.None)); } }
public async void CreateManagementJobCommand_InsertsIntoDatabase() { var fixture = new Fixture(); using (DatabaseContext dbContext = DbContextHelpers.CreateDatabaseContext()) { var command = fixture.Create <CreateManagementJobCommand>(); var handler = new CreateManagementJobCommandHandler(dbContext); var result = await handler.Handle(command, CancellationToken.None); result.Should().NotBeEmpty(); var created = await dbContext.ManagementJobs.FindAsync(result); created.PlaylistId.Should().Be(command.PlaylistId); } }