public async void Given_GoalDoesExist_When_UpdateTeamLeagueGoal_Then_GoalIsUpdated()
        {
            //Arrange
            var teams  = new TeamsBuilder().Build();
            var league = new TeamLeagueBuilder()
                         .WithCompetitors(teams)
                         .WithRounds()
                         .WithGoals()
                         .Build();
            var players = new PlayerBuilder().Build();
            var player  = players[0];

            var leagues     = Enumerable.Repeat(league, 1);
            var matchGuid   = new Guid("00000000-0000-0000-0000-000000000000");
            var match       = league.GetMatch(matchGuid);
            var matchEntry  = match.MatchEntries.SingleOrDefault(me => me.Team.Name == "Tottenham Hotspur");
            var goalGuid    = matchEntry.Goals.ToList()[0].Guid;
            var contextMock = MockDbContext(
                leagues.AsQueryable(),
                players.AsQueryable()
                );
            var loggerMock = new Mock <ILogger <UpdateTeamLeagueMatchGoalCommandHandler> >();

            var handler = new UpdateTeamLeagueMatchGoalCommandHandler(
                contextMock.Object,
                Mapper.MapperConfig(),
                loggerMock.Object
                );

            //Act
            var command = new UpdateTeamLeagueMatchGoalCommand
            {
                LeagueName = league.Name,
                MatchGuid  = matchGuid,
                TeamName   = "Tottenham Hotspur",
                GoalGuid   = goalGuid,
                Minute     = "1",
                PlayerName = player.FullName
            };

            var goal = await handler.Handle(command, CancellationToken.None);

            //Assert
            goal.Minute.Should().Be("1");
            goal.PlayerFullName.Should().Be(player.FullName);
        }
        public void Given_MatchEntryDoesNotExist_When_AddPlayerToLineup_Then_MatchEntryNotFoundException()
        {
            // Arrange
            var builder = new TeamLeagueBuilder()
                          .WithCompetitors(new TeamsBuilder().Build())
                          .WithRounds();

            var teamLeague = builder.Build();
            var players    = new Domain.Player.Player[] { new Domain.Player.Player {
                                                              FirstName = "John", LastName = "Doe"
                                                          } };

            var contextMock = MockDbContext(
                new List <TeamLeague> {
                teamLeague
            }.AsQueryable(),
                teamLeague.Competitors.Select(c => c.Team).AsQueryable(),
                players.AsQueryable());
            var contextMediator = new Mock <IMediator>();
            var contextLogger   = new Mock <ILogger <AddPlayerToLineupCommandHandler> >();

            var handler = new AddPlayerToLineupCommandHandler(
                contextMock.Object,
                contextMediator.Object,
                Mapper.MapperConfig(),
                contextLogger.Object
                );

            //Act
            var command = new AddPlayerToLineupCommand
            {
                LeagueName = "Premier League",
                MatchGuid  = new Guid("00000000-0000-0000-0000-000000000000"),
                TeamName   = "DoesNotExist",
                Number     = "1",
                Player     = new TeamLeagueMatches.Commands.AddPlayerToLineup.PlayerDto
                {
                    FirstName = "John",
                    LastName  = "Doe"
                }
            };
            Func <Task> func = async() => await handler.Handle(command, CancellationToken.None);

            //Assert
            func.Should().Throw <MatchEntryNotFoundException>();
        }
        public async void Given_AllConditionsPass_When_AddPlayerToLineup_Then_Success()
        {
            // Arrange
            var builder = new TeamLeagueBuilder()
                          .WithCompetitors(new TeamsBuilder().Build())
                          .WithRounds();

            var teamLeague = builder.Build();
            var players    = new Domain.Player.Player[] { new Domain.Player.Player {
                                                              FirstName = "John", LastName = "Doe"
                                                          } };

            var contextMock = MockDbContext(
                new List <TeamLeague> {
                teamLeague
            }.AsQueryable(),
                teamLeague.Competitors.Select(c => c.Team).AsQueryable(),
                players.AsQueryable());
            var contextMediator = new Mock <IMediator>();
            var contextLogger   = new Mock <ILogger <AddPlayerToLineupCommandHandler> >();

            var handler = new AddPlayerToLineupCommandHandler(
                contextMock.Object,
                contextMediator.Object,
                Mapper.MapperConfig(),
                contextLogger.Object
                );

            //Act
            var command = new AddPlayerToLineupCommand {
                LeagueName = "Premier League",
                MatchGuid  = new Guid("00000000-0000-0000-0000-000000000000"),
                TeamName   = "Tottenham Hotspur",
                Number     = "1",
                Player     = new TeamLeagueMatches.Commands.AddPlayerToLineup.PlayerDto
                {
                    FirstName = "John",
                    LastName  = "Doe"
                }
            };
            var result = await handler.Handle(command, CancellationToken.None);

            //Assert
            result.Should().Be(Unit.Value);
            contextMock.Verify(mock => mock.SaveChangesAsync(It.IsAny <CancellationToken>()), Times.Once());
        }
