Skip to content

Commit

Permalink
Merge pull request #776 from NemeStats/bugfix/774-sequence-contains-n…
Browse files Browse the repository at this point in the history
…o-elements

fix universal stats when all groups have no plays #774
  • Loading branch information
HolisticDeveloper committed Jan 26, 2023
2 parents d6b2cd1 + 6ffbb5c commit be8f9b0
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public override UniversalGameStats GetFromSource(int boardGameGeekGameDefinition
{
return new UniversalGameStats
{
AveragePlayersPerGame = definition.GameDefinitions.Where(gd => gd.PlayedGames.Any()).Average(y => y.PlayedGames.Select(p => p.NumberOfPlayers).Average()),
AveragePlayersPerGame = definition.GameDefinitions.Where(gd => gd.PlayedGames.Any()).DefaultIfEmpty().Average(y => y?.PlayedGames.Select(p => p.NumberOfPlayers).Average()) ?? 0,
TotalNumberOfGamesPlayed = definition.GameDefinitions.Sum(y => y.PlayedGames.Count),
TotalGamingGroupsWithThisGame = definition.GameDefinitions.Count(g => g.Active && g.PlayedGames.Any())
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,5 +185,42 @@ public void It_Handles_Game_Definitions_With_No_PlayedGames()
result.TotalGamingGroupsWithThisGame.ShouldBe(1);
result.TotalNumberOfGamesPlayed.ShouldBe(1);
}

[Test]
public void It_Handles_When_All_Game_Definitions_Have_No_PlayedGames()
{
//--arrange
var expectedBggDefinition = new BoardGameGeekGameDefinition
{
Id = _boardGameGeekGameDefinitionId,
GameDefinitions = new List<GameDefinition>
{
new GameDefinition
{
GamingGroupId = 1,
PlayedGames = new List<PlayedGame>(),
},
new GameDefinition
{
GamingGroupId = 2,
PlayedGames = new List<PlayedGame>(),
}
},
};
var queryable = new List<BoardGameGeekGameDefinition>
{
expectedBggDefinition,
}.AsQueryable();
var mockRetriever = new RhinoAutoMocker<UniversalStatsRetriever>();
mockRetriever.Get<IDataContext>().Expect(mock => mock.GetQueryable<BoardGameGeekGameDefinition>()).Return(queryable);

//--act
var result = mockRetriever.ClassUnderTest.GetFromSource(_boardGameGeekGameDefinitionId);

//--assert
result.AveragePlayersPerGame.ShouldBe(0);
result.TotalGamingGroupsWithThisGame.ShouldBe(0);
result.TotalNumberOfGamesPlayed.ShouldBe(0);
}
}
}

0 comments on commit be8f9b0

Please sign in to comment.