Forge
csharp4405de34
1using CascadeIDE.Models;
2using CascadeIDE.Services;
3using Xunit;
4using TestContext = Xunit.TestContext;
5
6namespace CascadeIDE.Tests;
7
8/// <summary>
9/// Примеры из <c>samples/MarkdownExamples/</c> — include в fenced-блоках; копируются в output тестов.
10/// </summary>
11public sealed class MarkdownExamplesVerificationTests
12{
13 private static string SampleMdPath =>
14 Path.Combine(AppContext.BaseDirectory, "samples", "MarkdownExamples", "sample.md");
15
16 [Fact]
17 public void SampleFilesExistNextToTestOutput()
18 {
19 Assert.True(File.Exists(SampleMdPath), $"Expected {SampleMdPath}");
20 var dir = Path.GetDirectoryName(SampleMdPath)!;
21 Assert.True(File.Exists(Path.Combine(dir, "hello.mmd")));
22 Assert.True(File.Exists(Path.Combine(dir, "hello.puml")));
23 }
24
25 [Fact]
26 public void MarkdownIncludeExpansion_ReplacesIncludesInsideMermaidAndPlantUmlFences()
27 {
28 var md = File.ReadAllText(SampleMdPath);
29 var expanded = MarkdownIncludeExpansion.ExpandMarkdown(md, SampleMdPath);
30
31 Assert.DoesNotContain("{{ INCLUDE:", expanded, StringComparison.Ordinal);
32 Assert.Contains("Hello", expanded, StringComparison.Ordinal);
33 Assert.Contains("World", expanded, StringComparison.Ordinal);
34 Assert.Contains("@startuml", expanded, StringComparison.Ordinal);
35 Assert.Contains("Alice", expanded, StringComparison.Ordinal);
36 Assert.Contains("graph TD", expanded, StringComparison.Ordinal);
37 }
38
39 [Fact]
40 public async Task AfterInclude_KrokiDisabled_LeavesDiagramFencesAsSource()
41 {
42 var md = File.ReadAllText(SampleMdPath);
43 var expanded = MarkdownIncludeExpansion.ExpandMarkdown(md, SampleMdPath);
44 var settings = new CascadeIdeSettings
45 {
46 Markdown = new MarkdownSettings { Diagrams = new MarkdownDiagramSettings { Kroki = false } }
47 };
48 var after = await MarkdownDiagramExpansion.ExpandAsync(expanded, settings, TestContext.Current.CancellationToken);
49
50 Assert.Contains("```mermaid", after, StringComparison.Ordinal);
51 Assert.Contains("```plantuml", after, StringComparison.Ordinal);
52 Assert.Contains("graph LR", after, StringComparison.Ordinal);
53 }
54}
55
View only · write via MCP/CIDE