pass in a config object rather than a term to create a semester

This commit is contained in:
2023-01-09 19:55:06 -07:00
parent dc70216f1d
commit 6c91078147
4 changed files with 41 additions and 38 deletions

View File

@@ -7,14 +7,14 @@ public class SemesterPlannerTests
[Test] [Test]
public void TestCanCreatePlanner() public void TestCanCreatePlanner()
{ {
var canvasTerm = new EnrollmentTermModel(
Id: 1, var config = new SemesterConfiguration(
Name: "one", StartDate: new DateTime(2022, 1, 1),
StartAt: new DateTime(2022, 1, 1), EndDate: new DateTime(2022, 1, 2),
EndAt: new DateTime(2022, 1, 2) new DayOfWeek[] { }
); );
var semester = new SemesterPlanner(canvasTerm); var semester = new SemesterPlanner(config);
semester.Months.Count().Should().Be(1); semester.Months.Count().Should().Be(1);
} }
@@ -22,14 +22,13 @@ public class SemesterPlannerTests
[Test] [Test]
public void TestNewPlannerHasCorrectNumberOfMonths() public void TestNewPlannerHasCorrectNumberOfMonths()
{ {
var canvasTerm = new EnrollmentTermModel( var config = new SemesterConfiguration(
Id: 1, StartDate: new DateTime(2022, 1, 1),
Name: "one", EndDate: new DateTime(2022, 2, 1),
StartAt: new DateTime(2022, 1, 1), new DayOfWeek[] { }
EndAt: new DateTime(2022, 2, 1)
); );
var semester = new SemesterPlanner(canvasTerm); var semester = new SemesterPlanner(config);
semester.Months.Count().Should().Be(2); semester.Months.Count().Should().Be(2);
} }
@@ -37,14 +36,13 @@ public class SemesterPlannerTests
[Test] [Test]
public void TestNewPlannerHandlesTermsThatWrapYears() public void TestNewPlannerHandlesTermsThatWrapYears()
{ {
var canvasTerm = new EnrollmentTermModel( var config = new SemesterConfiguration(
Id: 1, StartDate: new DateTime(2022, 12, 1),
Name: "one", EndDate: new DateTime(2023, 1, 1),
StartAt: new DateTime(2022, 12, 1), new DayOfWeek[] { }
EndAt: new DateTime(2023, 1, 1)
); );
var semester = new SemesterPlanner(canvasTerm); var semester = new SemesterPlanner(config);
semester.Months.Count().Should().Be(2); semester.Months.Count().Should().Be(2);
} }
@@ -52,14 +50,13 @@ public class SemesterPlannerTests
[Test] [Test]
public void TestSemesterGetsCorrectMonths() public void TestSemesterGetsCorrectMonths()
{ {
var canvasTerm = new EnrollmentTermModel( var config = new SemesterConfiguration(
Id: 1, StartDate: new DateTime(2022, 1, 1),
Name: "one", EndDate: new DateTime(2022, 2, 1),
StartAt: new DateTime(2022, 1, 1), new DayOfWeek[] { }
EndAt: new DateTime(2022, 2, 1)
); );
var semester = new SemesterPlanner(canvasTerm); var semester = new SemesterPlanner(config);
semester.Months.First().Month.Should().Be(1); semester.Months.First().Month.Should().Be(1);
semester.Months.Last().Month.Should().Be(2); semester.Months.Last().Month.Should().Be(2);
@@ -69,14 +66,13 @@ public class SemesterPlannerTests
[Test] [Test]
public void TestMonthsCanWrapYears() public void TestMonthsCanWrapYears()
{ {
var canvasTerm = new EnrollmentTermModel( var config = new SemesterConfiguration(
Id: 1, StartDate: new DateTime(2022, 12, 1),
Name: "one", EndDate: new DateTime(2023, 1, 1),
StartAt: new DateTime(2022, 12, 1), new DayOfWeek[] { }
EndAt: new DateTime(2023, 1, 1)
); );
var semester = new SemesterPlanner(canvasTerm); var semester = new SemesterPlanner(config);
semester.Months.First().Month.Should().Be(12); semester.Months.First().Month.Should().Be(12);
semester.Months.First().Year.Should().Be(2022); semester.Months.First().Year.Should().Be(2022);

View File

@@ -6,18 +6,18 @@
[Parameter, EditorRequired] [Parameter, EditorRequired]
public EnrollmentTermModel Term { get; set; } = default!; public EnrollmentTermModel Term { get; set; } = default!;
private SemesterPlanner semester { get; set; } = default!; @* private SemesterPlanner semester { get; set; } = default!;
protected override void OnParametersSet() protected override void OnParametersSet()
{ {
semester = new SemesterPlanner(Term); semester = new SemesterPlanner(Term);
} } *@
} }
@Term.Name @Term.Name
@foreach (var month in semester.Months) @* @foreach (var month in semester.Months)
{ {
<MonthDetail Month="month" /> <MonthDetail Month="month" />
<hr /> <hr />
} } *@

View File

@@ -3,10 +3,12 @@ using CanvasModel.EnrollmentTerms;
public class SemesterPlanner public class SemesterPlanner
{ {
public IEnumerable<CalendarMonth> Months { get; } public IEnumerable<CalendarMonth> Months { get; }
public SemesterPlanner(EnrollmentTermModel canvasTerm) public SemesterPlanner(SemesterConfiguration configuration)
{ {
var start = canvasTerm.StartAt ?? throw new Exception($"Canvas Term must have a start date. Term: {canvasTerm.Id}"); // var start = configuration.StartAt ?? throw new Exception($"Canvas Term must have a start date. Term: {configuration.Id}");
var end = canvasTerm.EndAt ?? throw new Exception($"Canvas Term must have a end date. Term: {canvasTerm.Id}"); // var end = configuration.EndAt ?? throw new Exception($"Canvas Term must have a end date. Term: {configuration.Id}");
var start = configuration.StartDate;
var end = configuration.EndDate;
var monthsInTerm = var monthsInTerm =
1 + ((end.Year - start.Year) * 12) 1 + ((end.Year - start.Year) * 12)

View File

@@ -0,0 +1,5 @@
public record SemesterConfiguration(
DateTime StartDate,
DateTime EndDate,
IEnumerable<DayOfWeek> Days
);