public void TestChallengeResetPersistentChallenge()
{
using (_trans)
{
Log("Creating test users in DB");
_user1.UserID = UserDAO.CreateNewUser(_user1, "pass1");
StatisticManager.SetUserStatistic(_user1.UserID, Statistic.Steps, 0);
Log("Creating an expired persistent challenge");
int challengeId = ChallengeManager.CreateChallenge("Test Step Challenge", "This is a persistent challenge",
30, true, DateTime.Today.AddDays(-1), 1, Statistic.Steps, 500);
Log("Locking initial values");
ChallengeManager.InitializeUser(challengeId, _user1.UserID);
Log("Increasing User1's steps Statistic");
StatisticManager.SetUserStatistic(_user1.UserID, Statistic.Steps, 250);
Log("Verifying challenge progress");
Assert.AreEqual(50, ChallengeManager.GetProgress(challengeId, _user1.UserID));
Log("Calling manager's CleanUp routine");
ChallengeManager.CleanUp();
Log("Verifying that challenge progress reset");
Assert.AreEqual(0, ChallengeManager.GetProgress(challengeId, _user1.UserID));
Log("Re-locking initial value");
ChallengeManager.InitializeUser(challengeId, _user1.UserID);
Log("Increasing User1's steps Statistic");
StatisticManager.SetUserStatistic(_user1.UserID, Statistic.Steps, 450);
Log("Verifying challenge progress");
Assert.AreEqual(40, ChallengeManager.GetProgress(challengeId, _user1.UserID));
Log("Retrieving challenge from DB");
Challenge challenge = ChallengeDAO.GetChallengeFromChallengeId(challengeId);
Log("Verifying new end time");
Assert.AreEqual(DateTime.Today.AddDays(1), challenge.EndTime);
}
}