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.
33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
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 _));
|
|
}
|
|
}
|