Pause the school on warning notices until the owner dismisses them.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -44,6 +44,62 @@ public class SchoolStoreTests
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Save_RoundTripsStickyNotices_AndOmitsThemWhenMissing()
|
||||
{
|
||||
var directory = Directory.CreateTempSubdirectory("h-school-store-");
|
||||
try
|
||||
{
|
||||
var store = CreateStore(directory.FullName);
|
||||
store.Save(new SchoolSave
|
||||
{
|
||||
Format = 3,
|
||||
Id = 2,
|
||||
Name = "Sticky",
|
||||
GameTime = new DateTime(2012, 3, 31, 6, 0, 0, DateTimeKind.Utc),
|
||||
Running = false,
|
||||
SpeedIndex = 1,
|
||||
Notices =
|
||||
[
|
||||
new StickyNoticeSave
|
||||
{
|
||||
Id = 9,
|
||||
DefName = "GenerationFailed",
|
||||
Severity = 2,
|
||||
Pause = true,
|
||||
TtlMs = 0,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
var withNotices = Assert.Single(store.LoadAll());
|
||||
var sticky = Assert.Single(withNotices.Notices!);
|
||||
Assert.Equal(9u, sticky.Id);
|
||||
Assert.Equal("GenerationFailed", sticky.DefName);
|
||||
Assert.True(sticky.Pause);
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(directory.FullName, "3.json"),
|
||||
"""
|
||||
{
|
||||
"format": 3,
|
||||
"id": 3,
|
||||
"name": "Plain",
|
||||
"gameTime": "2012-03-31T06:00:00Z",
|
||||
"running": false,
|
||||
"speedIndex": 0
|
||||
}
|
||||
""");
|
||||
|
||||
var plain = store.LoadAll().Single(save => save.Id == 3);
|
||||
Assert.True(plain.Notices is null || plain.Notices.Count == 0);
|
||||
}
|
||||
finally
|
||||
{
|
||||
directory.Delete(recursive: true);
|
||||
}
|
||||
}
|
||||
|
||||
private static SchoolStore CreateStore(string directory)
|
||||
{
|
||||
var options = Options.Create(new SimulationOptions { SavesDirectory = directory });
|
||||
|
||||
Reference in New Issue
Block a user