import_viewer: round-trip ViewerMissionData scalars (mission_meta)
This commit is contained in:
@@ -450,4 +450,38 @@ public class AdminControllerTests
|
||||
"Empty deck slots must be skipped; only the real (non-empty) deck imports.");
|
||||
Assert.That(stored.Decks.Single().Name, Is.EqualTo("Real"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task ImportViewer_MissionMeta_RoundTrips()
|
||||
{
|
||||
using var factory = new SVSimTestFactory();
|
||||
var client = factory.CreateClient();
|
||||
ulong steamId = 70000000000000001UL;
|
||||
|
||||
var resp = await client.PostAsJsonAsync("/admin/import_viewer", new ImportViewerRequest
|
||||
{
|
||||
SteamId = steamId,
|
||||
MissionMeta = new ImportMissionMeta
|
||||
{
|
||||
HasReceivedPickTwoMission = true,
|
||||
MissionReceiveType = 2,
|
||||
MissionChangeTime = 1_700_000_000L
|
||||
}
|
||||
});
|
||||
resp.EnsureSuccessStatusCode();
|
||||
|
||||
using var scope = factory.Services.CreateScope();
|
||||
var db = scope.ServiceProvider.GetRequiredService<SVSimDbContext>();
|
||||
var viewer = await db.Viewers
|
||||
.Include(v => v.MissionData)
|
||||
.SingleAsync(v => v.SocialAccountConnections
|
||||
.Any(s => s.AccountType == SocialAccountType.Steam && s.AccountId == steamId));
|
||||
|
||||
Assert.That(viewer.MissionData, Is.Not.Null);
|
||||
Assert.That(viewer.MissionData!.HasReceivedPickTwoMission, Is.True);
|
||||
Assert.That(viewer.MissionData.MissionReceiveType, Is.EqualTo(2));
|
||||
// MissionChangeTime is DateTime in storage; verify it survives the round-trip from unix seconds.
|
||||
Assert.That(viewer.MissionData.MissionChangeTime,
|
||||
Is.EqualTo(DateTimeOffset.FromUnixTimeSeconds(1_700_000_000L).UtcDateTime));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user