public async Task ReturnSuccessForValidData() { var baseMock = BaseGameRequestsValidatorMock.CreateMock(); var playersRepo = PlayersRepositoryMock.Create().Object; var gameRoundRepo = GameRoundsRepositoryMock.Create( status: Common.Enums.GameRoundStatusEnum.InProgress).Object; var cardsRepo = CreatePlayerCardsRepoMock(); var questionCardRepo = CreateQuestionCardRepoMock(); var playerAnswersRepo = CreatePlayerAnswersRepository(); var validator = new SubmitAnswerValidator(baseMock.Object, playersRepo, gameRoundRepo, cardsRepo, questionCardRepo, playerAnswersRepo); var request = new SubmitAnswer { GameRoundId = MockConstants.RoundId, UserId = 1, GameId = 1, PlayerCardId = 1 }; var result = await validator.Validate(request); Assert.True(result.IsSuccessful); baseMock.Verify(x => x.Validate(request)); }
public async Task ReturnFailureForInvalidCardAndPlayerCombination() { var baseMock = BaseGameRequestsValidatorMock.CreateMock(); var playersRepo = PlayersRepositoryMock.Create().Object; var gameRoundRepo = GameRoundsRepositoryMock.Create( status: Common.Enums.GameRoundStatusEnum.InProgress).Object; var cardsRepo = CreatePlayerCardsRepoMock( isCardLinkedWithUser: false); var questionCardRepo = CreateQuestionCardRepoMock(); var playerAnswersRepo = CreatePlayerAnswersRepository(); var validator = new SubmitAnswerValidator(baseMock.Object, playersRepo, gameRoundRepo, cardsRepo, questionCardRepo, playerAnswersRepo); var request = new SubmitAnswer { GameRoundId = MockConstants.RoundId, UserId = 1, GameId = 1, PlayerCardId = 1 }; var result = await validator.Validate(request); Assert.False(result.IsSuccessful); Assert.Equal(ValidatorErrors.Games.CardNotLinkedWithPlayer, result.Error); }
public async Task ReturnFailureForMissingSecondPlayerCard() { var baseMock = BaseGameRequestsValidatorMock.CreateMock(); var playersRepo = PlayersRepositoryMock.Create().Object; var gameRoundRepo = GameRoundsRepositoryMock.Create( status: Common.Enums.GameRoundStatusEnum.InProgress).Object; var cardsRepo = CreatePlayerCardsRepoMock(); var questionCardRepo = CreateQuestionCardRepoMock( isMultiChoiceQuestion: true); var playerAnswersRepo = CreatePlayerAnswersRepository(); var validator = new SubmitAnswerValidator(baseMock.Object, playersRepo, gameRoundRepo, cardsRepo, questionCardRepo, playerAnswersRepo); var request = new SubmitAnswer { GameRoundId = MockConstants.RoundId, UserId = 1, GameId = 1, PlayerCardId = 1 }; var result = await validator.Validate(request); Assert.False(result.IsSuccessful); Assert.Equal(ValidatorErrors.Games.SecondPlayerCardIdRequired, result.Error); }