Пример #1
0
        public async Task GetPlayerQuestState_PlayerHaveProgress_ReturnCurrentProgress(
            int?lastMilestoneCompletedId,
            long questPointsEarned,
            decimal totalQuestPercentCompleted)
        {
            _playerProgressRepository
            .Setup(ppr =>
                   ppr.GetPlayerProgress(It.IsAny <string>(), It.IsAny <int>()))
            .ReturnsAsync(() =>
                          new PlayerProgress
            {
                LastMilestoneCompletedId = lastMilestoneCompletedId,
                QuestPointsEarned        = questPointsEarned
            });


            var questEngineService = new QuestEngineService(
                _playerProgressRepository.Object,
                _questPointCalculator.Object,
                _milestoneCalculator.Object,
                _gameConfiguration);

            var result = await questEngineService.GetPlayerQuestState("playerOne");

            result.Should().NotBeNull();
            result.TotalQuestPercentCompleted.Should().Be(totalQuestPercentCompleted);
            result.LastMilestoneIndexCompleted.Should().Be(lastMilestoneCompletedId);
        }
Пример #2
0
        public async Task CalculateQuestProgress_PlayerWithPreviousProgressBetPositiveAmountCompleteTwoMilestone_ShouldSaveAndReturnTheProgress()
        {
            _playerProgressRepository
            .Setup(ppr =>
                   ppr.GetPlayerProgress(It.IsAny <string>(), It.IsAny <int>()))
            .ReturnsAsync(() =>
                          new PlayerProgress
            {
                LastMilestoneCompletedId = null,
                QuestPointsEarned        = 500
            });

            _questPointCalculator
            .Setup(qpc =>
                   qpc.CalculateQuestPoints(It.IsAny <long>(), It.IsAny <int>()))
            .Returns(150);

            _milestoneCalculator
            .Setup(mc =>
                   mc.GetMilestonesArchived(It.IsAny <long>(), It.IsAny <long>()))
            .Returns((ICollection <Milestone>) new []
            {
                new Milestone
                {
                    ChipsAwarded = 10,
                    MilestoneId  = 1
                },
                new Milestone
                {
                    ChipsAwarded = 20,
                    MilestoneId  = 2
                }
            });

            var questEngineService = new QuestEngineService(
                _playerProgressRepository.Object,
                _questPointCalculator.Object,
                _milestoneCalculator.Object,
                _gameConfiguration);

            var result = await questEngineService.CalculateQuestProgress("playerOne", 1, 50);

            result.Should().NotBeNull();
            result.MilestonesCompleted.Count.Should().Be(2);
            result.MilestonesCompleted.First().ChipsAwarded.Should().Be(10);
            result.MilestonesCompleted.First().MilestoneIndex.Should().Be(1);

            result.MilestonesCompleted.Last().ChipsAwarded.Should().Be(20);
            result.MilestonesCompleted.Last().MilestoneIndex.Should().Be(2);

            result.QuestPointsEarned.Should().Be(150);
            result.TotalQuestPercentCompleted.Should().Be(65m);

            _playerProgressRepository.Verify(ppr =>
                                             ppr.SavePlayerProgress("playerOne", 1, 150, 2), Times.Once);
        }
Пример #3
0
        public async Task CalculateQuestProgress_PlayerWithPreviousProgressBetNegativeAmountOrNegativeLevel_ShouldNotReceiveQuestPointsAndSaveAndReturnTheProgress(
            int playerLevel,
            long chipAmountBet)
        {
            _playerProgressRepository
            .Setup(ppr =>
                   ppr.GetPlayerProgress(It.IsAny <string>(), It.IsAny <int>()))
            .ReturnsAsync(() =>
                          new PlayerProgress
            {
                LastMilestoneCompletedId = null,
                QuestPointsEarned        = 100
            });

            _questPointCalculator
            .Setup(qpc =>
                   qpc.CalculateQuestPoints(It.IsAny <long>(), It.IsAny <int>()))
            .Returns(100);

            _milestoneCalculator
            .Setup(mc =>
                   mc.GetMilestonesArchived(It.IsAny <long>(), It.IsAny <long>()))
            .Returns((ICollection <Milestone>) new Milestone[0]);

            var questEngineService = new QuestEngineService(
                _playerProgressRepository.Object,
                _questPointCalculator.Object,
                _milestoneCalculator.Object,
                _gameConfiguration);

            var result = await questEngineService.CalculateQuestProgress("playerOne", playerLevel, chipAmountBet);

            result.Should().NotBeNull();
            result.MilestonesCompleted.Should().BeEmpty();


            result.QuestPointsEarned.Should().Be(0);
            result.TotalQuestPercentCompleted.Should().Be(10m);

            _playerProgressRepository
            .Verify(ppr =>
                    ppr.SavePlayerProgress(
                        It.IsAny <string>(),
                        It.IsAny <int>(),
                        It.IsAny <long>(),
                        It.IsAny <int?>()),
                    Times.Never);
        }
