public void RewardTraining_UpdatesExisting() { int months = 24; var tester = RewardTrainingTestData.Create(); var target = tester.AddCourse(new TrainingCourse { DisplayName = "Target", FullName = "Target Course", ValidMonths = months }); var existing = new ComputedTrainingAward { Course = target, Member = tester.Member, Expiry = DateTime.Today.AddDays(7), Completed = DateTime.Today.AddMonths(-months).AddDays(7) }; tester.DatabaseRecords.Add(existing); tester.myAwards = tester.DatabaseRecords.ToDictionary(f => f.Course.Id, f => f); tester.NewString = target.Id.ToString(); bool result = tester.RunRewardTraining(); Assert.IsTrue(result, "should have updated record"); var record = tester.DatabaseRecords.Single(); Assert.AreEqual(tester.Expiry, record.Expiry, "expirt"); }
public void RewardTraining_CourseNotFound() { var tester = RewardTrainingTestData.Create(); tester.NewString = Guid.NewGuid().ToString(); TestCalculator calc = new TestCalculator(tester.MockDB.Object); Assert.Throws <InvalidOperationException>(() => tester.RunRewardTraining()); }
public void RewardTraining_UseTargetsDefaultNoExpiry() { var tester = RewardTrainingTestData.Create(); var target = tester.AddCourse(new TrainingCourse { DisplayName = "Target", FullName = "Target" }); tester.NewString = string.Format("{0}:default", target.Id); bool result = tester.RunRewardTraining(); Assert.IsTrue(result, "should have added record"); var record = tester.DatabaseRecords.Single(); Assert.IsFalse(record.Expiry.HasValue, "expiration"); }
public void RewardTraining_UseRuleExpiry() { int customMonths = 16; var tester = RewardTrainingTestData.Create(); var target = tester.AddCourse(new TrainingCourse { DisplayName = "Target", FullName = "Target", ValidMonths = 13 }); tester.NewString = string.Format("{0}:{1}", target.Id, customMonths); bool result = tester.RunRewardTraining(); Assert.IsTrue(result, "should have added record"); var record = tester.DatabaseRecords.Single(); Assert.AreEqual(tester.Completed.Value.AddMonths(customMonths), record.Expiry, "reward should use expiry specified by rule"); }
public void RewardTraining_UseTargetsDefaultExpiry() { int months = 35; var tester = RewardTrainingTestData.Create(); var target = tester.AddCourse(new TrainingCourse { DisplayName = "Target", FullName = "Target Course With Expiry", ValidMonths = months }); tester.NewString = string.Format("{0}:default", target.Id); bool result = tester.RunRewardTraining(); Assert.IsTrue(result, "should have added a record"); Assert.AreEqual(1, tester.DatabaseRecords.Count(), "expected awards count"); var record = tester.DatabaseRecords.Single(); Assert.AreEqual(tester.Completed.Value.AddMonths(months), record.Expiry, "resulting expiry"); }
public void RewardTraining_CourseWithExpiryGivesTwoCourses() { var tester = RewardTrainingTestData.Create(); var source = tester.AddCourse(new TrainingCourse { DisplayName = "A", FullName = "Composite Source A", ValidMonths = 24 }); var resultA = tester.AddCourse(new TrainingCourse { DisplayName = "B", FullName = "Component Course B" }); var resultB = tester.AddCourse(new TrainingCourse { DisplayName = "C", FullName = "Component Course C" }); tester.NewString = string.Format("{0}+{1}", resultA.Id, resultB.Id); bool result = tester.RunRewardTraining(); Assert.IsTrue(result, "should have indicated a new record"); Assert.AreEqual(2, tester.DatabaseRecords.Count(), "expected awards count"); Assert.IsTrue(tester.DatabaseRecords.Any(f => f.Completed == tester.Completed && f.Course == resultA && f.Member == tester.Member && f.Expiry == tester.Expiry)); Assert.IsTrue(tester.DatabaseRecords.Any(f => f.Completed == tester.Completed && f.Course == resultB && f.Member == tester.Member && f.Expiry == tester.Expiry)); }