| 1 | using CascadeIDE.Models; |
| 2 | using CascadeIDE.Services; |
| 3 | using Xunit; |
| 4 | using TestContext = Xunit.TestContext; |
| 5 | |
| 6 | namespace CascadeIDE.Tests; |
| 7 | |
| 8 | /// <summary> |
| 9 | /// Примеры из <c>samples/MarkdownExamples/</c> — include в fenced-блоках; копируются в output тестов. |
| 10 | /// </summary> |
| 11 | public 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 | |