File: Mcp\Docs\DocsSourceConfigurationTests.cs
Web Access
Project: src\tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj (Aspire.Cli.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Aspire.Cli.Documentation.Docs;
using Microsoft.Extensions.Configuration;
 
namespace Aspire.Cli.Tests.Documentation.Docs;
 
public class DocsSourceConfigurationTests
{
    [Fact]
    public void GetLlmsTxtUrl_PrefersAspireConfigDocsPath()
    {
        var configuration = new ConfigurationBuilder()
            .AddInMemoryCollection(new Dictionary<string, string?>
            {
                [DocsSourceConfiguration.LlmsTxtUrlConfigPath] = "http://localhost:4321/llms-small.txt"
            })
            .Build();
 
        var llmsTxtUrl = DocsSourceConfiguration.GetLlmsTxtUrl(configuration);
 
        Assert.Equal("http://localhost:4321/llms-small.txt", llmsTxtUrl);
    }
 
    [Fact]
    public void GetLlmsTxtUrl_DefaultsToBuiltInSource()
    {
        var configuration = new ConfigurationBuilder().Build();
 
        var llmsTxtUrl = DocsSourceConfiguration.GetLlmsTxtUrl(configuration);
 
        Assert.Equal(DocsSourceConfiguration.DefaultLlmsTxtUrl, llmsTxtUrl);
    }
 
    [Fact]
    public void RewriteMarkdownLinks_RebasesConfiguredHostAndRemovesInPageBookmarks()
    {
        var rewritten = DocsSourceConfiguration.RewriteMarkdownLinks(
            "See [Aspire CLI](/get-started/install-cli/) and [Why HTTPS matters](#why-https-matters).",
            "http://localhost:4321/llms-small.txt");
 
        Assert.Equal(
            "See [Aspire CLI](http://localhost:4321/get-started/install-cli/) and Why HTTPS matters.",
            rewritten);
    }
 
    [Fact]
    public void GetContentCacheKey_DefaultSourceUsesFriendlyStem()
    {
        var cacheKey = DocsSourceConfiguration.GetContentCacheKey("https://aspire.dev/llms-small.txt");
 
        Assert.Equal("llms-small", cacheKey);
    }
 
    [Fact]
    public void GetIndexCacheKey_UsesSourceSpecificCacheKey()
    {
        var aspireDevKey = DocsSourceConfiguration.GetIndexCacheKey("https://aspire.dev/llms-small.txt");
        var localhostKey = DocsSourceConfiguration.GetIndexCacheKey("http://localhost:4321/llms-small.txt");
 
        Assert.Equal("index:llms-small", aspireDevKey);
        Assert.NotEqual(aspireDevKey, localhostKey);
    }
}