feat(ui): Cheat-Sheet-Fenster im Hilfe-Menue
Sechs Markdown-Sheets (git, Conventional Commits, Claude CLI, Claude-Config, dotnet CLI, PowerShell) als EmbeddedResource, gerendert im modelosen, per Topmost anpinnbaren CheatSheetsWindow. MarkdownView bekommt dafuer das Opt-in CommandRows: `befehl` - beschreibung wird zu Mono-Chip + Copy-Button, jede ##-Sektion landet in einem Expander. Enthaelt ausserdem: Mission Control wird beim Oeffnen aus dem Minimiert-Zustand geholt, nicht nur aktiviert.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
using ClaudeDo.Ui.Views.Controls;
|
||||
using Xunit;
|
||||
|
||||
namespace ClaudeDo.Ui.Tests.Views;
|
||||
|
||||
/// <summary>
|
||||
/// Covers the command-row split only — rendering itself needs an Avalonia app, which this
|
||||
/// project has no host for.
|
||||
/// </summary>
|
||||
public class MarkdownCommandRowTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData("`git status -sb` — Kurzstatus mit Branch-Zeile", "git status -sb", "Kurzstatus mit Branch-Zeile")]
|
||||
[InlineData("`git branch -d <name>` — löschen (`-D` erzwingt)", "git branch -d <name>", "löschen (`-D` erzwingt)")]
|
||||
[InlineData("`dotnet build`", "dotnet build", "")]
|
||||
public void SplitsCommandFromDescription(string line, string cmd, string desc)
|
||||
{
|
||||
Assert.True(MarkdownView.TrySplitCommand(line, out var actualCmd, out var actualDesc));
|
||||
Assert.Equal(cmd, actualCmd);
|
||||
Assert.Equal(desc, actualDesc);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("Prosa ohne Befehl")]
|
||||
[InlineData("Text mit `code` in der Mitte")]
|
||||
[InlineData("`unclosed backtick")]
|
||||
[InlineData("``")]
|
||||
public void LeavesNonCommandBulletsToThePlainRenderer(string line)
|
||||
{
|
||||
Assert.False(MarkdownView.TrySplitCommand(line, out _, out _));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user