修复MySQL问题
This commit is contained in:
@@ -9,7 +9,7 @@ namespace Jiaowu.Api.Tests;
|
||||
public sealed class ExamArrangementServiceTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Normal_arrangement_only_updates_selected_sessions_and_requested_resource()
|
||||
public async Task Normal_arrangement_only_updates_selected_session()
|
||||
{
|
||||
await using var connection = new SqliteConnection("Data Source=:memory:");
|
||||
await connection.OpenAsync();
|
||||
@@ -37,21 +37,27 @@ public sealed class ExamArrangementServiceTests
|
||||
plan.Id,
|
||||
[selected.Id],
|
||||
assignClassrooms: true,
|
||||
assignInvigilators: false,
|
||||
assignInvigilators: true,
|
||||
CancellationToken.None);
|
||||
|
||||
var persistedSelected = await db.ExamSessions.FindAsync(selected.Id);
|
||||
var persistedUntouched = await db.ExamSessions.FindAsync(untouched.Id);
|
||||
var persistedSelected = await db.ExamSessions
|
||||
.Include(x => x.Invigilators)
|
||||
.SingleAsync(x => x.Id == selected.Id);
|
||||
var persistedUntouched = await db.ExamSessions
|
||||
.Include(x => x.Invigilators)
|
||||
.SingleAsync(x => x.Id == untouched.Id);
|
||||
Assert.True(result.Success);
|
||||
Assert.NotNull(persistedSelected!.ClassroomId);
|
||||
Assert.Null(persistedUntouched!.ClassroomId);
|
||||
Assert.Empty(persistedSelected.Invigilators);
|
||||
Assert.NotNull(persistedSelected.ClassroomId);
|
||||
Assert.Null(persistedUntouched.ClassroomId);
|
||||
Assert.Single(persistedSelected.Invigilators);
|
||||
Assert.Empty(persistedUntouched.Invigilators);
|
||||
Assert.Contains("1个场次处理完成", result.Message);
|
||||
Assert.Contains("1名监考教师", result.Message);
|
||||
Assert.Contains("程序设计", result.Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Makeup_arrangement_only_updates_selected_sessions_and_requested_resource()
|
||||
public async Task Makeup_arrangement_only_updates_selected_session()
|
||||
{
|
||||
await using var connection = new SqliteConnection("Data Source=:memory:");
|
||||
await connection.OpenAsync();
|
||||
@@ -79,16 +85,22 @@ public sealed class ExamArrangementServiceTests
|
||||
plan.Id,
|
||||
[selected.Id],
|
||||
assignClassrooms: true,
|
||||
assignInvigilators: false,
|
||||
assignInvigilators: true,
|
||||
CancellationToken.None);
|
||||
|
||||
var persistedSelected = await db.MakeupExamSessions.FindAsync(selected.Id);
|
||||
var persistedUntouched = await db.MakeupExamSessions.FindAsync(untouched.Id);
|
||||
var persistedSelected = await db.MakeupExamSessions
|
||||
.Include(x => x.Invigilators)
|
||||
.SingleAsync(x => x.Id == selected.Id);
|
||||
var persistedUntouched = await db.MakeupExamSessions
|
||||
.Include(x => x.Invigilators)
|
||||
.SingleAsync(x => x.Id == untouched.Id);
|
||||
Assert.True(result.Success);
|
||||
Assert.NotNull(persistedSelected!.ClassroomId);
|
||||
Assert.Null(persistedUntouched!.ClassroomId);
|
||||
Assert.Empty(persistedSelected.Invigilators);
|
||||
Assert.NotNull(persistedSelected.ClassroomId);
|
||||
Assert.Null(persistedUntouched.ClassroomId);
|
||||
Assert.Single(persistedSelected.Invigilators);
|
||||
Assert.Empty(persistedUntouched.Invigilators);
|
||||
Assert.Contains("1个场次处理完成", result.Message);
|
||||
Assert.Contains("1名监考教师", result.Message);
|
||||
Assert.Contains("程序设计", result.Message);
|
||||
}
|
||||
|
||||
@@ -175,6 +187,13 @@ public sealed class ExamArrangementServiceTests
|
||||
CourseId = secondCourse.Id,
|
||||
Status = TeachingTaskStatus.Published
|
||||
};
|
||||
var invigilator = new Teacher
|
||||
{
|
||||
TeacherNumber = $"INVIGILATOR-{suffix}",
|
||||
Name = "监考教师",
|
||||
CollegeId = college.Id,
|
||||
Status = TeacherStatus.Active
|
||||
};
|
||||
|
||||
db.AddRange(
|
||||
term,
|
||||
@@ -186,6 +205,7 @@ public sealed class ExamArrangementServiceTests
|
||||
secondCourse,
|
||||
firstTask,
|
||||
secondTask,
|
||||
invigilator,
|
||||
new ScheduleTimeSlot
|
||||
{
|
||||
AcademicTermId = term.Id,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Jiaowu.Api.Infrastructure.Persistence;
|
||||
using Jiaowu.Api.Infrastructure.Exams;
|
||||
using Jiaowu.Api.Infrastructure.Teaching;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
@@ -99,6 +100,21 @@ public sealed class MySqlMigrationTests
|
||||
Assert.Contains(ids[1].ToString(), sql, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MySql_invigilator_candidate_query_is_translatable_without_uuid_ordering()
|
||||
{
|
||||
using var db = new AppDbContext(CreateMySqlOptions());
|
||||
var excludedTeacherId =
|
||||
Guid.Parse("11111111-1111-1111-1111-111111111111");
|
||||
|
||||
var sql = InvigilatorCandidateQuery
|
||||
.Create(db, [excludedTeacherId])
|
||||
.ToQueryString();
|
||||
|
||||
Assert.Contains("Teachers", sql, StringComparison.OrdinalIgnoreCase);
|
||||
Assert.DoesNotContain("UUID(", sql, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MySql_teaching_task_roster_query_is_translatable()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user