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>(); }
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!"); }
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."); }
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."); }
public async Task CreateTeamLeague(CreateTeamLeagueCommand command) { var response = await httpRequestFactory.Post($"{apiSettings.CompetitionApiUrl}/teamleague", command); if (!response.IsSuccessStatusCode) { throw new CreateTeamLeagueException(command.Name); } }
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); }
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); }
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); }
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); }
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!")); } }
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()); }
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>(); }
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>(); }