From 8d8bb8bf6dee732f03f12ba0c6c4fd2d77669510 Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Wed, 4 Jan 2023 22:08:53 -0700 Subject: [PATCH] can calculate months --- Management.Test/Features/SemesterPlannerTests.cs | 14 ++++++++++++++ Management/Features/Calendar/SemesterPlanner.cs | 6 ++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Management.Test/Features/SemesterPlannerTests.cs b/Management.Test/Features/SemesterPlannerTests.cs index cdd80ba..50fe494 100644 --- a/Management.Test/Features/SemesterPlannerTests.cs +++ b/Management.Test/Features/SemesterPlannerTests.cs @@ -31,6 +31,20 @@ public class SemesterPlannerTests var semester = new SemesterPlanner(canvasTerm); + semester.Months.Count().Should().Be(2); + } + [Test] + public void TestNewPlannerHandlesTermsThatWrapYears() + { + var canvasTerm = new EnrollmentTermModel( + Id: 1, + Name: "one", + StartAt: new DateTime(2022, 12, 1), + EndAt: new DateTime(2023, 1, 1) + ); + + var semester = new SemesterPlanner(canvasTerm); + semester.Months.Count().Should().Be(2); } } \ No newline at end of file diff --git a/Management/Features/Calendar/SemesterPlanner.cs b/Management/Features/Calendar/SemesterPlanner.cs index 7368612..af801a4 100644 --- a/Management/Features/Calendar/SemesterPlanner.cs +++ b/Management/Features/Calendar/SemesterPlanner.cs @@ -5,9 +5,11 @@ public class SemesterPlanner public IEnumerable Months { get; } public SemesterPlanner(EnrollmentTermModel canvasTerm) { - var monthsInTerm = canvasTerm.EndAt?.Month - canvasTerm.StartAt?.Month + var monthsInTerm = + 1 + ((canvasTerm.EndAt?.Year - canvasTerm.StartAt?.Year) * 12) + + canvasTerm.EndAt?.Month - canvasTerm.StartAt?.Month ?? throw new Exception($"Canvas Term must have a start and end date. Term: {canvasTerm.Id}, start: {canvasTerm.StartAt}, end: {canvasTerm.EndAt}"); - Months = Enumerable.Range(1, monthsInTerm).Select(_ => new CalendarMonth()); + Months = Enumerable.Range(0, monthsInTerm).Select(_ => new CalendarMonth()); } } \ No newline at end of file