public void TestBadgeStatisticIndependence()
{
using (_trans)
{
InitializeBadges();
int initial = _user.ActivityScore.BadgeScore;
Log("Fetching Steps badge");
Badge stepBadge = BadgeDAO.GetBadgeFromUserIdAndStatistic(_id, Statistic.Steps);
Log("Fetching Walking badge");
Badge walkBadge = BadgeDAO.GetBadgeFromUserIdAndStatistic(_id, Statistic.WalkDistance);
Log("Setting user's initial statistics to bronze levels");
StatisticManager.SetUserStatistic(_id, Statistic.Steps,
BadgeConstants.Steps.REQUIREMENTS[BadgeLevels.Bronze]);
StatisticManager.SetUserStatistic(_id, Statistic.WalkDistance,
BadgeConstants.WalkDistance.REQUIREMENTS[BadgeLevels.Bronze]);
User user2 = UserDAO.GetUserFromUserId(_id);
int expectedUpdate1 = initial + BadgeConstants.Steps.REWARDS[BadgeLevels.Bronze] + BadgeConstants.WalkDistance.REWARDS[BadgeLevels.Bronze];
Log("Verifying badge rewards");
Assert.AreEqual(expectedUpdate1, user2.ActivityScore.BadgeScore);
Log("Increasing step statistic to silver level");
StatisticManager.SetUserStatistic(_id, Statistic.Steps,
BadgeConstants.Steps.REQUIREMENTS[BadgeLevels.Silver]);
user2 = UserDAO.GetUserFromUserId(_id);
Log("Verifying no new walking badge points awarded");
Assert.AreEqual(expectedUpdate1 + BadgeConstants.Steps.REWARDS[BadgeLevels.Silver],
user2.ActivityScore.BadgeScore);
}
}