修正实验室选择

This commit is contained in:
biss committed 2026-08-15 22:42:20 +08:00
1 parent 57372cf615
commit 90877ae428
3 files changed
+110 -42

No files matched your search

@@ -45,24 +45,28 @@ public sealed class ExperimentsControllerTests
var pasted = fixture.BatchProjectRequest(ExperimentArrangementMode.SelfScheduled) with
{
Names = ["实验一", "实验二"]
Names = ["实验一", "实验二"],
ProjectCount = 2
};
Assert.IsType<CreatedResult>(await controller.CreateProjects(pasted, CancellationToken.None));
Assert.Equal(["实验一", "实验二"], await fixture.Db.ExperimentProjects
.OrderBy(x => x.TeachingTask!.TaskNumber)
Assert.Equal(["实验一", "实验二", "实验一", "实验二"], await fixture.Db.ExperimentProjects
.OrderBy(x => x.TeachingTask!.TaskNumber).ThenBy(x => x.Code)
.Select(x => x.Name)
.ToListAsync());
Assert.Equal(["LAB-BATCH-01", "LAB-BATCH-02"], await fixture.Db.ExperimentProjects
.Select(x => x.Code).Distinct().OrderBy(x => x).ToListAsync());
fixture.Db.ExperimentProjects.RemoveRange(fixture.Db.ExperimentProjects);
await fixture.Db.SaveChangesAsync();
var sequential = fixture.BatchProjectRequest(ExperimentArrangementMode.SelfScheduled) with
{
Name = "数据库实验",
GenerateSequentialNames = true
GenerateSequentialNames = true,
ProjectCount = 3
};
Assert.IsType<CreatedResult>(await controller.CreateProjects(sequential, CancellationToken.None));
Assert.Equal(["数据库实验 01", "数据库实验 02"], await fixture.Db.ExperimentProjects
.OrderBy(x => x.TeachingTask!.TaskNumber)
Assert.Equal(["数据库实验 01", "数据库实验 02", "数据库实验 03", "数据库实验 01", "数据库实验 02", "数据库实验 03"], await fixture.Db.ExperimentProjects
.OrderBy(x => x.TeachingTask!.TaskNumber).ThenBy(x => x.Code)
.Select(x => x.Name)
.ToListAsync());
}
@@ -254,6 +258,23 @@ public sealed class ExperimentsControllerTests
await fixture.Controller(fixture.StudentScope).Book(session.Id, CancellationToken.None));
}
[Fact]
public async Task SelfScheduledSession_AllowsAnyEnabledTeachingVenue()
{
await using var fixture = await ExperimentFixture.CreateAsync();
fixture.Classroom.TeachingVenueNature = TeachingVenueNature.GeneralClassroom;
await fixture.Db.SaveChangesAsync();
var manager = fixture.Controller(fixture.ManagerScope);
await manager.CreateProject(
fixture.ProjectRequest(ExperimentArrangementMode.SelfScheduled),
CancellationToken.None);
var project = await fixture.Db.ExperimentProjects.SingleAsync();
Assert.IsType<CreatedResult>(await manager.CreateSession(
project.Id, fixture.SessionRequest(1, 2), CancellationToken.None));
}
[Fact]
public async Task BoundInstructor_CanCancelOwnSession()
{