From 95f2b8d375256ca7057cbe88dcbfff644697f183 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Tue, 5 Sep 2017 12:09:43 +0100 Subject: [PATCH] Add basic tests for SPA templates (no browser automation yet) --- .../Helpers/TemplatePackageInstaller.cs | 2 ++ .../Helpers/TemplateTestBase.cs | 8 ++++++ test/Templates.Test/SpaTemplateTest.cs | 28 +++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 test/Templates.Test/SpaTemplateTest.cs diff --git a/test/Templates.Test/Helpers/TemplatePackageInstaller.cs b/test/Templates.Test/Helpers/TemplatePackageInstaller.cs index b495183c66..c836389f0d 100644 --- a/test/Templates.Test/Helpers/TemplatePackageInstaller.cs +++ b/test/Templates.Test/Helpers/TemplatePackageInstaller.cs @@ -10,6 +10,8 @@ namespace Templates.Test.Helpers { "Microsoft.DotNet.Web.ItemTemplates", "Microsoft.DotNet.Web.ProjectTemplates.2.0", + "Microsoft.DotNet.Web.Spa.ProjectTemplates", + "Microsoft.AspNetCore.SpaTemplates", }; public static void ReinstallTemplatePackages() diff --git a/test/Templates.Test/Helpers/TemplateTestBase.cs b/test/Templates.Test/Helpers/TemplateTestBase.cs index e8b63e0c08..9efbce8989 100644 --- a/test/Templates.Test/Helpers/TemplateTestBase.cs +++ b/test/Templates.Test/Helpers/TemplateTestBase.cs @@ -61,6 +61,14 @@ namespace Templates.Test ProcessEx.Run(TemplateOutputDir, "dotnet", args).WaitForExit(assertSuccess: true); } + protected void RunNpmInstall() + { + // The first time this runs on any given CI agent it may take several minutes. + // If the agent has NPM 5+ installed, it should be quite a lot quicker on + // subsequent runs because of package caching. + ProcessEx.Run(TemplateOutputDir, "cmd", "/c \"npm install\"").WaitForExit(assertSuccess: true); + } + protected void AssertDirectoryExists(string path, bool shouldExist) { var fullPath = Path.Combine(TemplateOutputDir, path); diff --git a/test/Templates.Test/SpaTemplateTest.cs b/test/Templates.Test/SpaTemplateTest.cs new file mode 100644 index 0000000000..9246961723 --- /dev/null +++ b/test/Templates.Test/SpaTemplateTest.cs @@ -0,0 +1,28 @@ +using Xunit; + +namespace Templates.Test +{ + public class SpaTemplateTest : TemplateTestBase + { + [Theory] + [InlineData(null, "angular")] + [InlineData(null, "react")] + [InlineData(null, "reactredux")] + [InlineData(null, "aurelia")] + [InlineData(null, "knockout")] + [InlineData(null, "vue")] + // Just use 'angular' as representative for .NET 4.6.1 coverage, as + // the client-side code isn't affected by the .NET runtime choice + [InlineData("net461", "angular")] + public void SpaTemplate_Works(string targetFrameworkOverride, string template) + { + RunDotNetNew(template, targetFrameworkOverride); + RunNpmInstall(); + + using (var aspNetProcess = StartAspNetProcess(targetFrameworkOverride)) + { + aspNetProcess.AssertOk("/"); + } + } + } +}