public void ShouldAwardAchievementsForAnActivity()
        {
            _repository.Save(new Achievement() { TriggerCount = 1, TargetActivityTypeName = typeof(BrokenBuild).FullName });

            AchievementGenerator generator = new AchievementGenerator(_calculators);

            Activity activity = new BrokenBuild() { Developer = _developer };
            _developer.History.Add(activity);

            generator.GenerateAchievements(activity);

            AwardedAchievement awardedAchievement = _repository.Query<AwardedAchievement>().Single();
            Assert.That(awardedAchievement, Is.Not.Null);
        }
        public void ShouldAwardAccumulatedAchievementsForActivities()
        {
            const int triggerCount = 5;

            _repository.Save(new Achievement() { TriggerCount = triggerCount, TargetActivityTypeName = typeof(BrokenBuild).FullName });

            AchievementGenerator generator = new AchievementGenerator(_calculators);

            // Add enough history so that the next one will trigger the accumulator
            for (int i = 0; i < triggerCount - 1; i++)
            {
                _developer.History.Add(new BrokenBuild() { Developer = _developer });
            }

            Activity activity = new BrokenBuild() { Developer = _developer };
            _developer.History.Add(activity);

            generator.GenerateAchievements(activity);

            AwardedAchievement awardedAchievement = _repository.Query<AwardedAchievement>().Single();
            Assert.That(awardedAchievement, Is.Not.Null);
        }
        public void ShouldNotAwardAccumulatedAchievementsForActivitiesThatDontMeetTheTriggerCount()
        {
            const int triggerCount = 5;

            _repository.Save(new Achievement() { TriggerCount = triggerCount, TargetActivityTypeName = typeof(BrokenBuild).FullName });

            AchievementGenerator generator = new AchievementGenerator(_calculators);

            // No developer history - the next Activity will be the first
            _developer.History.Clear();

            Activity activity = new BrokenBuild() { Developer = _developer };
            _developer.History.Add(activity);

            generator.GenerateAchievements(activity);

            AwardedAchievement awardedAchievement = _repository.Query<AwardedAchievement>().SingleOrDefault();
            Assert.That(awardedAchievement, Is.Null);
        }