Esempio n. 4
0
        public void Given_PlayerDoesNotExist_When_UpdateTeamLeagueSubstitution_Then_PlayerNotFoundExceptionIsThrown()
        {
            //Arrange
            var teams  = new TeamsBuilder().Build();
            var league = new TeamLeagueBuilder()
                         .WithCompetitors(teams)
                         .WithRounds()
                         .WithSubstitutions()
                         .Build();
            var players = new PlayerBuilder().Build();
            var player  = players[0];

            var leagues          = Enumerable.Repeat(league, 1);
            var matchGuid        = new Guid("00000000-0000-0000-0000-000000000000");
            var match            = league.GetMatch(matchGuid);
            var matchEntry       = match.MatchEntries.SingleOrDefault(me => me.Team.Name == "Tottenham Hotspur");
            var substitutionGuid = matchEntry.Substitutions.ToList()[0].Guid;
            var contextMock      = MockDbContext(
                leagues.AsQueryable(),
                players.AsQueryable()
                );
            var loggerMock = new Mock <ILogger <UpdateTeamLeagueMatchSubstitutionCommandHandler> >();

            var handler = new UpdateTeamLeagueMatchSubstitutionCommandHandler(
                contextMock.Object,
                loggerMock.Object
                );

            //Act
            var command = new UpdateTeamLeagueMatchSubstitutionCommand
            {
                LeagueName       = league.Name,
                MatchGuid        = matchGuid,
                TeamName         = "Tottenham Hotspur",
                SubstitutionGuid = substitutionGuid,
                Minute           = "1",
                PlayerOut        = "DoesNotExist"
            };

            Func <Task> func = async() => await handler.Handle(command, CancellationToken.None);

            //Assert

            func.Should().Throw <PlayerNotFoundException>();
        }
Esempio n. 5
0
        public void Given_LeagueDoesNotExist_When_UpdateTeamLeagueMatchScore_Then_ThrowTeamLeagueNotFoundException()
        {
            //Arrange
            var teams  = new TeamsBuilder().Build();
            var league = new TeamLeagueBuilder()
                         .WithCompetitors(teams)
                         .WithRounds()
                         .Build();

            var contextMock = MockDbContext(Enumerable.Repeat(league, 1).AsQueryable());
            var handler     = new UpdateTeamLeagueMatchScoreCommandHandler(
                contextMock.Object, Mapper.CreateMapper()
                );

            //Act
            var request = new UpdateTeamLeagueMatchScoreCommand
            {
                LeagueName   = "DoesNotExist",
                Guid         = new Guid("00000000-0000-0000-0000-000000000000"),
                MatchEntries = new List <TeamMatchEntryRequestDto>
                {
                    new TeamMatchEntryRequestDto
                    {
                        Team  = "Tottenham Hotspur",
                        Score = 1,
                    }
                    ,
                    new TeamMatchEntryRequestDto
                    {
                        Team  = "Manchester City",
                        Score = 1
                    }
                }
            };
            Func <Task> func = async() => await handler.Handle(request, CancellationToken.None);

            //Assert
            func.Should().Throw <TeamLeagueNotFoundException>();
            contextMock.Verify(mock => mock.SaveChangesAsync(It.IsAny <CancellationToken>()), Times.Never());
        }
        public void Given_LeagueDoesNotExist_When_AddTeamLeagueMatchGoal_Then_TeamLeagueNotFoundExceptionIsThrown()
        {
            //Arrange
            var builder = new TeamLeagueBuilder()
                          .WithCompetitors(new TeamsBuilder().Build())
                          .WithRounds();

            var teamLeague = builder.Build();
            var players    = new Domain.Player.Player[] { new Domain.Player.Player {
                                                              FirstName = "John", LastName = "Doe"
                                                          } };

            var mockContext = MockDbContext(
                new List <TeamLeague> {
                teamLeague
            }.AsQueryable(),
                teamLeague.Competitors.Select(c => c.Team).AsQueryable(),
                players.AsQueryable());
            var mockLogger = new Mock <ILogger <AddTeamLeagueMatchGoalCommandHandler> >();

            var handler = new AddTeamLeagueMatchGoalCommandHandler(
                mockContext.Object,
                Mapper.MapperConfig(),
                mockLogger.Object
                );

            //Act
            var command = new AddTeamLeagueMatchGoalCommand
            {
                LeagueName = "DoesNotExist",
                MatchGuid  = new Guid("00000000-0000-0000-0000-000000000000"),
                TeamName   = "Tottenham Hotspur",
                Minute     = "1",
                PlayerName = "John Doe"
            };
            Func <Task> func = async() => await handler.Handle(command, CancellationToken.None);

            //Assert
            func.Should().Throw <TeamLeagueNotFoundException>();
        }
