public void BillDueCalculator_SingleReminder_NoReminderMatch_ShouldNotReportBillDue() { Bill testData = new Bill(); testData.Name = "Test Bill 1"; testData.DayOfMonth = 3; testData.ReminderIntervals = new List <int>() { 1 }; BillDueCalculator sut = new BillDueCalculator(); BillDueResult result = sut.IsBillDue(testData, new DateTime(2018, 1, 1)); Assert.False(result.IsBillDue); }
public void BillDueCalculator_SingleReminder_ReminderMatch_ShouldReportBillDue() { Bill testData = new Bill(); testData.Name = "Test Bill 1"; testData.DayOfMonth = 2; testData.ReminderIntervals = new List <int>() { 1 }; BillDueCalculator sut = new BillDueCalculator(); BillDueResult result = sut.IsBillDue(testData, new DateTime(2018, 1, 1)); Assert.True(result.IsBillDue); Assert.Equal(string.Format("Reminder: {0} payment is due in {1} days.", testData.Name, 1), result.ReminderMessage); }
public BillDueResult IsBillDue(Bill bill, DateTime currentDate) { StringBuilder logMessage = new StringBuilder(); BillDueResult result = new BillDueResult() { IsBillDue = false, ReminderMessage = "" }; logMessage.AppendFormat("Checking if {0} is due...", bill.Name); IEnumerable <int> reminders = bill .ReminderIntervals? .Where(i => i > 0 && i <= 31) .OrderByDescending(i => i); if (reminders == null) { Log.Information(string.Format("No reminder intervals specified for {0}. Skipping this bill.", bill.Name)); } foreach (int reminder in reminders) { if (isReminderNeeded(bill.DayOfMonth, reminder, currentDate)) { result.IsBillDue = true; result.ReminderMessage = string.Format("{0}: payment is due in {1} days.", bill.Name, reminder); break; } } logMessage.Append(result.IsBillDue ? "yes" : "no"); Log.Debug(logMessage.ToString()); return(result); }