forked from gongxuegit/tiku-backend.net
feat: add scoreline dynamic records
This commit is contained in:
@@ -3,6 +3,7 @@ using System.Net.Http.Json;
|
||||
using System.Text.Json;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Tiku.Api.Contracts;
|
||||
using Tiku.Domain.Catalog;
|
||||
using Tiku.Domain.Common;
|
||||
using Tiku.Domain.Content;
|
||||
using Tiku.Domain.Identity;
|
||||
@@ -174,6 +175,56 @@ public sealed class DirectContentEndpointTests
|
||||
Assert.True(dbContext.Questions.Single(item => item.Id == questionId).HasVideoExplanation);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Tenant_admin_can_upsert_scoreline_fields_and_records()
|
||||
{
|
||||
await using var factory = new ApiTestFactory();
|
||||
var seed = await SeedAdminAsync(factory);
|
||||
var regionId = Guid.NewGuid();
|
||||
var schoolId = Guid.NewGuid();
|
||||
var majorId = Guid.NewGuid();
|
||||
await factory.SeedAsync(
|
||||
new Region { Id = regionId, TenantId = seed.TenantId, Name = "四川" },
|
||||
new School { Id = schoolId, TenantId = seed.TenantId, RegionId = regionId, Name = "美术学院" },
|
||||
new Major { Id = majorId, TenantId = seed.TenantId, RegionId = regionId, SchoolId = schoolId, Name = "视觉传达" });
|
||||
using var client = factory.CreateClient();
|
||||
await LoginAsync(client, seed);
|
||||
|
||||
var fieldResponse = await client.PutAsJsonAsync(
|
||||
"/api/tenant-content/scoreline/fields",
|
||||
new DirectScorelineFieldDto
|
||||
{
|
||||
RegionId = regionId,
|
||||
FieldKey = "cultureScore",
|
||||
FieldName = "文化分",
|
||||
FieldType = "number",
|
||||
IsFilter = true,
|
||||
IsTrend = true
|
||||
});
|
||||
var recordResponse = await client.PutAsJsonAsync(
|
||||
"/api/tenant-content/scoreline/records",
|
||||
new DirectScorelineRecordDto
|
||||
{
|
||||
RegionId = regionId,
|
||||
SchoolId = schoolId,
|
||||
MajorId = majorId,
|
||||
Year = 2026,
|
||||
SchoolName = "美术学院",
|
||||
MajorName = "视觉传达",
|
||||
FieldValues = JsonSerializer.SerializeToElement(new { cultureScore = 420, rank = "A" })
|
||||
});
|
||||
|
||||
var fieldsResponse = await client.GetAsync($"/api/tenant-content/scoreline/fields?regionId={regionId}");
|
||||
var recordsResponse = await client.GetAsync($"/api/tenant-content/scoreline/records?regionId={regionId}&year=2026");
|
||||
var fieldsJson = await ReadJsonAsync(fieldsResponse);
|
||||
var recordsJson = await ReadJsonAsync(recordsResponse);
|
||||
|
||||
Assert.Equal(HttpStatusCode.OK, fieldResponse.StatusCode);
|
||||
Assert.Equal(HttpStatusCode.OK, recordResponse.StatusCode);
|
||||
Assert.Single(fieldsJson.RootElement.GetProperty("items").EnumerateArray());
|
||||
Assert.Single(recordsJson.RootElement.GetProperty("items").EnumerateArray());
|
||||
}
|
||||
|
||||
private static async Task<(Guid TenantId, Guid UserId, string Phone)> SeedAdminAsync(ApiTestFactory factory)
|
||||
{
|
||||
var tenantId = Guid.NewGuid();
|
||||
|
||||
Reference in New Issue
Block a user