The session user list sits beside {id}.json; LoadAll treated it as a school with id 0.
Co-authored-by: Cursor <cursoragent@cursor.com>
61 lines
1.9 KiB
C#
61 lines
1.9 KiB
C#
using HSchool.Server.Game;
|
|
using HSchool.Simulation;
|
|
using Microsoft.Extensions.FileProviders;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Logging.Abstractions;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
namespace HSchool.Server.Tests;
|
|
|
|
public class SchoolStoreTests
|
|
{
|
|
[Fact]
|
|
public void LoadAll_SkipsUsersJsonBesideASchoolSave()
|
|
{
|
|
var directory = Directory.CreateTempSubdirectory("h-school-store-");
|
|
try
|
|
{
|
|
File.WriteAllText(
|
|
Path.Combine(directory.FullName, UserStore.FileName),
|
|
"""{ "users": [ { "name": "Player" } ] }""");
|
|
File.WriteAllText(
|
|
Path.Combine(directory.FullName, "1.json"),
|
|
"""
|
|
{
|
|
"format": 3,
|
|
"id": 1,
|
|
"name": "North",
|
|
"gameTime": "2012-03-31T06:00:00Z",
|
|
"running": false,
|
|
"speedIndex": 0
|
|
}
|
|
""");
|
|
|
|
var store = CreateStore(directory.FullName);
|
|
var saves = store.LoadAll();
|
|
|
|
var save = Assert.Single(saves);
|
|
Assert.Equal(1, save.Id);
|
|
Assert.Equal("North", save.Name);
|
|
}
|
|
finally
|
|
{
|
|
directory.Delete(recursive: true);
|
|
}
|
|
}
|
|
|
|
private static SchoolStore CreateStore(string directory)
|
|
{
|
|
var options = Options.Create(new SimulationOptions { SavesDirectory = directory });
|
|
return new SchoolStore(options, new StubHost(), NullLogger<SchoolStore>.Instance);
|
|
}
|
|
|
|
private sealed class StubHost : IHostEnvironment
|
|
{
|
|
public string ApplicationName { get; set; } = "HSchool.Server.Tests";
|
|
public string EnvironmentName { get; set; } = "Development";
|
|
public string ContentRootPath { get; set; } = Path.GetTempPath();
|
|
public IFileProvider ContentRootFileProvider { get; set; } = new NullFileProvider();
|
|
}
|
|
}
|