Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
        }
        public async Task ReturnSuccessForValidData()
        {
            var gameRoundRepoMock = GameRoundsRepositoryMock.Create();
            var playersRepoMock   = PlayersRepositoryMock.Create();

            var rule = new RoundOwnerRule(gameRoundRepoMock.Object, playersRepoMock.Object);

            var request = new RequestConcrete
            {
                GameId      = 1,
                GameRoundId = 1,
                UserId      = 1
            };

            var result = await rule.Validate(request);

            Assert.NotNull(result);
            Assert.True(result.IsSuccessful);
            Assert.Null(result.Error);
        }
        public async Task ReturnFailureForInvalidUser()
        {
            var gameRoundRepoMock = GameRoundsRepositoryMock.Create(
                isRoundOwner: false);
            var playersRepoMock = PlayersRepositoryMock.Create();

            var rule = new RoundOwnerRule(gameRoundRepoMock.Object, playersRepoMock.Object);

            var request = new RequestConcrete
            {
                GameId      = 1,
                GameRoundId = 1,
                UserId      = 1
            };

            var result = await rule.Validate(request);

            Assert.NotNull(result);
            Assert.False(result.IsSuccessful);
            Assert.Equal(ValidatorErrors.Games.InvalidUserAction, result.Error);
        }
        public async Task ReturnFailureForInvalidRoundStatus()
        {
            var baseMock      = BaseGameRequestsValidatorMock.CreateMock();
            var playersRepo   = PlayersRepositoryMock.Create().Object;
            var gameRoundRepo = GameRoundsRepositoryMock.Create(
                status: Common.Enums.GameRoundStatusEnum.Finished).Object;
            var gameOrRoundOnwerRuleMock = GameOrRoundOwnerRuleMock.Create <StartGameRound>();

            var validator = new StartGameRoundValidator(baseMock.Object, playersRepo, gameRoundRepo, gameOrRoundOnwerRuleMock.Object);

            var request = new StartGameRound
            {
                GameRoundId = 1,
                UserId      = 1,
                GameId      = 1
            };

            var result = await validator.Validate(request);

            Assert.False(result.IsSuccessful);
            Assert.Equal(ValidatorErrors.Games.InvalidGameRoundStatus, result.Error);
        }
        public async Task ReturnFailureForInactiveRound()
        {
            var baseMock          = BaseGameRequestsValidatorMock.CreateMock();
            var gameRoundRepoMock = GameRoundsRepositoryMock.Create(
                isRoundActive: false);
            var gameOwnerRuleMock = GameOrRoundOwnerRuleMock.Create <SkipRound>();

            var validator = new SkipRoundValidator(baseMock.Object, gameRoundRepoMock.Object, gameOwnerRuleMock.Object);

            var request = new SkipRound
            {
                GameId      = 1,
                UserId      = 1,
                GameRoundId = 1
            };

            var result = await validator.Validate(request);

            Assert.NotNull(result);
            Assert.False(result.IsSuccessful);
            Assert.Equal(ValidatorErrors.Games.InvalidGameRoundStatus, result.Error);
        }
        public async Task ReturnSuccessForValidData(GameRoundStatusEnum gameRoundStatus)
        {
            var baseMock          = BaseGameRequestsValidatorMock.CreateMock();
            var gameRoundRepoMock = GameRoundsRepositoryMock.Create(
                status: gameRoundStatus);
            var gameOwnerRuleMock = GameOrRoundOwnerRuleMock.Create <SkipRound>();

            var validator = new SkipRoundValidator(baseMock.Object, gameRoundRepoMock.Object, gameOwnerRuleMock.Object);

            var request = new SkipRound
            {
                GameId      = 1,
                UserId      = 1,
                GameRoundId = 1
            };

            var result = await validator.Validate(request);

            Assert.True(result.IsSuccessful);
            baseMock.Verify(x => x.Validate(request));
            gameOwnerRuleMock.Verify(x => x.Validate(request));
        }
Beispiel #9
0
        public async Task ReturnSuccessForValidData()
        {
            var baseMock      = BaseGameRequestsValidatorMock.CreateMock();
            var gameRoundRepo = GameRoundsRepositoryMock.Create(
                status: Common.Enums.GameRoundStatusEnum.InProgress).Object;
            var playerAnswersRepo        = PlayerAnswersRepositoryMock.Create().Object;
            var gameOrRoundOnwerRuleMock = GameOrRoundOwnerRuleMock.Create <EndSubmissions>();

            var validator = new EndSubmissionsValidator(baseMock.Object, gameRoundRepo, playerAnswersRepo, gameOrRoundOnwerRuleMock.Object);

            var request = new EndSubmissions
            {
                GameRoundId = 1,
                UserId      = 1,
                GameId      = 1,
            };

            var result = await validator.Validate(request);

            Assert.True(result.IsSuccessful);
            baseMock.Verify(x => x.Validate(request));
            gameOrRoundOnwerRuleMock.Verify(x => x.Validate(request));
        }
Beispiel #10
0
        public async Task ReturnFailureForInactiveAnsweringPlayer()
        {
            var baseMock          = BaseGameRequestsValidatorMock.CreateMock();
            var playerAnswersRepo = PlayerAnswersRepositoryMock.Create(
                isAnsweringPlayerActive: false).Object;
            var roundOnwerRuleMock  = RoundOwnerRuleMock.Create <SelectAnswer>();
            var gameRoundRepository = GameRoundsRepositoryMock.Create(
                status: Common.Enums.GameRoundStatusEnum.Selection).Object;

            var validator = new SelectAnswerValidator(baseMock.Object, roundOnwerRuleMock.Object, playerAnswersRepo, gameRoundRepository);

            var request = new SelectAnswer
            {
                GameRoundId = 1,
                UserId      = 1,
                GameId      = 1,
            };

            var result = await validator.Validate(request);

            Assert.False(result.IsSuccessful);
            Assert.Equal(ValidatorErrors.Games.SelectedAnswerPlayerIsNotActive, result.Error);
        }
Beispiel #11
0
        public async Task ReturnSuccessForValidData()
        {
            var baseMock            = BaseGameRequestsValidatorMock.CreateMock();
            var playerAnswersRepo   = PlayerAnswersRepositoryMock.Create().Object;
            var roundOnwerRuleMock  = RoundOwnerRuleMock.Create <SelectAnswer>();
            var gameRoundRepository = GameRoundsRepositoryMock.Create(
                status: Common.Enums.GameRoundStatusEnum.Selection).Object;

            var validator = new SelectAnswerValidator(baseMock.Object, roundOnwerRuleMock.Object, playerAnswersRepo, gameRoundRepository);

            var request = new SelectAnswer
            {
                GameRoundId = 1,
                UserId      = 1,
                GameId      = 1,
            };

            var result = await validator.Validate(request);

            Assert.True(result.IsSuccessful);
            baseMock.Verify(x => x.Validate(request));
            roundOnwerRuleMock.Verify(x => x.Validate(request));
        }