实验成绩导出
This commit is contained in:
1 parent
bcdb00ee2e
commit
4446cfbd30
3 files changed
+194
No files matched your search
@@ -14,6 +14,92 @@ namespace Jiaowu.Api.Tests;
|
||||
|
||||
public sealed class ExperimentGradesControllerTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task ExportTeachingTaskScores_IncludesEveryProjectAndPublishedTotal()
|
||||
{
|
||||
await using var fixture = await ExperimentGradeFixture.CreateAsync();
|
||||
var firstProject = new ExperimentProject
|
||||
{
|
||||
TeachingTaskId = fixture.Task.Id,
|
||||
Code = "LAB-EXPORT-1",
|
||||
Name = "实验一",
|
||||
ArrangementMode = ExperimentArrangementMode.Centralized,
|
||||
StartDate = fixture.Term.StartDate,
|
||||
EndDate = fixture.Term.EndDate,
|
||||
Status = ExperimentProjectStatus.Published,
|
||||
PublishedAt = DateTime.UtcNow
|
||||
};
|
||||
var secondProject = new ExperimentProject
|
||||
{
|
||||
TeachingTaskId = fixture.Task.Id,
|
||||
Code = "LAB-EXPORT-2",
|
||||
Name = "实验二",
|
||||
ArrangementMode = ExperimentArrangementMode.Centralized,
|
||||
StartDate = fixture.Term.StartDate,
|
||||
EndDate = fixture.Term.EndDate,
|
||||
Status = ExperimentProjectStatus.Published,
|
||||
PublishedAt = DateTime.UtcNow
|
||||
};
|
||||
fixture.Db.ExperimentProjects.AddRange(firstProject, secondProject);
|
||||
await fixture.Db.SaveChangesAsync();
|
||||
fixture.Db.ExperimentGradeSheets.AddRange(
|
||||
new ExperimentGradeSheet
|
||||
{
|
||||
ExperimentProjectId = firstProject.Id,
|
||||
ContributionWeight = 1,
|
||||
PassScore = 60,
|
||||
Status = ExperimentGradeSheetStatus.Published,
|
||||
PublishedAt = DateTime.UtcNow,
|
||||
Records =
|
||||
[
|
||||
new ExperimentGradeRecord
|
||||
{
|
||||
StudentId = fixture.Student.Id,
|
||||
ParticipationStatus = ExperimentParticipationStatus.Completed,
|
||||
TotalScore = 80,
|
||||
IsPassed = true
|
||||
}
|
||||
]
|
||||
},
|
||||
new ExperimentGradeSheet
|
||||
{
|
||||
ExperimentProjectId = secondProject.Id,
|
||||
ContributionWeight = 3,
|
||||
PassScore = 60,
|
||||
Status = ExperimentGradeSheetStatus.Published,
|
||||
PublishedAt = DateTime.UtcNow,
|
||||
Records =
|
||||
[
|
||||
new ExperimentGradeRecord
|
||||
{
|
||||
StudentId = fixture.Student.Id,
|
||||
ParticipationStatus = ExperimentParticipationStatus.Completed,
|
||||
TotalScore = 90,
|
||||
IsPassed = true
|
||||
}
|
||||
]
|
||||
});
|
||||
await fixture.Db.SaveChangesAsync();
|
||||
await ExperimentGradeAggregationService.RefreshTeachingTaskAsync(
|
||||
fixture.Db,
|
||||
fixture.Task.Id,
|
||||
CancellationToken.None);
|
||||
fixture.Db.ChangeTracker.Clear();
|
||||
|
||||
var file = Assert.IsType<FileContentResult>(await fixture
|
||||
.ExperimentGrades(fixture.AdminScope)
|
||||
.ExportTeachingTaskScores(fixture.Task.Id, CancellationToken.None));
|
||||
await using var stream = new MemoryStream(file.FileContents);
|
||||
using var workbook = new XLWorkbook(stream);
|
||||
var worksheet = workbook.Worksheet("课程实验成绩");
|
||||
Assert.Equal("LAB-EXPORT-1·实验一(已发布)", worksheet.Cell(1, 9).GetString());
|
||||
Assert.Equal("LAB-EXPORT-2·实验二(已发布)", worksheet.Cell(1, 10).GetString());
|
||||
Assert.Equal("实验合成总分(仅已发布项目)", worksheet.Cell(1, 11).GetString());
|
||||
Assert.Equal("80", worksheet.Cell(2, 9).GetFormattedString());
|
||||
Assert.Equal("90", worksheet.Cell(2, 10).GetFormattedString());
|
||||
Assert.Equal("87.5", worksheet.Cell(2, 11).GetFormattedString());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task UpdateSettings_ReplacesItemsAndRecreatesScores()
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user