Stundenplan: Wochenraster, Wochennavigation, Ferien/Feiertage (Kapitel 4.3)
Neuer Stundenplan mit "Heute"-Standardansicht (Tagesliste unten angedockt, gruppenübergreifendes Wochenraster mit Fach/Klasse/Raum/Thema, Vor-/Zurück- Navigation zwischen Kalenderwochen) und separatem Bearbeiten-Raster für die wöchentliche Zuordnung. Badges für Ferien-/Klausur-Nähe und ausgegraute Ferientage direkt im Plan statt einer separaten Liste. Ferien-/Feiertage- Pflege (Bundesland, Schulferien) sitzt jetzt in den Einstellungen statt im Stundenplan selbst. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -529,4 +529,63 @@ public sealed class RepositoryTests
|
||||
|
||||
Assert.Empty(repo.GetAll());
|
||||
}
|
||||
|
||||
// ── TimetableSlotRepository ───────────────────────────────────────────────
|
||||
|
||||
[Fact]
|
||||
public void TimetableSlotRepository_GetByGroup_FindetNurSlotsDerGruppe()
|
||||
{
|
||||
using var db = NewInMemoryContext();
|
||||
var repo = new TimetableSlotRepository(db);
|
||||
var groupA = Guid.NewGuid();
|
||||
var groupB = Guid.NewGuid();
|
||||
repo.Save(new TimetableSlot { GroupId = groupA, Weekday = DayOfWeek.Monday, PeriodNumber = 1 });
|
||||
repo.Save(new TimetableSlot { GroupId = groupB, Weekday = DayOfWeek.Monday, PeriodNumber = 2 });
|
||||
|
||||
var result = repo.GetByGroup(groupA);
|
||||
|
||||
Assert.Single(result);
|
||||
Assert.Equal(groupA, result[0].GroupId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TimetableSlotRepository_Save_LehntDoppelbelegungDerselbenStundeAb()
|
||||
{
|
||||
using var db = NewInMemoryContext();
|
||||
var repo = new TimetableSlotRepository(db);
|
||||
repo.Save(new TimetableSlot { GroupId = Guid.NewGuid(), Weekday = DayOfWeek.Tuesday, PeriodNumber = 3 });
|
||||
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
repo.Save(new TimetableSlot { GroupId = Guid.NewGuid(), Weekday = DayOfWeek.Tuesday, PeriodNumber = 3 }));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TimetableSlotRepository_Save_AktualisierenDesselbenSlotsIstErlaubt()
|
||||
{
|
||||
using var db = NewInMemoryContext();
|
||||
var repo = new TimetableSlotRepository(db);
|
||||
var slot = new TimetableSlot { GroupId = Guid.NewGuid(), Weekday = DayOfWeek.Tuesday, PeriodNumber = 3 };
|
||||
repo.Save(slot);
|
||||
|
||||
slot.Room = "R204";
|
||||
repo.Save(slot);
|
||||
|
||||
Assert.Equal("R204", repo.GetAll().Single().Room);
|
||||
}
|
||||
|
||||
// ── SchoolHolidayRepository ───────────────────────────────────────────────
|
||||
|
||||
[Fact]
|
||||
public void SchoolHolidayRepository_GetAll_SortiertNachStartdatum()
|
||||
{
|
||||
using var db = NewInMemoryContext();
|
||||
var repo = new SchoolHolidayRepository(db);
|
||||
repo.Save(new SchoolHoliday { Name = "Sommerferien", StartDate = new DateOnly(2026, 7, 1), EndDate = new DateOnly(2026, 8, 10) });
|
||||
repo.Save(new SchoolHoliday { Name = "Osterferien", StartDate = new DateOnly(2026, 3, 30), EndDate = new DateOnly(2026, 4, 10) });
|
||||
|
||||
var result = repo.GetAll();
|
||||
|
||||
Assert.Equal("Osterferien", result[0].Name);
|
||||
Assert.Equal("Sommerferien", result[1].Name);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user