public void TestChallengeMultipleInitialization()
{
using (_trans)
{
Log("Creating test users in DB");
_user1.UserID = UserDAO.CreateNewUser(_user1, "pass1");
_user2.UserID = UserDAO.CreateNewUser(_user2, "pass1");
Log("Setting User1's initial Step and Bike statistics");
StatisticManager.SetUserStatistic(_user1.UserID, Statistic.Steps, 50);
StatisticManager.SetUserStatistic(_user1.UserID, Statistic.BikeDistance, 100);
Log("Creating Step-based Challenge");
int challengeId1 = ChallengeManager.CreateChallenge("Test Step Challenge", "This is a test challenge",
30, false, DateTime.Today, 1, Statistic.Steps, 500);
Log("Creating Biking-based Challenge");
int challengeId2 = ChallengeManager.CreateChallenge("Test Bike Challenge", "This is a test challenge",
30, false, DateTime.Today, 1, Statistic.BikeDistance, 500);
Log("Locking initial values");
ChallengeManager.InitializeUser(challengeId1, _user1.UserID);
ChallengeManager.InitializeUser(challengeId2, _user1.UserID);
Log("Increasing User1's Step statistic");
StatisticManager.SetUserStatistic(_user1.UserID, Statistic.Steps, 150);
Log("Creating another Step-based Challenge");
int challengeId3 = ChallengeManager.CreateChallenge("Test Step Challenge 2", "This is another test challenge",
30, false, DateTime.Today, 1, Statistic.Steps, 500);
ChallengeManager.InitializeUser(challengeId3, _user1.UserID);
Log("Verifying initialization of first step-based challenge");
Assert.AreEqual(50, ChallengeDAO.GetInitializationValue(challengeId1, _user1.UserID));
Log("Verifying initialization of biking-based challenge");
Assert.AreEqual(100, ChallengeDAO.GetInitializationValue(challengeId2, _user1.UserID));
Log("Verifying initialization of second step-based challenge");
Assert.AreEqual(150, ChallengeDAO.GetInitializationValue(challengeId3, _user1.UserID));
}
}