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); }
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); }
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); }
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); }