实验视图
This commit is contained in:
@@ -215,6 +215,89 @@ public sealed class ExperimentGradesControllerTests
|
||||
Assert.Equal(1, Property<int>(filtered.Value, "Total"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ManagementList_OrdersProjectsByScheduledWeekAndPeriod()
|
||||
{
|
||||
await using var fixture = await ExperimentGradeFixture.CreateAsync();
|
||||
var plan = new SchedulePlan
|
||||
{
|
||||
AcademicTermId = fixture.Term.Id,
|
||||
Name = "实验课表",
|
||||
Version = "v1",
|
||||
Status = SchedulePlanStatus.Published
|
||||
};
|
||||
var laterEntry = new ScheduleEntry
|
||||
{
|
||||
SchedulePlanId = plan.Id,
|
||||
TeachingTaskId = fixture.Task.Id,
|
||||
ClassroomId = fixture.Classroom.Id,
|
||||
Kind = ScheduleEntryKind.Experiment,
|
||||
DayOfWeek = 4,
|
||||
StartPeriod = 5,
|
||||
PeriodCount = 2,
|
||||
StartWeek = 5,
|
||||
EndWeek = 5,
|
||||
WeekPattern = WeekPattern.All
|
||||
};
|
||||
var earlierEntry = new ScheduleEntry
|
||||
{
|
||||
SchedulePlanId = plan.Id,
|
||||
TeachingTaskId = fixture.Task.Id,
|
||||
ClassroomId = fixture.Classroom.Id,
|
||||
Kind = ScheduleEntryKind.Experiment,
|
||||
DayOfWeek = 2,
|
||||
StartPeriod = 3,
|
||||
PeriodCount = 2,
|
||||
StartWeek = 2,
|
||||
EndWeek = 2,
|
||||
WeekPattern = WeekPattern.All
|
||||
};
|
||||
fixture.Db.AddRange(plan, laterEntry, earlierEntry);
|
||||
fixture.Db.AddRange(
|
||||
new ExperimentProject
|
||||
{
|
||||
TeachingTaskId = fixture.Task.Id,
|
||||
ScheduleEntryId = laterEntry.Id,
|
||||
ScheduleWeek = 5,
|
||||
Code = "LAB-A",
|
||||
Name = "后面的实验",
|
||||
ArrangementMode = ExperimentArrangementMode.Centralized,
|
||||
StartDate = fixture.Term.StartDate,
|
||||
EndDate = fixture.Term.EndDate,
|
||||
Status = ExperimentProjectStatus.Published
|
||||
},
|
||||
new ExperimentProject
|
||||
{
|
||||
TeachingTaskId = fixture.Task.Id,
|
||||
ScheduleEntryId = earlierEntry.Id,
|
||||
ScheduleWeek = 2,
|
||||
Code = "LAB-Z",
|
||||
Name = "前面的实验",
|
||||
ArrangementMode = ExperimentArrangementMode.Centralized,
|
||||
StartDate = fixture.Term.StartDate,
|
||||
EndDate = fixture.Term.EndDate,
|
||||
Status = ExperimentProjectStatus.Published
|
||||
});
|
||||
await fixture.Db.SaveChangesAsync();
|
||||
fixture.Db.ChangeTracker.Clear();
|
||||
|
||||
var result = Assert.IsType<OkObjectResult>(await fixture.ExperimentGrades(
|
||||
fixture.AdminScope).GetManagement(
|
||||
fixture.Term.Id, null, null, null, 1, 10, CancellationToken.None));
|
||||
var course = Assert.Single(Property<System.Collections.IEnumerable>(
|
||||
result.Value, "Items").Cast<object>());
|
||||
var projects = Property<System.Collections.IEnumerable>(course, "Projects")
|
||||
.Cast<object>()
|
||||
.ToList();
|
||||
|
||||
Assert.Equal(["前面的实验", "后面的实验"],
|
||||
projects.Select(project => Property<string>(project, "Name")));
|
||||
var schedule = Property<object>(projects[0], "ScheduleEntry");
|
||||
Assert.Equal(2, Property<int>(projects[0], "ScheduleWeek"));
|
||||
Assert.Equal(2, Property<int>(schedule, "DayOfWeek"));
|
||||
Assert.Equal(3, Property<int>(schedule, "StartPeriod"));
|
||||
}
|
||||
|
||||
private static T Property<T>(object? value, string name) =>
|
||||
Assert.IsAssignableFrom<T>(
|
||||
value!.GetType().GetProperty(name)!.GetValue(value));
|
||||
|
||||
Reference in New Issue
Block a user