File: Utils\VersionHelperTests.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.Utils;
 
namespace Aspire.Cli.Tests.Utils;
 
public class VersionHelperTests
{
    [Fact]
    public void TryGetCurrentCliVersionMatch_WithPrHivesAndNoChannel_ReturnsCurrentCliVersion()
    {
        var cliVersion = VersionHelper.GetDefaultSdkVersion();
        var candidates = new[]
        {
            "99.0.0",
            cliVersion,
        };
 
        var result = VersionHelper.TryGetCurrentCliVersionMatch(
            candidates,
            version => version,
            cliVersion,
            out var match,
            channelName: null,
            hasPrHives: true);
 
        Assert.True(result);
        Assert.Equal(cliVersion, match);
    }
 
    [Theory]
    [InlineData("daily")]
    [InlineData("staging")]
    [InlineData("stable")]
    public void TryGetCurrentCliVersionMatch_WithNamedChannel_ReturnsCurrentCliVersion(string channelName)
    {
        var cliVersion = VersionHelper.GetDefaultSdkVersion();
        var candidates = new[]
        {
            "99.0.0",
            cliVersion,
        };
 
        var result = VersionHelper.TryGetCurrentCliVersionMatch(
            candidates,
            version => version,
            cliVersion,
            out var match,
            channelName: channelName,
            hasPrHives: false);
 
        Assert.True(result);
        Assert.Equal(cliVersion, match);
    }
 
    [Fact]
    public void TryGetCurrentCliVersionMatch_WithNamedChannelAndNoExactMatch_ReturnsFalse()
    {
        var candidates = new[]
        {
            "99.0.0",
            "98.0.0",
        };
 
        var result = VersionHelper.TryGetCurrentCliVersionMatch(
            candidates,
            version => version,
            VersionHelper.GetDefaultSdkVersion(),
            out var match,
            channelName: "daily",
            hasPrHives: false);
 
        Assert.False(result);
        Assert.Null(match);
    }
 
    [Fact]
    public void TryGetCurrentCliVersionMatch_WithNoChannelAndNoPrHives_ReturnsFalse()
    {
        var cliVersion = VersionHelper.GetDefaultSdkVersion();
        var candidates = new[]
        {
            "99.0.0",
            cliVersion,
        };
 
        var result = VersionHelper.TryGetCurrentCliVersionMatch(
            candidates,
            version => version,
            cliVersion,
            out var match,
            channelName: null,
            hasPrHives: false);
 
        Assert.False(result);
        Assert.Null(match);
    }
 
    [Theory]
    [InlineData("pr-16820", true)]
    [InlineData("run-25422767716", true)]
    [InlineData("local", true)]
    [InlineData("LOCAL", true)]
    [InlineData("stable", false)]
    [InlineData("daily", false)]
    [InlineData("staging", false)]
    [InlineData(null, false)]
    public void IsLocalBuildChannel_RecognizesAllLocalChannelForms(string? channelName, bool expected)
    {
        Assert.Equal(expected, VersionHelper.IsLocalBuildChannel(channelName));
    }
}