diff --git a/src/Jiaowu.Api/Infrastructure/Persistence/DemoDataSeeder.cs b/src/Jiaowu.Api/Infrastructure/Persistence/DemoDataSeeder.cs index 639f605..48d2c3e 100644 --- a/src/Jiaowu.Api/Infrastructure/Persistence/DemoDataSeeder.cs +++ b/src/Jiaowu.Api/Infrastructure/Persistence/DemoDataSeeder.cs @@ -457,16 +457,18 @@ public sealed class DemoDataSeeder( .Select(x => (x.TeacherId, x.CourseId)) .ToHashSet(); var additions = new List(); - for (var teacherIndex = 0; teacherIndex < teachers.Count; teacherIndex++) + foreach (var teacher in teachers) { - var teacher = teachers[teacherIndex]; var professionalCourses = courses .Where(x => x.CollegeId == teacher.CollegeId && - x.Nature is CourseNature.MajorRequired or - CourseNature.MajorElective or CourseNature.Practice) + x.Nature is (CourseNature.MajorRequired or + CourseNature.MajorElective or CourseNature.Practice)) .Take(4); - var selectedPublicCourses = Enumerable.Range(0, 2) - .Select(offset => publicCourses[(teacherIndex + offset) % publicCourses.Count]); + var collegePublicCourses = publicCourses + .Where(x => x.CollegeId == teacher.CollegeId) + .ToList(); + var selectedPublicCourses = collegePublicCourses + .Take(2); foreach (var course in professionalCourses .Concat(selectedPublicCourses) .DistinctBy(x => x.Id)) diff --git a/tests/Jiaowu.Api.Tests/DemoDataSeederTests.cs b/tests/Jiaowu.Api.Tests/DemoDataSeederTests.cs index 61ade12..98c641a 100644 --- a/tests/Jiaowu.Api.Tests/DemoDataSeederTests.cs +++ b/tests/Jiaowu.Api.Tests/DemoDataSeederTests.cs @@ -31,7 +31,15 @@ public sealed class DemoDataSeederTests Assert.Equal(128, await db.Teachers.CountAsync()); Assert.Equal(3640, await db.Students.CountAsync()); Assert.Equal(148, await db.Courses.CountAsync()); - Assert.Equal(736, await db.TeacherCourseApplications.CountAsync()); + Assert.Equal(624, await db.TeacherCourseApplications.CountAsync()); + var crossCollegeApplications = await ( + from application in db.TeacherCourseApplications + join teacher in db.Teachers on application.TeacherId equals teacher.Id + join course in db.Courses on application.CourseId equals course.Id + where teacher.CollegeId != course.CollegeId + select application.Id) + .CountAsync(); + Assert.Equal(0, crossCollegeApplications); Assert.Equal(1, await db.AcademicTerms.CountAsync(x => x.IsCurrent)); Assert.Equal(30, await db.Classrooms.CountAsync()); }