Beispiel #1
0
        public void Given_TeamLeagueAlreadyExist_When_CreateTeamLeague_Then_Exception()
        {
            // Arrange
            var teamSports = new List <TeamSports>();
            var countries  = new List <Country>();
            var leagues    = new List <TeamLeague> {
                new TeamLeague {
                    Name = "Premier League"
                }
            };
            var teams = new TeamsBuilder().Build();

            var contextMock = MockDbContext(
                teamSports.AsQueryable(),
                countries.AsQueryable(),
                leagues.AsQueryable(),
                teams.AsQueryable());
            var handler = new CreateTeamLeagueCommandHandler(contextMock.Object, Mapper.CreateMapper());

            //Act
            var request = new CreateTeamLeagueCommand
            {
                Name          = "Premier League",
                SelectedTeams = teams.Select(t => t.Name).ToList()
            };
            Func <Task> func = async() => await handler.Handle(request, CancellationToken.None);

            //Assert
            func.Should().Throw <CompetitionAlreadyExistsException>();
        }
Beispiel #2
0
            public async void Given_OtherExceptionOccurs_When_CreateTeamLeague_Then_ReturnBadRequest()
            {
                //Arrange
                var mockMediator = new Mock <IMediator>();

                mockMediator.Setup(x => x.Send(
                                       It.IsAny <CreateTeamLeagueCommand>(),
                                       It.IsAny <CancellationToken>()
                                       ))
                .Throws(new Exception());
                var mockLogger = new Mock <ILogger <CompetitionsController> >();

                var controller = new CompetitionsController(
                    mockMediator.Object
                    );
                var command = new CreateTeamLeagueCommand();

                //Act
                var result = await controller.CreateTeamLeague(command);

                //Assert
                var error = result.Should().BeOfType <BadRequestObjectResult>().Subject;

                error.Value.Should().Be("Something went wrong!");
            }
Beispiel #3
0
            public async void Given_TeamLeagueAlreadyExists_When_CreateTeamLeague_Then_ReturnBadRequest()
            {
                //Arrange
                var mockMediator = new Mock <IMediator>();

                mockMediator.Setup(x => x.Send(
                                       It.IsAny <CreateTeamLeagueCommand>(),
                                       It.IsAny <CancellationToken>()
                                       ))
                .Throws(new CompetitionAlreadyExistsException("Premier League"));

                var controller = new CompetitionsController(
                    mockMediator.Object
                    );

                var command = new CreateTeamLeagueCommand
                {
                    Name    = "Premier League",
                    Country = "England"
                };

                //Act
                var result = await controller.CreateTeamLeague(command);

                //Assert
                var error = result.Should().BeOfType <BadRequestObjectResult>().Subject;

                error.Value.Should().Be("Competition \"Premier League\" already exists.");
            }
Beispiel #4
0
            public async void Given_TeamNotFound_When_CreateTeamLeague_Then_ReturnBadRequest()
            {
                //Arrange
                var mockMediator = new Mock <IMediator>();

                mockMediator.Setup(x => x.Send(
                                       It.IsAny <CreateTeamLeagueCommand>(),
                                       It.IsAny <CancellationToken>()
                                       ))
                .Throws(new TeamNotFoundException("Liverpool"));
                var mockLogger = new Mock <ILogger <CompetitionsController> >();

                var controller = new CompetitionsController(
                    mockMediator.Object
                    );

                var command = new CreateTeamLeagueCommand();

                //Act
                var result = await controller.CreateTeamLeague(command);

                //Assert
                var error = result.Should().BeOfType <BadRequestObjectResult>().Subject;

                error.Value.Should().Be("Team \"Liverpool\" not found.");
            }
Beispiel #5
0
        public async Task CreateTeamLeague(CreateTeamLeagueCommand command)
        {
            var response = await httpRequestFactory.Post($"{apiSettings.CompetitionApiUrl}/teamleague", command);

            if (!response.IsSuccessStatusCode)
            {
                throw new CreateTeamLeagueException(command.Name);
            }
        }
Beispiel #6
0
        public void When_NoTeamsAreSpecified_Then_ValidationError()
        {
            var command = new CreateTeamLeagueCommand
            {
                Name          = "Premier League 2019-2020",
                SelectedTeams = null
            };
            var validator = new CreateTeamLeagueCommandValidator();

            validator.ShouldHaveValidationErrorFor(x => x.SelectedTeams, command);
        }
Beispiel #7
0
        public void When_NameIsLongerThan50_Then_ValidationError()
        {
            var command = new CreateTeamLeagueCommand
            {
                Name          = "Premier LeaguePremier LeaguePremier LeaguePremier LeaguePremier LeaguePremier LeaguePremier LeaguePremier LeaguePremier League",
                SelectedTeams = new List <string> {
                    "Team A", "Team B"
                }
            };
            var validator = new CreateTeamLeagueCommandValidator();

            validator.ShouldHaveValidationErrorFor(x => x.Name, command);
        }
