Der Button, der aus „Problem erkannt" ein „Problem gelöst" macht: startet eine interaktive Claude-Session, die dem Nutzer beim Einrichten hilft. ## Warum externes Terminal Der ConPTY-Stack (`PtyTerminalSession`, `ConPtyPaneView`) liegt in `ClaudeDo.Ui` und ist Avalonia — der Installer ist WPF und referenziert nur Data/Releases/Localization. Beim Fresh Install sind `app\`/`worker\` außerdem noch n ClaudeDo-Task: 4e196058-38a3-404f-9862-4cb0e90195da
45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
using ClaudeDo.Installer.Core;
|
|
using ClaudeDo.Installer.Pages.PathsPage;
|
|
using ClaudeDo.Installer.Pages.ServicePage;
|
|
using ClaudeDo.Installer.Pages.SystemCheckPage;
|
|
using ClaudeDo.Installer.Pages.UiSettingsPage;
|
|
using ClaudeDo.Installer.Pages.WelcomePage;
|
|
using ClaudeDo.Installer.Tests.Core;
|
|
|
|
namespace ClaudeDo.Installer.Tests;
|
|
|
|
public class PageResolverTests
|
|
{
|
|
[Fact]
|
|
public void SystemCheckPage_is_in_the_wizard_directly_after_welcome()
|
|
{
|
|
var context = new InstallContext();
|
|
var pages = new IInstallerPage[]
|
|
{
|
|
new WelcomePageViewModel(context),
|
|
new SystemCheckPageViewModel(context, () => throw new InvalidOperationException(), TestClaudeHelpLauncher.Create()),
|
|
new PathsPageViewModel(context),
|
|
new ServicePageViewModel(context),
|
|
new UiSettingsPageViewModel(context),
|
|
};
|
|
|
|
var resolver = new PageResolver(pages);
|
|
var wizardPages = resolver.WizardPages;
|
|
|
|
var welcomeIndex = wizardPages.ToList().FindIndex(p => p is WelcomePageViewModel);
|
|
var systemCheckIndex = wizardPages.ToList().FindIndex(p => p is SystemCheckPageViewModel);
|
|
|
|
Assert.NotEqual(-1, welcomeIndex);
|
|
Assert.Equal(welcomeIndex + 1, systemCheckIndex);
|
|
}
|
|
|
|
[Fact]
|
|
public void SystemCheckPage_is_not_shown_in_settings()
|
|
{
|
|
var context = new InstallContext();
|
|
var page = new SystemCheckPageViewModel(context, () => throw new InvalidOperationException(), TestClaudeHelpLauncher.Create());
|
|
|
|
Assert.False(page.ShowInSettings);
|
|
}
|
|
}
|