Kapitel 7 abgeschlossen.
This commit is contained in:
@@ -40,6 +40,37 @@ public sealed class RepositoryTests
|
||||
Assert.Equal(2, repo.GetAll(includeInactive: true).Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StudentRepository_Delete_LehntVerknuepfteDatenAb()
|
||||
{
|
||||
using var db = NewInMemoryContext();
|
||||
var repo = new StudentRepository(db);
|
||||
var student = new Student { FirstName = "Anna", LastName = "Beispiel" };
|
||||
repo.Save(student);
|
||||
db.Memberships.Insert(new GroupMembership { StudentId = student.Id, GroupId = Guid.NewGuid() });
|
||||
db.Grades.Insert(new Grade { StudentId = student.Id, GroupId = Guid.NewGuid(), Value = "2" });
|
||||
|
||||
var references = repo.GetReferenceSummary(student.Id);
|
||||
|
||||
Assert.Equal(1, references.Memberships);
|
||||
Assert.Equal(1, references.Grades);
|
||||
Assert.Throws<InvalidOperationException>(() => repo.Delete(student.Id));
|
||||
Assert.NotNull(repo.GetById(student.Id));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StudentRepository_Delete_EntferntUnverknuepftenSchueler()
|
||||
{
|
||||
using var db = NewInMemoryContext();
|
||||
var repo = new StudentRepository(db);
|
||||
var student = new Student { FirstName = "Anna", LastName = "Beispiel" };
|
||||
repo.Save(student);
|
||||
|
||||
repo.Delete(student.Id);
|
||||
|
||||
Assert.Null(repo.GetById(student.Id));
|
||||
}
|
||||
|
||||
// ── GroupRepository ───────────────────────────────────────────────────────
|
||||
|
||||
[Fact]
|
||||
@@ -66,6 +97,53 @@ public sealed class RepositoryTests
|
||||
Assert.NotNull(groupRepo.GetAll(includeInactive: true).FirstOrDefault(g => g.Name == "Mathe G"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ArchivierteGruppe_BlockiertZentraleSchreibvorgaenge()
|
||||
{
|
||||
using var db = NewInMemoryContext();
|
||||
var groupRepo = new GroupRepository(db);
|
||||
var group = new LearningGroup { Name = "8a", SchoolYear = "2025/26", IsActive = true };
|
||||
groupRepo.Save(group);
|
||||
group.IsActive = false;
|
||||
groupRepo.Save(group);
|
||||
|
||||
var membership = new GroupMembership { GroupId = group.Id, StudentId = Guid.NewGuid() };
|
||||
var exam = new Exam { GroupId = group.Id, Title = "Test" };
|
||||
|
||||
Assert.Throws<InvalidOperationException>(() => new GroupMembershipRepository(db).Save(membership));
|
||||
Assert.Throws<InvalidOperationException>(() => new ExamRepository(db).Save(exam));
|
||||
Assert.Throws<InvalidOperationException>(() => new GradeRepository(db).Save(
|
||||
new Grade { GroupId = group.Id, StudentId = Guid.NewGuid(), Value = "2" }));
|
||||
Assert.Throws<InvalidOperationException>(() => new UnitRepository(db).Save(
|
||||
new Unit { GroupId = group.Id, Title = "Einheit" }));
|
||||
Assert.Throws<InvalidOperationException>(() => new TimetableSlotRepository(db).Save(
|
||||
new TimetableSlot { GroupId = group.Id, Weekday = DayOfWeek.Monday, PeriodNumber = 1 }));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ArchivierteGruppe_MussVorKorrekturSeparatReaktiviertWerden()
|
||||
{
|
||||
using var db = NewInMemoryContext();
|
||||
var repo = new GroupRepository(db);
|
||||
var group = new LearningGroup { Name = "8a", SchoolYear = "2025/26", IsActive = true };
|
||||
repo.Save(group);
|
||||
group.IsActive = false;
|
||||
repo.Save(group);
|
||||
|
||||
var archived = repo.GetById(group.Id)!;
|
||||
archived.Name = "Geändert";
|
||||
Assert.Throws<InvalidOperationException>(() => repo.Save(archived));
|
||||
archived.IsActive = true;
|
||||
Assert.Throws<InvalidOperationException>(() => repo.Save(archived));
|
||||
|
||||
archived.Name = "8a";
|
||||
repo.Save(archived);
|
||||
archived.Name = "8b";
|
||||
repo.Save(archived);
|
||||
|
||||
Assert.Equal("8b", repo.GetById(group.Id)!.Name);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GroupRepository_Delete_LoeschtAlleAbhaengigenDatensaetzeKaskadierend()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user