public void TestContestTeamScoreCalculation()
{
using (_trans)
{
InitializeTestDBEntries();
Log("Creating group contest");
int id = ContestManager.CreateContest(ContestType.Group, "Test Contest 1",
"This is a test time-based contest.", DateTime.Now, DateTime.Now.AddDays(1),
true, Statistic.Steps, _user1.UserID);
ContestTeam team = new ContestTeam()
{
Name = "Team1",
ContestId = id
};
int teamId = TeamDAO.CreateNewTeam(team);
TeamDAO.CreateNewTeamMember(_user1.UserID, teamId);
TeamDAO.CreateNewTeamMember(_user2.UserID, teamId);
TeamDAO.CreateNewTeamMember(_user3.UserID, teamId);
TeamDAO.CreateNewTeamMember(_user4.UserID, teamId);
Log("Setting individual initial statistics");
StatisticManager.SetUserStatistic(_user1.UserID, Statistic.Steps, 0);
StatisticManager.SetUserStatistic(_user2.UserID, Statistic.Steps, 50);
StatisticManager.SetUserStatistic(_user3.UserID, Statistic.Steps, 100);
StatisticManager.SetUserStatistic(_user4.UserID, Statistic.Steps, 150);
Log("Locking initial values");
ContestManager.LockContest(id);
Log("Adding 50 steps to each user");
StatisticManager.SetUserStatistic(_user1.UserID, Statistic.Steps, 50);
StatisticManager.SetUserStatistic(_user2.UserID, Statistic.Steps, 100);
StatisticManager.SetUserStatistic(_user3.UserID, Statistic.Steps, 150);
StatisticManager.SetUserStatistic(_user4.UserID, Statistic.Steps, 200);
Log("Retrieving Contest from DB");
Contest contest = ContestManager.GetContest(id, true, false);
Log("Verifying team aggregate score");
Assert.AreEqual(200, contest.Teams[0].Score);
}
}