Beispiel #8
0
        public void When_NameContainsSlash_Then_ValidationError()
        {
            var command = new CreateTeamLeagueCommand
            {
                Name          = "Premier League 2019/2020",
                SelectedTeams = new List <string> {
                    "Team A", "Team B"
                }
            };
            var validator = new CreateTeamLeagueCommandValidator();

            validator.ShouldHaveValidationErrorFor(x => x.Name, command);
        }
Beispiel #9
0
        public void When_SportsIsEmpty_Then_ValidationError()
        {
            var command = new CreateTeamLeagueCommand
            {
                Name          = "Premier League",
                Sports        = "",
                SelectedTeams = new List <string> {
                    "Team A", "Team B"
                }
            };
            var validator = new CreateTeamLeagueCommandValidator();

            validator.ShouldHaveValidationErrorFor(x => x.Sports, command);
        }
Beispiel #10
0
        public async Task <IActionResult> CreateTeamLeague([FromBody] CreateTeamLeagueCommand command)
        {
            try
            {
                await mediator.Send(command);

                return(Created($"/competition/{command.Name}", new { command.Name }));
            }
            catch (LeagueManagerException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch (Exception)
            {
                return(BadRequest("Something went wrong!"));
            }
        }
Beispiel #11
0
        public async void Given_TeamLeagueDoesNotExist_When_CreateTeamLeague_Then_TeamLeagueIsCreated()
        {
            // Arrange
            var teamSports = new List <TeamSports> {
                new TeamSports {
                    Name    = "Soccer",
                    Options = new TeamSportsOptions {
                        AmountOfPlayers = 11
                    }
                }
            };
            var countries = new List <Country>();
            var leagues   = new List <TeamLeague>();
            var teams     = new TeamsBuilder().Build();

            var contextMock = MockDbContext(
                teamSports.AsQueryable(),
                countries.AsQueryable(),
                leagues.AsQueryable(),
                teams.AsQueryable());
            var handler = new CreateTeamLeagueCommandHandler(contextMock.Object, Mapper.CreateMapper());

            //Act
            var request = new CreateTeamLeagueCommand {
                Sports        = "Soccer",
                Name          = "Premier League",
                SelectedTeams = teams.Select(t => t.Name).ToList()
            };
            var result = await handler.Handle(request, CancellationToken.None);

            //Assert
            result.Should().BeOfType <TeamLeagueDto>();
            result.Rounds.Count().Should().Be((teams.Count - 1) * 2);
            result.Rounds.ToList().ForEach(r => {
                r.Matches.Count().Should().Be(teams.Count / 2);
                r.Matches.ToList().ForEach(m => {
                    m.MatchEntries.Count().Should().Be(2);
                    m.MatchEntries.ForEach(me => me.Lineup.Count().Should().Be(teamSports[0].Options.AmountOfPlayers));
                });
            });
            contextMock.Verify(mock => mock.SaveChangesAsync(It.IsAny <CancellationToken>()), Times.Once());
        }
Beispiel #12
0
            public async void Given_TeamLeagueDoesNotExist_When_CreateTeamLeague_Then_ReturnSuccess()
            {
                //Arrange
                var mockMediator = new Mock <IMediator>();
                var controller   = new CompetitionsController(
                    mockMediator.Object
                    );

                var command = new CreateTeamLeagueCommand
                {
                    Name    = "Premier League",
                    Country = "England"
                };

                //Act
                var result = await controller.CreateTeamLeague(command);

                //Assert
                result.Should().BeOfType <CreatedResult>();
            }
Beispiel #13
0
        public void Given_TeamDoesNotExist_When_CreateTeamLeague_Then_Exception()
        {
            // Arrange
            var sports = new List <TeamSports> {
                new TeamSports {
                    Name = "Soccer"
                }
            };
            var countries = new List <Country> {
                new Country {
                    Name = "England"
                }
            };
            var leagues = new List <TeamLeague>();
            var teams   = new List <Team>();

            var contextMock = MockDbContext(
                sports.AsQueryable(),
                countries.AsQueryable(),
                leagues.AsQueryable(),
                teams.AsQueryable());;
            var handler = new CreateTeamLeagueCommandHandler(contextMock.Object, Mapper.CreateMapper());

            //Act
            var request = new CreateTeamLeagueCommand
            {
                Sports        = "Soccer",
                Country       = "England",
                Name          = "Premier League",
                SelectedTeams = new TeamsBuilder().Build().Select(t => t.Name).ToList()
            };
            Func <Task> func = async() => await handler.Handle(request, CancellationToken.None);

            //Assert
            func.Should().Throw <TeamNotFoundException>();
        }