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

View File

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

View File

@@ -3,10 +3,12 @@ using CanvasModel.EnrollmentTerms;
public class SemesterPlanner
{
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 end = canvasTerm.EndAt ?? throw new Exception($"Canvas Term must have a end date. Term: {canvasTerm.Id}");
// var start = configuration.StartAt ?? throw new Exception($"Canvas Term must have a start date. Term: {configuration.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 =
1 + ((end.Year - start.Year) * 12)

View File

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