Пример #4
0
        public async Task CalculateQuestProgress_PlayerIdGreaterThan50_ShouldReturnEmptyProgress()
        {
            var questEngineService = new QuestEngineService(
                _playerProgressRepository.Object,
                _questPointCalculator.Object,
                _milestoneCalculator.Object,
                _gameConfiguration);

            var result = await questEngineService.CalculateQuestProgress("player123456789012345678901234567890123456789012345678901234567890", 1, 50);

            result.Should().NotBeNull();
            result.MilestonesCompleted.Should().BeEmpty();
            result.QuestPointsEarned.Should().Be(0);
            result.TotalQuestPercentCompleted.Should().Be(0);

            _playerProgressRepository.Verify(ppr =>
                                             ppr.SavePlayerProgress(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <long>(), It.IsAny <int?>()), Times.Never);
        }
Пример #5
0
        public async Task GetPlayerQuestState_PlayerIdGreaterThan50_ReturnZeroProgress()
        {
            _playerProgressRepository
            .Setup(ppr =>
                   ppr.GetPlayerProgress(It.IsAny <string>(), It.IsAny <int>()))
            .ReturnsAsync(() => new PlayerProgress());


            var questEngineService = new QuestEngineService(
                _playerProgressRepository.Object,
                _questPointCalculator.Object,
                _milestoneCalculator.Object,
                _gameConfiguration);

            var result = await questEngineService.GetPlayerQuestState("player123456789012345678901234567890123456789012345678901234567890");

            result.Should().NotBeNull();
            result.TotalQuestPercentCompleted.Should().Be(0);
            result.LastMilestoneIndexCompleted.Should().BeNull();
        }
Пример #6
0
        public async Task CalculateQuestProgress_PlayerAlreadyGetAllQuestPointsBetPositiveAmount_ShouldNotReceiveQuestPointsAndSaveAndReturnTheProgress()
        {
            _playerProgressRepository
            .Setup(ppr =>
                   ppr.GetPlayerProgress(It.IsAny <string>(), It.IsAny <int>()))
            .ReturnsAsync(() =>
                          new PlayerProgress
            {
                LastMilestoneCompletedId = 5,
                QuestPointsEarned        = 1000
            });

            _questPointCalculator
            .Setup(qpc =>
                   qpc.CalculateQuestPoints(It.IsAny <long>(), It.IsAny <int>()))
            .Returns(50);

            _milestoneCalculator
            .Setup(mc =>
                   mc.GetMilestonesArchived(It.IsAny <long>(), It.IsAny <long>()))
            .Returns((ICollection <Milestone>) new Milestone[0]);

            var questEngineService = new QuestEngineService(
                _playerProgressRepository.Object,
                _questPointCalculator.Object,
                _milestoneCalculator.Object,
                _gameConfiguration);

            var result = await questEngineService.CalculateQuestProgress("playerOne", 1, 50);

            result.Should().NotBeNull();
            result.MilestonesCompleted.Should().BeEmpty();


            result.QuestPointsEarned.Should().Be(0);
            result.TotalQuestPercentCompleted.Should().Be(100m);

            _playerProgressRepository.Verify(ppr =>
                                             ppr.SavePlayerProgress("playerOne", 1, 0, null), Times.Once);
        }