예제 #1
0
        public async Task <IActionResult> AddMatch(SoloTeamMatchDto matchDto)
        {
            var soloTeamPlayers = new List <SoloTeamPlayer>();

            foreach (var playerDto in matchDto.Players)
            {
                var player = await GetOrCreatePlayer(playerDto.Name);

                soloTeamPlayers.Add(new SoloTeamPlayer {
                    Team   = playerDto.Team,
                    Player = player
                });
            }

            var match = new SoloTeamMatch()
            {
                EndTime       = matchDto.EndTime,
                StartTime     = matchDto.StartTime,
                HomeTeamScore = matchDto.Team1Score,
                AwayTeamScore = matchDto.Team2Score,
                Players       = soloTeamPlayers
            };
            var result = await _matchService.AddMatchAsync <SoloTeamMatch>(match);

            return(Ok(result));
        }
예제 #2
0
        public void SoloTeamMatchDtoValidator_PlayerNamesMustBeUnique()
        {
            var input = new SoloTeamMatchDto()
            {
                StartTime  = _validStartDate,
                EndTime    = _validEndDate,
                Team1Score = 0,
                Team2Score = 1,
                Players    = new List <SoloTeamPlayerDto>()
                {
                    new SoloTeamPlayerDto()
                    {
                        Name = "same",
                        Team = TeamSide.Away
                    },
                    new SoloTeamPlayerDto {
                        Name = "same",
                        Team = TeamSide.Home
                    }
                }
            };
            var sut    = new SoloTeamMatchDtoValidator();
            var actual = sut.Validate(input);

            Assert.False(actual.IsValid);
        }
예제 #3
0
        public void SoloTeamMatchDtoValidator_PlayerNameTooLong_IsNotValid()
        {
            var input = new SoloTeamMatchDto()
            {
                StartTime  = _validStartDate,
                EndTime    = _validEndDate,
                Team1Score = 0,
                Team2Score = 1,
                Players    = new List <SoloTeamPlayerDto>()
                {
                    new SoloTeamPlayerDto
                    {
                        Name = "Valid",
                        Team = TeamSide.Home
                    },
                    new SoloTeamPlayerDto
                    {
                        Name = "Valid2",
                        Team = TeamSide.Home
                    },
                    new SoloTeamPlayerDto
                    {
                        Name = "Toolongplayername",
                        Team = TeamSide.Away
                    }
                }
            };
            var sut    = new SoloTeamMatchDtoValidator();
            var actual = sut.Validate(input);

            Assert.False(actual.IsValid);
        }
예제 #4
0
        public void SoloTeamMatchDtoValidator_TooManyPlayers_IsNotValid()
        {
            var input = new SoloTeamMatchDto()
            {
                StartTime  = _validStartDate,
                EndTime    = _validEndDate,
                Team1Score = 0,
                Team2Score = 1,
                Players    = Enumerable.Range(0, 20).Select(x => new SoloTeamPlayerDto()
                {
                    Name = x.ToString(),
                    Team = TeamSide.Away
                }).ToList()
            };
            var sut    = new SoloTeamMatchDtoValidator();
            var actual = sut.Validate(input);

            Assert.False(actual.IsValid);
        }
예제 #5
0
        public void SoloTeamMatchDtoValidator_NoOpposingTeam_IsNotValid()
        {
            var input = new SoloTeamMatchDto()
            {
                StartTime  = _validStartDate,
                EndTime    = _validEndDate,
                Team1Score = 0,
                Team2Score = 1,
                Players    = new List <SoloTeamPlayerDto>()
                {
                    new SoloTeamPlayerDto {
                        Name = "Player",
                        Team = TeamSide.Away
                    }
                }
            };
            var sut    = new SoloTeamMatchDtoValidator();
            var actual = sut.Validate(input);

            Assert.False(actual.IsValid);
        }