Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 public async Task <Unit> ReorderActivities(ReorderActivitiesCommand command) => await _mediator.Send(command);