using RioJoy.Core.Profiles; using Xunit; namespace RioJoy.Core.Tests.Profiles; public class ConfigLocatorTests { [Fact] public void NoPortableFile_ResolvesToRoaming() { string dir = Path.Combine(Path.GetTempPath(), $"riojoy-loc-{Guid.NewGuid():N}"); Directory.CreateDirectory(dir); try { Assert.Equal(@"C:\roaming\config.json", ConfigLocator.Resolve(dir, @"C:\roaming\config.json")); } finally { Directory.Delete(dir, recursive: true); } } [Fact] public void PortableFileBesideExe_Wins() { string dir = Path.Combine(Path.GetTempPath(), $"riojoy-loc-{Guid.NewGuid():N}"); Directory.CreateDirectory(dir); try { string portable = Path.Combine(dir, ConfigLocator.PortableConfigFileName); File.WriteAllText(portable, "{}"); Assert.Equal(portable, ConfigLocator.Resolve(dir, @"C:\roaming\config.json")); } finally { Directory.Delete(dir, recursive: true); } } [Theory] [InlineData(null)] [InlineData("")] [InlineData(" ")] public void MissingExeDirectory_FallsBackToRoaming(string? exeDir) { Assert.Equal(@"C:\roaming\config.json", ConfigLocator.Resolve(exeDir, @"C:\roaming\config.json")); } }