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.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(); } }