Esempio n. 7
0
        public void Given_TeamsAreAdded_When_CreateRounds_Then_CreateAllRounds()
        {
            //Arrange
            var sports = new TeamSports {
                Options = new TeamSportsOptions {
                    AmountOfPlayers = 11
                }
            };
            var league = new TeamLeagueBuilder()
                         .WithSports(sports)
                         .WithCompetitors(new TeamsBuilder().Build())
                         .Build();

            //Act
            league.CreateRounds();

            //Assert
            league.Rounds.Count.Should().Be(6);
            league.Rounds.ForEach(r =>
                                  r.Matches.Count.Should().Be(2)
                                  );
        }
Esempio n. 8
0
        public async void Given_MatchDoesExist_When_UpdateTeamLeagueMatchScore_Then_ScoreIsUpdated()
        {
            //Arrange
            var teams  = new TeamsBuilder().Build();
            var league = new TeamLeagueBuilder()
                         .WithCompetitors(teams)
                         .WithRounds()
                         .Build();

            var contextMock = MockDbContext(Enumerable.Repeat(league, 1).AsQueryable());
            var handler     = new UpdateTeamLeagueMatchScoreCommandHandler(
                contextMock.Object, Mapper.CreateMapper()
                );

            //Act
            var request = new UpdateTeamLeagueMatchScoreCommand
            {
                LeagueName   = "Premier League",
                Guid         = new Guid("00000000-0000-0000-0000-000000000000"),
                MatchEntries = new List <TeamMatchEntryRequestDto>
                {
                    new TeamMatchEntryRequestDto
                    {
                        Team  = "Tottenham Hotspur",
                        Score = 1,
                    }
                    ,
                    new TeamMatchEntryRequestDto
                    {
                        Team  = "Manchester City",
                        Score = 1
                    }
                }
            };
            var result = await handler.Handle(request, CancellationToken.None);

            //Assert
            contextMock.Verify(mock => mock.SaveChangesAsync(It.IsAny <CancellationToken>()), Times.Once());
        }
Esempio n. 9
0
        public async void Given_EntryDoesExist_When_UpdateTeamLeagueMatchLineupEntry_Then_EntryIsUpdated()
        {
            // Arrange
            var builder = new TeamLeagueBuilder()
                          .WithCompetitors(new TeamsBuilder().Build())
                          .WithRounds();

            var teamLeague = builder.Build();
            var players    = new PlayerBuilder().Build();

            var contextMock = MockDbContext(
                Enumerable.Repeat(teamLeague, 1).AsQueryable(),
                players.AsQueryable()
                );

            var handler = new UpdateTeamLeagueMatchLineupEntryCommandHandler(
                contextMock.Object,
                Mapper.MapperConfig()
                );

            //Act
            var request = new UpdateTeamLeagueMatchLineupEntryCommand
            {
                LeagueName      = "Premier League",
                MatchGuid       = new Guid("00000000-0000-0000-0000-000000000000"),
                TeamName        = "Tottenham Hotspur",
                LineupEntryGuid = new Guid("00000000-0000-0000-0000-000000000000"),
                PlayerName      = "John Doe",
                PlayerNumber    = "1"
            };
            var result = await handler.Handle(request, CancellationToken.None);

            //Assert
            result.Should().BeOfType <LineupEntryDto>();
            contextMock.Verify(mock => mock.SaveChangesAsync(It.IsAny <CancellationToken>()), Times.Once());
            result.Player.FirstName.Should().Be("John");
            result.Player.LastName.Should().Be("Doe");
            result.PlayerNumber.Should().Be("1");
        }
