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()); }
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>(); }
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>(); }
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) ); }
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()); }
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"); }
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>(); }
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(); }