feat(launcher): Campaign LA add Avalonia desktop shell

This commit is contained in:
Erik 2026-08-14 18:15:14 +02:00
parent 6c4cd2bbc6
commit d0a9c65d85
31 changed files with 4831 additions and 16 deletions

View file

@ -187,6 +187,60 @@ public sealed class LauncherProfileStoreTests : IDisposable
Assert.Equal("0x5000000A", character.Id);
}
[Fact]
public void AddEditAndRemoveCachedCharacterRoundTripsThroughTheCrudSurface()
{
var store = new LauncherProfileStore(_filePath);
store.Load();
store.AddServer("Local ACE", "127.0.0.1", 9000);
store.AddAccount("Local ACE", "testaccount", "pw");
store.AddCharacter(
"Local ACE",
"testaccount",
"+Manual",
"0x5000000a");
CharacterProfile character = Assert.Single(
store.Document.Servers.Single().Accounts.Single().Characters);
Assert.Equal("0x5000000A", character.Id);
Assert.Equal(LaunchMode.GuiSelect, character.LaunchMode);
store.EditCharacter(
"Local ACE",
"testaccount",
"+Manual",
newName: "+Renamed",
newId: "",
launchMode: LaunchMode.Headless);
character = Assert.Single(
store.Document.Servers.Single().Accounts.Single().Characters);
Assert.Equal("+Renamed", character.Name);
Assert.Null(character.Id);
Assert.Equal(LaunchMode.Headless, character.LaunchMode);
store.RemoveCharacter("Local ACE", "testaccount", "+Renamed");
Assert.Empty(store.Document.Servers.Single().Accounts.Single().Characters);
}
[Theory]
[InlineData("5000000A")]
[InlineData("0x00000000")]
[InlineData("not-an-id")]
public void AddCharacterRejectsAnAmbiguousOrInvalidId(string id)
{
var store = new LauncherProfileStore(_filePath);
store.Load();
store.AddServer("Local ACE", "127.0.0.1", 9000);
store.AddAccount("Local ACE", "testaccount", "pw");
Assert.Throws<LauncherProfileException>(() =>
store.AddCharacter(
"Local ACE",
"testaccount",
"+Manual",
id));
}
[Fact]
public void FullProfileWithServersAccountsAndCharactersRoundTripsThroughDisk()
{