Esempio n. 10
0
        public void Given_SubstitutionDoesNotExist_When_GetTeamLeagueMatchSubstitution_Then_SubstitutionNotFoundExceptionIsThrown()
        {
            // Arrange
            var teams  = new TeamsBuilder().Build();
            var league = new TeamLeagueBuilder()
                         .WithCompetitors(teams)
                         .WithRounds()
                         .WithSubstitutions()
                         .Build();

            var leagues          = Enumerable.Repeat(league, 1);
            var matchGuid        = new Guid("00000000-0000-0000-0000-000000000000");
            var match            = league.GetMatch(matchGuid);
            var matchEntry       = match.MatchEntries.SingleOrDefault(me => me.Team.Name == "Tottenham Hotspur");
            var substitutionGuid = matchEntry.Substitutions.ToList()[0].Guid;

            var contextMock = MockDbContext(leagues.AsQueryable());
            var loggerMock  = new Mock <ILogger <GetTeamLeagueMatchSubstitutionQueryHandler> >();
            var handler     = new GetTeamLeagueMatchSubstitutionQueryHandler(
                contextMock.Object,
                Mapper.MapperConfig(),
                loggerMock.Object
                );

            // Act
            var request = new GetTeamLeagueMatchSubstitutionQuery
            {
                LeagueName       = "Premier League",
                MatchGuid        = matchGuid,
                TeamName         = "Tottenham Hotspur",
                SubstitutionGuid = new Guid("00000000-0000-0000-0000-000000000000")
            };
            Func <Task> func = async() => await handler.Handle(request, CancellationToken.None);

            // Assert
            func.Should().Throw <SubstitutionNotFoundException>();
        }
Esempio n. 11
0
        public async void Given_TeamHasPlayer_When_GetPlayerForTeamCompetitor_Then_ReturnPlayer()
        {
            // Arrange
            var teams   = new TeamsBuilder().Build();
            var players = new PlayerBuilder().Build();
            var builder = new TeamLeagueBuilder()
                          .WithCompetitors(teams)
                          .WithPlayers(teams[0], players);

            var teamLeague = builder.Build();

            var contextMock = MockDbContext(
                new List <TeamLeague> {
                teamLeague
            }.AsQueryable(),
                teamLeague.Competitors.Select(c => c.Team).AsQueryable()
                );
            var handler = new GetPlayerForTeamCompetitorQueryHandler(
                contextMock.Object,
                Mapper.MapperConfig());

            //Act
            var command = new GetPlayerForTeamCompetitorQuery
            {
                LeagueName = "Premier League",
                TeamName   = "Tottenham Hotspur",
                PlayerName = "John Doe"
            };
            var result = await handler.Handle(command, CancellationToken.None);

            //Assert
            result.Should().BeOfType <CompetitorPlayerDto>();
            result.Player.Should().NotBeNull();
            result.Player.FirstName.Should().Be("John");
            result.Player.LastName.Should().Be("Doe");
            result.Number.Should().Be("1");
        }
        public async void Given_TeamLeagueExist_When_GetTeamLeagueRounds_Then_ReturnRounds()
        {
            // Arrange
            var teamLeague = new TeamLeagueBuilder()
                             .WithCompetitors(new TeamsBuilder().Build())
                             .WithRounds()
                             .Build();

            var leagues = new List <TeamLeague> {
                teamLeague
            };

            var contextMock = MockDbContext(leagues.AsQueryable());
            var handler     = new GetTeamLeagueRoundsQueryHandler(
                contextMock.Object, CreateMapper());

            //Act
            var result = await handler.Handle(new GetTeamLeagueRoundsQuery { LeagueName = "Premier League" }, CancellationToken.None);

            //Assert
            result.Should().NotBeNull();
            result.Rounds.Count().Should().Be(1);
            result.Rounds.Should().BeInAscendingOrder(x => x.Name);
        }
        public async void Given_GoalExist_When_GetTeamLeagueMatchGoal_Then_ReturnGoal()
        {
            // Arrange
            var teams  = new TeamsBuilder().Build();
            var league = new TeamLeagueBuilder()
                         .WithCompetitors(teams)
                         .WithRounds()
                         .WithGoals()
                         .Build();

            var leagues    = Enumerable.Repeat(league, 1);
            var matchGuid  = new Guid("00000000-0000-0000-0000-000000000000");
            var match      = league.GetMatch(matchGuid);
            var matchEntry = match.MatchEntries.SingleOrDefault(me => me.Team.Name == "Tottenham Hotspur");
            var goalGuid   = matchEntry.Goals.ToList()[0].Guid;

            var contextMock = MockDbContext(leagues.AsQueryable());
            var loggerMock  = new Mock <ILogger <GetTeamLeagueMatchGoalQueryHandler> >();
            var handler     = new GetTeamLeagueMatchGoalQueryHandler(
                contextMock.Object,
                Mapper.MapperConfig(),
                loggerMock.Object
                );

            // Act
            var request = new GetTeamLeagueMatchGoalQuery
            {
                LeagueName = "Premier League",
                MatchGuid  = matchGuid,
                GoalGuid   = goalGuid
            };
            var result = await handler.Handle(request, CancellationToken.None);

            // Assert
            result.Should().NotBeNull();
        }