fix(viewer): fresh signups start with empty DisplayName

Verified against Wizard.Title/UserNameInput.cs:30 in the 2026-05-23
decompile:

    IsFinished = !string.IsNullOrEmpty(PlayerStaticData.UserName);

Any non-empty seeded value — including the prior " - " placeholder
this method was passing — sets IsFinished=true on the first frame and
silently skips both the input dialog and the /tutorial/update_action #1
+ /account/update_name calls that travel with it. The in-source comment
described the opposite behavior; empty string is what actually triggers
the dialog.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-05-28 21:19:03 -04:00
parent b18bb9502a
commit 22c01ed11a
2 changed files with 27 additions and 6 deletions

View File

@@ -25,4 +25,23 @@ public class ViewerRepositoryTutorialDefaultTests
"client. Tests that want a pre-completed tutorial should use SeedViewerAsync " +
"(which defaults to 100).");
}
[Test]
public async Task RegisterAnonymousViewer_starts_with_empty_display_name()
{
// The client's Wizard.Title/UserNameInput.Start does:
// IsFinished = !string.IsNullOrEmpty(PlayerStaticData.UserName);
// Any non-empty seeded value (including the prior " - " placeholder) makes the
// name-input dialog skip itself, and the /tutorial/update_action #1 +
// /account/update_name calls never fire. Empty is what triggers the dialog.
using var factory = new SVSimTestFactory();
using var scope = factory.Services.CreateScope();
var repo = scope.ServiceProvider.GetRequiredService<IViewerRepository>();
var viewer = await repo.RegisterAnonymousViewer(System.Guid.NewGuid());
Assert.That(viewer.DisplayName, Is.Empty,
"Anonymous signups MUST start with empty DisplayName so the client's " +
"UserNameInput.Start IsNullOrEmpty short-circuit fails and the dialog runs.");
}
}