public async Task Handle_AllActivitiesExistAndBelongToSameCard_ReordersActivities() { var dbName = $"{nameof(ReorderActivitiesCommandHandlerTests)}_{nameof(Handle_AllActivitiesExistAndBelongToSameCard_ReordersActivities)}"; using var context = TestApplicationDbContext.Create(dbName); var cancellationToken = new CancellationToken(); var card = Card.Create("card-title"); var activity1 = Activity.Create("activity1-title", 0); var activity2 = Activity.Create("activity2-title", 1); card.AddActivity(activity1); card.AddActivity(activity2); context.Cards.Add(card); await context.SaveChangesAsync(cancellationToken); var handler = new ReorderActivitiesCommandHandler(context, new ActivityService()); var request = new ReorderActivitiesCommand { ActivityIds = new List <int> { 2, 1 } }; await handler.Handle(request, cancellationToken); var activity1FromDb = await context.Activities.FirstOrDefaultAsync(a => a.Id == 1, cancellationToken); var activity2FromDb = await context.Activities.FirstOrDefaultAsync(a => a.Id == 2, cancellationToken); Assert.NotNull(activity1FromDb); Assert.NotNull(activity2FromDb); Assert.Equal(0, activity2FromDb.Order); Assert.Equal(1, activity1FromDb.Order); }
public async Task Handle_AnyActivityNotBelongsToSameCard_ThrowsInvalidOperationApplicationException() { var dbName = $"{nameof(ReorderActivitiesCommandHandlerTests)}_{nameof(Handle_AnyActivityNotBelongsToSameCard_ThrowsInvalidOperationApplicationException)}"; using var context = TestApplicationDbContext.Create(dbName); var cancellationToken = new CancellationToken(); var card1 = Card.Create("card1-title"); var card2 = Card.Create("card2-title"); var activity1 = Activity.Create("activity1-title"); var activity2 = Activity.Create("activity2-title"); card1.AddActivity(activity1); card2.AddActivity(activity2); context.Cards.AddRange(card1, card2); await context.SaveChangesAsync(cancellationToken); var handler = new ReorderActivitiesCommandHandler(context, new ActivityService()); var request = new ReorderActivitiesCommand { ActivityIds = new List <int> { 1, 2 } }; Task <Unit> action() => handler.Handle(request, cancellationToken); await Assert.ThrowsAsync <InvalidOperationApplicationException>(action); }
public async Task Authorise_FirstActivityId_CallsHasPermissionForActivity_CanEditActivity() { var permission = BoardUserPermission.CAN_EDIT_ACTIVITY; var expectedResult = true; var cancellationToken = new CancellationToken(); _currentUserPermissionService .Setup(s => s.HasPermissionForActivity( It.IsAny <int>(), It.Is <BoardUserPermission>(p => p == permission), cancellationToken)) .ReturnsAsync(expectedResult); var authorizer = new ReorderActivitiesAuthorizer(_currentUserPermissionService.Object); var request = new ReorderActivitiesCommand { ActivityIds = new List <int> { 1 } }; var result = await authorizer.Authorise(request, cancellationToken); Assert.Equal(expectedResult, result); _currentUserPermissionService .Verify(s => s.HasPermissionForActivity(It.IsAny <int>(), It.Is <BoardUserPermission>(p => p == permission), cancellationToken), Times.Once); }
public async Task Authorise_ActivityIdsEmpty_ReturnsTrue() { var authorizer = new ReorderActivitiesAuthorizer(_currentUserPermissionService.Object); var request = new ReorderActivitiesCommand { ActivityIds = new List <int>() }; var cancellationToken = new CancellationToken(); var result = await authorizer.Authorise(request, cancellationToken); Assert.True(result); }
public async Task Handle_AnyActivityIdNotExists_ThrowsNotFoundApplicationException() { var dbName = $"{nameof(ReorderActivitiesCommandHandlerTests)}_{nameof(Handle_AnyActivityIdNotExists_ThrowsNotFoundApplicationException)}"; using var context = TestApplicationDbContext.Create(dbName); var cancellationToken = new CancellationToken(); var activity = Activity.Create("activity-title"); context.Activities.Add(activity); await context.SaveChangesAsync(cancellationToken); var handler = new ReorderActivitiesCommandHandler(context, new ActivityService()); var request = new ReorderActivitiesCommand { ActivityIds = new List <int> { 1, 2 } }; Task <Unit> action() => handler.Handle(request, cancellationToken); await Assert.ThrowsAsync <NotFoundApplicationException>(action); }
public async Task <Unit> ReorderActivities(ReorderActivitiesCommand command) => await _mediator.Send(command);