修复实验排课

This commit is contained in:
2026-07-29 09:40:11 +08:00 Unverified
parent 8f56548b54
commit 356c410788
4 changed files with 187 additions and 27 deletions
+60 -1
View File
@@ -1,5 +1,6 @@
using Jiaowu.Api.Infrastructure.Persistence;
using Jiaowu.Api.Infrastructure.Experiments;
using Jiaowu.Api.Infrastructure.Exams;
using Jiaowu.Api.Infrastructure.Persistence;
using Jiaowu.Api.Infrastructure.Teaching;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
@@ -176,6 +177,64 @@ public sealed class MySqlMigrationTests
StringComparison.OrdinalIgnoreCase);
}
[Fact]
public void MySql_centralized_experiment_conflict_queries_are_translatable()
{
using var db = new AppDbContext(CreateMySqlOptions());
var firstId =
Guid.Parse("11111111-1111-1111-1111-111111111111");
var secondId =
Guid.Parse("22222222-2222-2222-2222-222222222222");
Guid[] relatedIds = [firstId, secondId];
var teacherTaskSql = CentralizedExperimentConflictQuery
.TaskIdsForTeachers(db, relatedIds)
.ToQueryString();
var classTaskSql = CentralizedExperimentConflictQuery
.TaskIdsForClasses(db, relatedIds)
.ToQueryString();
var scheduleSql = CentralizedExperimentConflictQuery
.ScheduleEntries(
db,
relatedIds,
firstId,
1,
2,
1,
2)
.ToQueryString();
var experimentSql = CentralizedExperimentConflictQuery
.ExperimentSessions(
db,
relatedIds,
new DateOnly(2026, 8, 1),
1,
2)
.ToQueryString();
Assert.Contains(
"TeachingTaskTeachers",
teacherTaskSql,
StringComparison.OrdinalIgnoreCase);
Assert.Contains(
"TeachingTaskClasses",
classTaskSql,
StringComparison.OrdinalIgnoreCase);
Assert.Contains(
"ScheduleEntries",
scheduleSql,
StringComparison.OrdinalIgnoreCase);
Assert.Contains(
"ExperimentSessions",
experimentSql,
StringComparison.OrdinalIgnoreCase);
Assert.Contains(" IN (", scheduleSql, StringComparison.OrdinalIgnoreCase);
Assert.Contains(
" IN (",
experimentSql,
StringComparison.OrdinalIgnoreCase);
}
[Fact]
public void MySql_index_names_fit_the_server_identifier_limit()
{