using System.IO; using AxCopilot.Services.Agent; using FluentAssertions; using Xunit; namespace AxCopilot.Tests.Services; public class PptxTemplateManifestCatalogTests { [Fact] public void Resolve_ShouldReturnManifestEntry_ForKnownTemplate() { var entry = PptxTemplateManifestCatalog.Resolve("basic100"); entry.Should().NotBeNull(); entry!.FileName.Should().Be("BASIC100 기준 템플릿 V1.pptx"); entry.FallbackTheme.Should().Be("professional"); } [Fact] public void ResolveTemplate_ShouldFindBundledSourceAsset_FromTestRuntime() { var resolution = PptxTemplateManifestCatalog.ResolveTemplate("basic100"); resolution.Entry.Should().NotBeNull(); resolution.IsResolved.Should().BeTrue(); resolution.Status.Should().Be("resolved"); File.Exists(resolution.ResolvedPath).Should().BeTrue(); Path.GetFileName(resolution.ResolvedPath!).Should().Be(resolution.Entry!.FileName); } [Fact] public void EnumerateCandidateDirectories_ShouldIncludeProjectSourceAssets() { var directories = PptxTemplateManifestCatalog.EnumerateCandidateDirectoriesForTesting( AppContext.BaseDirectory, Environment.CurrentDirectory, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); directories.Should().Contain(path => path.EndsWith(Path.Combine("src", "AxCopilot", "Assets", "ppt"), StringComparison.OrdinalIgnoreCase)); } }