using CTA.Rules.Actions; using CTA.Rules.Config; using CTA.Rules.Models; using NUnit.Framework; using System.Collections.Generic; using System.IO; using System.Reflection; namespace CTA.Rules.Test.Actions { public class ProjectFileActionsTests { private string _projectDir; private string _projectFile; private ProjectFileActions _projectFileActions; [SetUp] public void SetUp() { _projectDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); _projectFile = Path.Combine(_projectDir, "sample.csproj"); _projectFileActions = new ProjectFileActions(); } [Test] public void ProjectFileCreationNoVersion() { var result = CreateNewFile(ProjectType.Mvc, new List(), new Dictionary(), new List()); StringAssert.Contains(Constants.DefaultCoreVersion, result); } [Test] public void ProjectFileCreationMvcOneVersion() { var result = CreateNewFile(ProjectType.Mvc, new List() { SupportedFrameworks.Net5 }, new Dictionary(), new List()); StringAssert.Contains(SupportedFrameworks.Net5, result); } [Test] public void ProjectFileCreationMvcTwoVersions() { var result = CreateNewFile(ProjectType.Mvc, new List() { SupportedFrameworks.Netcore31, SupportedFrameworks.Net5 }, new Dictionary(), new List()); StringAssert.Contains(SupportedFrameworks.Netcore31, result); } [Test] public void ProjectFileCreationWebClassLibrary() { var result = CreateNewFile(ProjectType.WebClassLibrary, new List() { SupportedFrameworks.Net5 }, new Dictionary(), new List()); StringAssert.Contains(SupportedFrameworks.Net5, result); StringAssert.Contains("Microsoft.AspNetCore.App", result); } private string CreateNewFile(ProjectType projectType, List targetVersions, Dictionary packageReferences, List projectReferences) { ResetProjectFile(); var migrationProjectFileAction = _projectFileActions.GetMigrateProjectFileAction(""); var metaRefs = new List { @"C:\\RandomFile.dll" }; var result = migrationProjectFileAction(_projectFile, projectType, targetVersions, packageReferences, projectReferences, metaRefs); return string.Concat(result, File.ReadAllText(_projectFile)); } private void ResetProjectFile(string newContent = "") { if (!string.IsNullOrEmpty(newContent)) { File.WriteAllText(_projectFile, newContent); } else { File.WriteAllText(_projectFile, @" "); } } } }