Skip to content

Commit

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

fix universal stats when group has game with no plays #774
  • Loading branch information
HolisticDeveloper committed Jan 26, 2023
2 parents 25f4b72 + 8d47549 commit d6b2cd1
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ public override UniversalGameStats GetFromSource(int boardGameGeekGameDefinition
{
return new UniversalGameStats
{
AveragePlayersPerGame = definition.GameDefinitions.Average(y => y.PlayedGames.Select(p => p.NumberOfPlayers).Average()),
AveragePlayersPerGame = definition.GameDefinitions.Where(gd => gd.PlayedGames.Any()).Average(y => y.PlayedGames.Select(p => p.NumberOfPlayers).Average()),
TotalNumberOfGamesPlayed = definition.GameDefinitions.Sum(y => y.PlayedGames.Count),
TotalGamingGroupsWithThisGame = definition.GameDefinitions.Where(g => g.Active && g.PlayedGames.Any()).GroupBy(y => y.GamingGroupId).Select(z => z.Key).Count()
TotalGamingGroupsWithThisGame = definition.GameDefinitions.Count(g => g.Active && g.PlayedGames.Any())
};
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,15 @@ public void SetUp()
new PlayedGame
{
NumberOfPlayers = 2
}
},
new PlayedGame
{
NumberOfPlayers = 2
},
new PlayedGame
{
NumberOfPlayers = 2
},
}
},
new GameDefinition
Expand Down Expand Up @@ -95,7 +103,7 @@ public void It_Returns_The_Total_Number_Of_Games_Played()
var result = _autoMocker.ClassUnderTest.GetFromSource(_boardGameGeekGameDefinitionId);

//--assert
result.TotalNumberOfGamesPlayed.ShouldBe(2);
result.TotalNumberOfGamesPlayed.ShouldBe(4);
}

[Test]
Expand Down Expand Up @@ -134,5 +142,48 @@ public void It_Returns_Defaults_If_There_Are_No_Game_Definitions()
result.TotalGamingGroupsWithThisGame.ShouldBe(0);
result.TotalNumberOfGamesPlayed.ShouldBe(0);
}

[Test]
public void It_Handles_Game_Definitions_With_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>
{
new PlayedGame
{
NumberOfPlayers = 3
}
}
}
},
};
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(3);
result.TotalGamingGroupsWithThisGame.ShouldBe(1);
result.TotalNumberOfGamesPlayed.ShouldBe(1);
}
}
}

0 comments on commit d6b2cd1

Please sign in to comment.