File: ViteTestHelpersTests.cs
Web Access
Project: src\tests\Aspire.Cli.EndToEnd.Tests\Aspire.Cli.EndToEnd.Tests.csproj (Aspire.Cli.EndToEnd.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Text.Json;
using Aspire.Cli.EndToEnd.Tests.Helpers;
using Xunit;
 
namespace Aspire.Cli.EndToEnd.Tests;
 
public sealed class ViteTestHelpersTests
{
    [Theory]
    [InlineData("viteapp", "'viteapp'")]
    [InlineData(".", "'.'")]
    [InlineData("vite app", "'vite app'")]
    [InlineData("vite'app", "'vite'\"'\"'app'")]
    public void GetCreateCommand_UsesPinnedManifestVersion(string projectDirectory, string quotedDirectory)
    {
        using var stream = typeof(ViteTestHelpers).Assembly.GetManifestResourceStream("Aspire.Cli.EndToEnd.Tests.package.json");
        Assert.NotNull(stream);
        using var manifest = JsonDocument.Parse(stream);
        var version = manifest.RootElement.GetProperty("devDependencies").GetProperty("create-vite").GetString();
        Assert.NotNull(version);
        Assert.Matches(@"^\d+\.\d+\.\d+$", version);
 
        var command = ViteTestHelpers.GetCreateCommand(projectDirectory);
 
        Assert.Equal($"npm create -y 'vite@{version}' {quotedDirectory} -- --template vanilla-ts --no-interactive", command);
    }
}