public async Task HappyPath_MoreGames_DtoHasCorrectSums() { var w3StatsRepo = new W3StatsRepo(MongoClient); var handler = new OverallHeroWinRatePerHeroModelHandler(w3StatsRepo); var matchFinishedEvent1 = CreatFakeEvent(new [] { "deathknight", "lich" }, new [] { "archmage" }); var matchFinishedEvent2 = CreatFakeEvent(new [] { "lich", }, new [] { "archmage" }); var matchFinishedEvent3 = CreatFakeEvent(new [] { "deathknight", "lich" }, new [] { "archmage", "moutainking" }); var matchFinishedEvent4 = CreatFakeEvent(new [] { "archmage", "bloodmage" }, new [] { "deathknight", "lich" }); var matchFinishedEvent5 = CreatFakeEvent(new [] { "bloodmage" }, new [] { "deathknight", "lich" }); await handler.Update(matchFinishedEvent1); await handler.Update(matchFinishedEvent2); await handler.Update(matchFinishedEvent3); await handler.Update(matchFinishedEvent4); await handler.Update(matchFinishedEvent5); var heroStatsQueryHandler = new HeroStatsQueryHandler(new W3StatsRepo(MongoClient)); var heroWinrateDto = await heroStatsQueryHandler.GetStats("deathknight", "lich", "all", "archmage", "all", "all"); Assert.AreEqual(2, heroWinrateDto.Wins); Assert.AreEqual(1, heroWinrateDto.Losses); }
public async Task HappyPath_MoreGames() { var w3StatsRepo = new W3StatsRepo(MongoClient); var handler = new OverallHeroWinRatePerHeroModelHandler(w3StatsRepo); var matchFinishedEvent1 = CreatFakeEvent(new [] { "deathknight", "lich" }, new [] { "archmage" }); var matchFinishedEvent2 = CreatFakeEvent(new [] { "lich", }, new [] { "archmage" }); var matchFinishedEvent3 = CreatFakeEvent(new [] { "deathknight", "lich" }, new [] { "moutainking" }); var matchFinishedEvent4 = CreatFakeEvent(new [] { "moutainking" }, new [] { "deathknight", "lich" }); await handler.Update(matchFinishedEvent1); await handler.Update(matchFinishedEvent2); await handler.Update(matchFinishedEvent3); await handler.Update(matchFinishedEvent4); var dkStats = await w3StatsRepo.LoadHeroWinrate("deathknight_lich"); var lichStats = await w3StatsRepo.LoadHeroWinrate("lich"); Assert.AreEqual(0, dkStats.WinRates[0].WinLoss.Losses); Assert.AreEqual(1, dkStats.WinRates[0].WinLoss.Wins); Assert.AreEqual("archmage", dkStats.WinRates[0].HeroCombo); Assert.AreEqual(1, dkStats.WinRates[1].WinLoss.Losses); Assert.AreEqual(1, dkStats.WinRates[1].WinLoss.Wins); Assert.AreEqual("moutainking", dkStats.WinRates[1].HeroCombo); Assert.AreEqual(0, lichStats.WinRates[0].WinLoss.Losses); Assert.AreEqual(1, lichStats.WinRates[0].WinLoss.Wins); Assert.AreEqual("archmage", lichStats.WinRates[0].HeroCombo); }
public async Task MoreGames_MirrorBug() { var w3StatsRepo = new W3StatsRepo(MongoClient); var handler = new OverallHeroWinRatePerHeroModelHandler(w3StatsRepo); await handler.Update(CreatFakeEvent(new [] { "archmage", "mountainking", "paladin" }, new [] { "archmage", "mountainking", "paladin" })); await handler.Update(CreatFakeEvent(new [] { "archmage", "mountainking", "paladin" }, new [] { "archmage", "mountainking", "paladin" })); await handler.Update(CreatFakeEvent(new [] { "archmage", "mountainking", "paladin" }, new [] { "archmage", "mountainking", "paladin" })); await handler.Update(CreatFakeEvent(new [] { "archmage", "mountainking", "paladin" }, new [] { "archmage", "mountainking", "paladin" })); await handler.Update(CreatFakeEvent(new [] { "archmage", "mountainking", "paladin" }, new [] { "archmage", "mountainking", "paladin" })); var heroStatsQueryHandler = new HeroStatsQueryHandler(new W3StatsRepo(MongoClient)); var heroWinrateDto = await heroStatsQueryHandler.GetStats("archmage", "all", "all", "archmage", "all", "all"); Assert.AreEqual(5, heroWinrateDto.Losses); Assert.AreEqual(5, heroWinrateDto.Wins); }
public async Task HappyPath() { var w3StatsRepo = new W3StatsRepo(MongoClient); var handler = new OverallHeroWinRatePerHeroModelHandler(w3StatsRepo); var matchFinishedEvent = CreatFakeEvent(new [] { "deathknight", "lich" }, new [] { "archmage" }); await handler.Update(matchFinishedEvent); var amStats = await w3StatsRepo.LoadHeroWinrate("archmage"); var dkStats = await w3StatsRepo.LoadHeroWinrate("deathknight_lich"); Assert.AreEqual(1, amStats.WinRates[0].WinLoss.Losses); Assert.AreEqual(0, amStats.WinRates[0].WinLoss.Wins); Assert.AreEqual("deathknight_lich", amStats.WinRates[0].HeroCombo); Assert.AreEqual(0, dkStats.WinRates[0].WinLoss.Losses); Assert.AreEqual(1, dkStats.WinRates[0].WinLoss.Wins); Assert.AreEqual("archmage", dkStats.WinRates[0].HeroCombo); }