public async Task ThrowDuplicateException_WhenGroupNameExists()
        {
            var request = new UpdateGroupCommand
            {
                Id                  = 1,
                Name                = "Group 2",
                StudentsCount       = 10,
                SpecialityId        = 1,
                Year                = 1,
                EducationalDegreeId = 1
            };

            var handler = new UpdateGroupCommandHandler(Context);

            var exception = Assert.ThrowsAsync <DuplicateException>(async() => await handler.Handle(request, CancellationToken.None));

            Assert.AreEqual(exception.Message, ExceptionMessagesBuilderHelper.GetDuplicateExceptionMessage(nameof(Group), "Name", request.Name));
        }
        public async Task ThrowNotFoundException_WhenGroupIsNotExists()
        {
            var request = new UpdateGroupCommand
            {
                Id                  = 100,
                Name                = "Test Group Edited",
                SpecialityId        = 1,
                StudentsCount       = 10,
                EducationalDegreeId = 1,
                Year                = 1
            };

            var handler = new UpdateGroupCommandHandler(Context);

            var exception = Assert.ThrowsAsync <NotFoundException>(async() => await handler.Handle(request, CancellationToken.None));

            Assert.AreEqual(exception.Message, ExceptionMessagesBuilderHelper.GetNotFoundExceptionMessage(nameof(Group), request.Id));
        }
        public async Task Update_NoChanges_Success()
        {
            await ExecuteWithDb((db) =>
            {
                var handler = new UpdateGroupCommandHandler(
                    MockMediator.Object,
                    db,
                    Mapper,
                    MockAuthorizationService.Object);

                var existingGroup = SeedHelper.GetRandomGroup(db);
                var dto           = Mapper.Map <GroupDto>(existingGroup);

                return(handler.Handle(new UpdateGroupCommand()
                {
                    Group = dto
                }, default(CancellationToken)));
            });
        }
        public async Task Update_IdNotFound_EntityNotFoundException()
        {
            await ExecuteWithDb((db) =>
            {
                var handler = new UpdateGroupCommandHandler(
                    MockMediator.Object,
                    db,
                    Mapper,
                    MockAuthorizationService.Object);

                var dto = SeedHelper.CreateValidNewGroupDto(db, Mapper);
                dto.Id  = int.MaxValue;

                return(handler.Handle(new UpdateGroupCommand()
                {
                    Group = dto
                }, default(CancellationToken)));
            });
        }
예제 #5
0
        public async void UpdateValidGroupTest()
        {
            var command = new ModifyGroupCommand()
            {
                Id          = 1,
                Name        = "The pedrera",
                Memberships = new List <int>()
            };

            command.Memberships.Add(10);
            var handler = new UpdateGroupCommandHandler(Context);

            await handler.Handle(command, CancellationToken.None);

            Group group = Groups.Single(g => g.Id == 1);

            Assert.Equal(command.Name, group.Name);
            Assert.Equal(command.Memberships.Count, group.Memberships.Count);
            Assert.True(group.Memberships.Select(m => m.GroupId == 1 && m.UserId == 10) != null);
        }
        public async Task Update_InvalidId_BadRequestException(int id)
        {
            await ExecuteWithDb(async (db) =>
            {
                var handler = new UpdateGroupCommandHandler(
                    MockMediator.Object,
                    db,
                    Mapper,
                    MockAuthorizationService.Object);

                var randomGroup = SeedHelper.GetRandomGroup(db);
                var dto         = Mapper.Map <GroupDto>(randomGroup);
                dto.Id          = id;

                return(await handler.Handle(new UpdateGroupCommand()
                {
                    Group = dto
                }, default(CancellationToken)));
            });
        }
        public async Task UpdateGroup()
        {
            var request = new UpdateGroupCommand
            {
                Id                  = 1,
                Name                = "Test Group 1 edited",
                StudentsCount       = 10,
                SpecialityId        = 1,
                EducationalDegreeId = 1,
                Year                = 1
            };

            var handler = new UpdateGroupCommandHandler(Context);

            await handler.Handle(request, CancellationToken.None);

            Assert.IsTrue(Context.Groups.Where(x => x.Id == request.Id &&
                                               x.Name == request.Name &&
                                               x.EducationalDegreeId == request.EducationalDegreeId &&
                                               x.SpecialityId == request.SpecialityId &&
                                               x.Year == request.Year).Count() == 1);
        }
        public async Task Update_NameAlreadyUsed_BadRequestException()
        {
            await ExecuteWithDb((db) =>
            {
                var handler = new UpdateGroupCommandHandler(
                    MockMediator.Object,
                    db,
                    Mapper,
                    MockAuthorizationService.Object);

                var existingGroup  = SeedHelper.GetRandomGroup(db);
                var differentGroup = db.Groups
                                     .Where(x => x.Id != existingGroup.Id)
                                     .OrderBy(x => Guid.NewGuid())
                                     .First();
                var dto  = Mapper.Map <GroupDto>(existingGroup);
                dto.Name = differentGroup.Name;

                return(handler.Handle(new UpdateGroupCommand()
                {
                    Group = dto
                }, default(CancellationToken)));
            });
        }