Enhance world simulation and API functionality; implement clock management improvements, ensure proper handling of world states during updates, and refine data persistence methods to prevent resurrecting deleted worlds.
This commit is contained in:
@@ -47,6 +47,39 @@ public sealed class WorldStoreTests : IDisposable
|
||||
Assert.Equal(1, await _store.CountAsync());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task TryUpdateSummaryAsync_writes_over_an_existing_state_file()
|
||||
{
|
||||
var summary = Summary("alpha-11111111", "Alpha");
|
||||
await _store.SaveSummaryAsync(summary);
|
||||
|
||||
Assert.True(await _store.TryUpdateSummaryAsync(summary with { Name = "Renamed" }));
|
||||
Assert.Equal("Renamed", (await _store.GetSummaryAsync(summary.Id))?.Name);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task TryUpdateSummaryAsync_refuses_to_recreate_a_deleted_world()
|
||||
{
|
||||
var summary = Summary("alpha-11111111", "Alpha");
|
||||
await _store.SaveSummaryAsync(summary);
|
||||
Assert.True(_store.Delete(summary.Id));
|
||||
|
||||
Assert.False(await _store.TryUpdateSummaryAsync(summary));
|
||||
Assert.False(Directory.Exists(Path.Combine(_root, summary.Id)));
|
||||
Assert.Equal(0, await _store.CountAsync());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SaveSummaryAsync_leaves_no_scratch_files_behind()
|
||||
{
|
||||
var summary = Summary("alpha-11111111", "Alpha");
|
||||
await _store.SaveSummaryAsync(summary);
|
||||
await _store.SaveSummaryAsync(summary with { Name = "Alpha again" });
|
||||
|
||||
var files = Directory.GetFiles(Path.Combine(_root, summary.Id));
|
||||
Assert.Equal(["state.json"], files.Select(static path => Path.GetFileName(path)).Order().ToArray()!);
|
||||
}
|
||||
|
||||
private static WorldSummaryDto Summary(string id, string name) => new()
|
||||
{
|
||||
Id = id,
|
||||
|
||||
Reference in New Issue
Block a user