public async Task Handle_GivenValidId_LoginUserIsNotLeader_ThrowsException()
        {
            // Login user is member
            var currentUserServiceMock = new Mock <ICurrentUserService>();

            currentUserServiceMock.Setup(m => m.UserId)
            .Returns(memberId.ToString());
            var sut = new UpdateTeamCommandHandler(_context, currentUserServiceMock.Object);

            var command = new UpdateTeamCommand
            {
                Id          = validId.ToString(),
                Name        = "Change team name 1.",
                Description = "New description.",
                Users       = new List <UserModel>
                {
                    new UserModel()
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = "TestUser1"
                    }
                }
            };

            await Should.ThrowAsync <NotOwnedException>(() =>
                                                        sut.Handle(command, CancellationToken.None));
        }
        public UpdateTeamCommandTests() : base()
        {
            // Login user is leader
            var currentUserServiceMock = new Mock <ICurrentUserService>();

            currentUserServiceMock.Setup(m => m.UserId)
            .Returns(leaderId.ToString());
            _sut = new UpdateTeamCommandHandler(_context, currentUserServiceMock.Object);
        }
        public async Task HandleShouldFailWhenRecordWithSameNameAlreadyExist()
        {
            // Arrange
            var id          = Guid.NewGuid();
            var name        = "name";
            var image       = "image";
            var description = "description";
            var layout      = "layout";
            var driverWait  = "Yes";
            var operators   = new List <Guid>()
            {
                Guid.NewGuid()
            };
            var filterContent = "{site:123456}";
            var version       = 1;

            var team = new Team(TeamId.With(id), new Name(name));

            team.SetVersion(version);


            var teamWriteRepositoryMock = new Mock <ITeamWriteRepository>();

            teamWriteRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <Team>())).Throws <UniqueKeyException>();
            var teamWriteRepository = teamWriteRepositoryMock.Object;

            var teamReadRepositoryMock = new Mock <ITeamReadRepository>();

            teamReadRepositoryMock.Setup(x => x.GetAsync(id)).Returns(Task.FromResult(team));
            var teamReadRepository = teamReadRepositoryMock.Object;

            var versionProviderMock = new Mock <IVersionProvider>();

            versionProviderMock.Setup(x => x.Generate()).Returns(version);
            var versionProvider = versionProviderMock.Object;

            var command = new UpdateTeamCommand(id,
                                                name,
                                                image,
                                                description,
                                                driverWait,
                                                layout,
                                                operators,
                                                filterContent,
                                                version);

            var handler = new UpdateTeamCommandHandler(teamWriteRepository, teamReadRepository, versionProvider);

            // Act
            var result = await handler.Handle(command, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Code == HandlerFaultCode.Conflict.Name &&
                                                 x.Message == HandlerFailures.ConflictTeam &&
                                                 x.Target == "name");
        }
        public async Task HandleShouldReturnOk()
        {
            // Arrange
            var id          = Guid.NewGuid();
            var name        = "name";
            var image       = "image";
            var description = "description";
            var layout      = "layout";
            var driverWait  = "Yes";
            var operators   = new List <Guid>()
            {
                Guid.NewGuid()
            };
            var filterContent = "{site:123456}";
            var version       = 1;

            var team = new Team(TeamId.With(id), new Name(name));

            team.SetVersion(version);


            var teamWriteRepositoryMock = new Mock <ITeamWriteRepository>();

            teamWriteRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <Team>())).Returns(Task.CompletedTask);
            var teamWriteRepository = teamWriteRepositoryMock.Object;

            var teamReadRepositoryMock = new Mock <ITeamReadRepository>();

            teamReadRepositoryMock.Setup(x => x.GetAsync(id)).Returns(Task.FromResult(team));
            var teamReadRepository = teamReadRepositoryMock.Object;

            var versionProviderMock = new Mock <IVersionProvider>();

            versionProviderMock.Setup(x => x.Generate()).Returns(version);
            var versionProvider = versionProviderMock.Object;

            var command = new UpdateTeamCommand(id,
                                                name,
                                                image,
                                                description,
                                                driverWait,
                                                layout,
                                                operators,
                                                filterContent,
                                                version);

            var handler = new UpdateTeamCommandHandler(teamWriteRepository, teamReadRepository, versionProvider);

            // Act
            var result = await handler.Handle(command, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeFalse();
            result.Should().BeOfType(typeof(Result));
        }
        public async Task HandleShouldReturnFailWhenNotFound()
        {
            // Arrange
            var id          = Guid.NewGuid();
            var name        = "name";
            var image       = "image";
            var description = "description";
            var layout      = "layout";
            var driverWait  = "Yes";
            var operators   = new List <Guid>()
            {
                Guid.NewGuid()
            };
            var filterContent = "{site:123456}";
            var version       = 1;


            var teamWriteRepositoryMock = new Mock <ITeamWriteRepository>();

            teamWriteRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <Team>())).Returns(Task.CompletedTask);
            var teamWriteRepository = teamWriteRepositoryMock.Object;

            var teamReadRepositoryMock = new Mock <ITeamReadRepository>();

            teamReadRepositoryMock.Setup(x => x.GetAsync(id)).Throws <EntityNotFoundDbException>();
            var teamReadRepository = teamReadRepositoryMock.Object;

            var versionProviderMock = new Mock <IVersionProvider>();

            versionProviderMock.Setup(x => x.Generate()).Returns(version);
            var versionProvider = versionProviderMock.Object;

            var command = new UpdateTeamCommand(id,
                                                name,
                                                image,
                                                description,
                                                driverWait,
                                                layout,
                                                operators,
                                                filterContent,
                                                version);

            var handler = new UpdateTeamCommandHandler(teamWriteRepository, teamReadRepository, versionProvider);

            // Act
            var result = await handler.Handle(command, CancellationToken.None);



            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Code == HandlerFaultCode.NotFound.Name &&
                                                 x.Message == HandlerFailures.TeamNotFound &&
                                                 x.Target == "id");
        }
Exemple #6
0
        public async Task UpdateTeamCommand_Can_Update_Team()
        {
            using (var dbContext = GetDbContext("UpdateTeamCommand_Can_Update_Team"))
            {
                var fakeRepo = new TeamRepository(dbContext);
                await fakeRepo.AddAsync(new Domain.Entities.Team
                {
                    Name      = "TeamName",
                    Longitude = 8.11,
                    Latitude  = 9.43,
                });
            }

            using (var dbContext = GetDbContext("UpdateTeamCommand_Can_Update_Team"))
            {
                var fakeRepo   = new TeamRepository(dbContext);
                var fakeLogger = new Mock <ILogger <UpdateTeamCommandHandler> >();
                var handler    = new UpdateTeamCommandHandler(fakeRepo, GetMapper(), fakeLogger.Object);

                var command = new UpdateTeamCommand
                {
                    Id        = 1,
                    Name      = "NewTeamName",
                    Longitude = 2.11,
                    Latitude  = 6.43,
                };

                var result = await handler.Handle(command, default);

                Assert.False(result.Notifications.HasErrors());

                Assert.Equal(command.Name, result.TeamLookupModel.Name);
                Assert.Equal(command.Longitude, result.TeamLookupModel.Longitude);
                Assert.Equal(command.Latitude, result.TeamLookupModel.Latitude);
            }
        }