feat: complete dashboard chapter
This commit is contained in:
@@ -18,17 +18,31 @@ public sealed class DashboardViewModelTests
|
||||
return new PeriodScheduleService(tempPath);
|
||||
}
|
||||
|
||||
private static DashboardSettingsService NewDashboardSettings()
|
||||
{
|
||||
var tempPath = System.IO.Path.Combine(
|
||||
System.IO.Path.GetTempPath(), $"lehrerapp-dashboardsettings-tests-{Guid.NewGuid():N}");
|
||||
Directory.CreateDirectory(tempPath);
|
||||
return new DashboardSettingsService(tempPath);
|
||||
}
|
||||
|
||||
private static DashboardViewModel BuildVm(LearningGroup group, Lesson lesson,
|
||||
FakeTimetableSlots? slots = null, PeriodScheduleService? periodSchedule = null)
|
||||
FakeTimetableSlots? slots = null, PeriodScheduleService? periodSchedule = null,
|
||||
FakeExams? exams = null, FakeResults? results = null, FakeGrades? grades = null,
|
||||
FakeReportGrades? reportGrades = null, FakeMemberships? memberships = null,
|
||||
FakeWorkTasks? tasks = null, FakeStudents? students = null, FakeDocumentation? documentation = null,
|
||||
DashboardSettingsService? dashboardSettings = null)
|
||||
{
|
||||
var lessons = new FakeLessons();
|
||||
lessons.Add(lesson);
|
||||
return new DashboardViewModel(
|
||||
new FakeGroups([group]), new FakeSubjects([]), lessons,
|
||||
new FakeExams([]), new FakeWorkTasks(), new FakeSessions([]), new FakeEntries(),
|
||||
new FakeStudents([]), new FakeDocumentation(),
|
||||
exams ?? new FakeExams([]), results ?? new FakeResults(), grades ?? new FakeGrades(),
|
||||
reportGrades ?? new FakeReportGrades(), memberships ?? new FakeMemberships([]),
|
||||
tasks ?? new FakeWorkTasks(), new FakeSessions([]), new FakeEntries(),
|
||||
students ?? new FakeStudents([]), documentation ?? new FakeDocumentation(),
|
||||
slots ?? new FakeTimetableSlots(), periodSchedule ?? NewPeriodSchedule(),
|
||||
new AttendanceBalanceService(), new SchoolYearService());
|
||||
new AttendanceBalanceService(), new SchoolYearService(), dashboardSettings ?? NewDashboardSettings());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -108,4 +122,109 @@ public sealed class DashboardViewModelTests
|
||||
|
||||
Assert.Equal(group.Id, navigatedTo);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UpcomingDates_BuendeltKlausurenFristenUndFoerderplanPruefungen()
|
||||
{
|
||||
var today = DateOnly.FromDateTime(DateTime.Today);
|
||||
var group = new LearningGroup { Name = "9c" };
|
||||
var exams = new FakeExams([
|
||||
new Exam { GroupId = group.Id, Title = "Chemie-Test", Date = today.AddDays(5) },
|
||||
]);
|
||||
var tasks = new FakeWorkTasks();
|
||||
tasks.Add(new WorkTask { Title = "Notenschluss", DueDate = today.AddDays(10) });
|
||||
var student = new Student { FirstName = "Anna", LastName = "Beispiel" };
|
||||
var documentation = new FakeDocumentation();
|
||||
documentation.Add(new Documentation
|
||||
{
|
||||
StudentId = student.Id, Type = DocumentationType.SupportPlan, Title = "Leseförderung",
|
||||
SupportData = new SupportData { Status = SupportStatus.Active, ReviewDate = today.AddDays(3) },
|
||||
});
|
||||
|
||||
var vm = BuildVm(group, new Lesson { GroupId = group.Id, Date = today }, exams: exams,
|
||||
tasks: tasks, students: new FakeStudents([student]), documentation: documentation);
|
||||
|
||||
Assert.Contains(vm.UpcomingDates, i => i.Kind == UpcomingDateKind.Exam && i.Title == "Chemie-Test");
|
||||
Assert.Contains(vm.UpcomingDates, i => i.Kind == UpcomingDateKind.Deadline && i.Title == "Notenschluss");
|
||||
Assert.Contains(vm.UpcomingDates, i => i.Kind == UpcomingDateKind.SupportPlan && i.StudentId == student.Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OpenCorrections_ZeigtBewertungsfortschrittJeKlausur()
|
||||
{
|
||||
var today = DateOnly.FromDateTime(DateTime.Today);
|
||||
var group = new LearningGroup { Name = "9c" };
|
||||
var exam = new Exam
|
||||
{ GroupId = group.Id, Title = "Klausur 1", Date = today.AddDays(-2), Status = ExamStatus.Conducted };
|
||||
var anna = new Student { FirstName = "Anna", LastName = "A" };
|
||||
var ben = new Student { FirstName = "Ben", LastName = "B" };
|
||||
var memberships = new FakeMemberships([
|
||||
new GroupMembership { GroupId = group.Id, StudentId = anna.Id },
|
||||
new GroupMembership { GroupId = group.Id, StudentId = ben.Id },
|
||||
]);
|
||||
var results = new FakeResults();
|
||||
results.Add(new ExamResult { ExamId = exam.Id, StudentId = anna.Id, Grade = "2" });
|
||||
|
||||
var vm = BuildVm(group, new Lesson { GroupId = group.Id, Date = today },
|
||||
exams: new FakeExams([exam]), results: results, memberships: memberships,
|
||||
students: new FakeStudents([anna, ben]));
|
||||
|
||||
var correction = Assert.Single(vm.OpenCorrections);
|
||||
Assert.Equal(1, correction.Completed);
|
||||
Assert.Equal(2, correction.Total);
|
||||
Assert.Equal(50, correction.Percent);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Alerts_ErkenntDeutlichenNotenabfall()
|
||||
{
|
||||
var today = DateOnly.FromDateTime(DateTime.Today);
|
||||
var group = new LearningGroup { Name = "9c", GradingSystem = GradingSystem.Grades1To6 };
|
||||
var student = new Student { FirstName = "Anna", LastName = "Beispiel" };
|
||||
var memberships = new FakeMemberships([
|
||||
new GroupMembership { GroupId = group.Id, StudentId = student.Id },
|
||||
]);
|
||||
var grades = new FakeGrades();
|
||||
grades.Add(new Grade { GroupId = group.Id, StudentId = student.Id, Date = today.AddDays(-20), Value = "2" });
|
||||
grades.Add(new Grade { GroupId = group.Id, StudentId = student.Id, Date = today.AddDays(-15), Value = "2" });
|
||||
grades.Add(new Grade { GroupId = group.Id, StudentId = student.Id, Date = today.AddDays(-10), Value = "4" });
|
||||
grades.Add(new Grade { GroupId = group.Id, StudentId = student.Id, Date = today.AddDays(-5), Value = "4" });
|
||||
|
||||
var vm = BuildVm(group, new Lesson { GroupId = group.Id, Date = today }, grades: grades,
|
||||
memberships: memberships, students: new FakeStudents([student]));
|
||||
|
||||
Assert.Contains(vm.Alerts, a => a.StudentId == student.Id && a.KindLabel == "Notenabfall");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Kalenderauswahl_ZeigtTermineDesGeklicktenTages()
|
||||
{
|
||||
var today = DateOnly.FromDateTime(DateTime.Today);
|
||||
var group = new LearningGroup { Name = "9c" };
|
||||
var examDate = today.AddDays(2);
|
||||
var vm = BuildVm(group, new Lesson { GroupId = group.Id, Date = today },
|
||||
exams: new FakeExams([new Exam { GroupId = group.Id, Title = "Test", Date = examDate }]));
|
||||
var day = vm.CalendarDays.Single(d => d.Date == examDate);
|
||||
|
||||
vm.SelectCalendarDayCommand.Execute(day);
|
||||
|
||||
Assert.True(day.IsSelected);
|
||||
Assert.Contains(vm.SelectedDayEvents, e => e.Kind == CalendarEventKind.Exam && e.Title == "Test");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DashboardKacheln_SichtbarkeitUndReihenfolgeWerdenGespeichert()
|
||||
{
|
||||
var settings = NewDashboardSettings();
|
||||
var today = DateOnly.FromDateTime(DateTime.Today);
|
||||
var group = new LearningGroup { Name = "9c" };
|
||||
var vm = BuildVm(group, new Lesson { GroupId = group.Id, Date = today }, dashboardSettings: settings);
|
||||
vm.TodayCard.IsVisible = false;
|
||||
vm.MoveCardDownCommand.Execute(vm.TasksCard);
|
||||
|
||||
var saved = settings.Load();
|
||||
|
||||
Assert.False(saved.Single(c => c.Key == "today").IsVisible);
|
||||
Assert.True(saved.FindIndex(c => c.Key == "tasks") > 1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user