Browse Source

Support selecting Razor layout page for a new MVC view from a list of available Razor pages in the project.

pull/18/head
Matt Ward 15 years ago
parent
commit
7aa62b7436
  1. 4
      src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
  2. 25
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
  3. 3
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcProject.cs
  4. 8
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileName.cs
  5. 18
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProject.cs
  6. 35
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectFile.cs
  7. 40
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectMasterPageFile.cs
  8. 39
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectRazorFile.cs
  9. 8
      src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj
  10. 22
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcProject.cs
  11. 32
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcMasterPageFileNameCollectionAssert.cs
  12. 10
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcProjectFileAssert.cs
  13. 32
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcProjectFileCollectionAssert.cs
  14. 91
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs
  15. 51
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectFileTests.cs
  16. 45
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectMasterPageFileTests.cs
  17. 45
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectRazorFileTests.cs
  18. 106
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs

4
src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj

@ -79,7 +79,7 @@
<Compile Include="Src\IsMvcFolderSelectedConditionEvaluator.cs" /> <Compile Include="Src\IsMvcFolderSelectedConditionEvaluator.cs" />
<Compile Include="Src\IsMvcViewFolderSelectedConditionEvaluator.cs" /> <Compile Include="Src\IsMvcViewFolderSelectedConditionEvaluator.cs" />
<Compile Include="Configuration\AssemblyInfo.cs" /> <Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Src\MvcMasterPageFileName.cs" /> <Compile Include="Src\MvcProjectMasterPageFile.cs" />
<Compile Include="Src\MvcModelClassLocator.cs" /> <Compile Include="Src\MvcModelClassLocator.cs" />
<Compile Include="Src\MvcAddViewTextTemplateFolder.cs" /> <Compile Include="Src\MvcAddViewTextTemplateFolder.cs" />
<Compile Include="Src\MvcClass.cs" /> <Compile Include="Src\MvcClass.cs" />
@ -96,6 +96,8 @@
<Compile Include="Src\MvcParserService.cs" /> <Compile Include="Src\MvcParserService.cs" />
<Compile Include="Src\MvcProject.cs" /> <Compile Include="Src\MvcProject.cs" />
<Compile Include="Src\MvcProjectContent.cs" /> <Compile Include="Src\MvcProjectContent.cs" />
<Compile Include="Src\MvcProjectFile.cs" />
<Compile Include="Src\MvcProjectRazorFile.cs" />
<Compile Include="Src\MvcTextTemplateCriteria.cs" /> <Compile Include="Src\MvcTextTemplateCriteria.cs" />
<Compile Include="Src\MvcTextTemplateFileName.cs" /> <Compile Include="Src\MvcTextTemplateFileName.cs" />
<Compile Include="Src\MvcTextTemplateHost.cs" /> <Compile Include="Src\MvcTextTemplateHost.cs" />

25
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs

@ -20,7 +20,7 @@ namespace ICSharpCode.AspNet.Mvc
bool isStronglyTypedView; bool isStronglyTypedView;
bool isContentPage; bool isContentPage;
bool isSelectMasterPageViewOpen; bool isSelectMasterPageViewOpen;
MvcMasterPageFileName selectedMasterPage; MvcProjectFile selectedMasterPage;
string masterPageFile = String.Empty; string masterPageFile = String.Empty;
MvcModelClassViewModelsForSelectedFolder modelClassesForSelectedFolder; MvcModelClassViewModelsForSelectedFolder modelClassesForSelectedFolder;
@ -41,7 +41,7 @@ namespace ICSharpCode.AspNet.Mvc
this.viewFileName.Folder = selectedViewFolder.Path; this.viewFileName.Folder = selectedViewFolder.Path;
this.ModelClassName = String.Empty; this.ModelClassName = String.Empty;
this.PrimaryContentPlaceHolderId = "Main"; this.PrimaryContentPlaceHolderId = "Main";
this.MasterPages = new ObservableCollection<MvcMasterPageFileName>(); this.MasterPages = new ObservableCollection<MvcProjectFile>();
CreateModelClassesForSelectedFolder(); CreateModelClassesForSelectedFolder();
CreateCommands(); CreateCommands();
@ -273,27 +273,36 @@ namespace ICSharpCode.AspNet.Mvc
void UpdateMasterPages() void UpdateMasterPages()
{ {
MasterPages.Clear(); MasterPages.Clear();
foreach (MvcMasterPageFileName fileName in GetAspxMasterPageFileNames()) { foreach (MvcProjectFile fileName in GetMasterPageFileNames()) {
MasterPages.Add(fileName); MasterPages.Add(fileName);
} }
} }
IEnumerable<MvcMasterPageFileName> GetAspxMasterPageFileNames() IEnumerable<MvcProjectFile> GetMasterPageFileNames()
{ {
var unsortedMasterPages = selectedViewFolder.Project.GetAspxMasterPageFileNames() as IEnumerable<MvcMasterPageFileName>; IEnumerable<MvcProjectFile> unsortedMasterPages = GetMasterPageFileNamesForSelectedViewEngine();
var masterPages = new List<MvcMasterPageFileName>(unsortedMasterPages); var masterPages = new List<MvcProjectFile>(unsortedMasterPages);
masterPages.Sort(); masterPages.Sort();
return masterPages; return masterPages;
} }
IEnumerable<MvcProjectFile> GetMasterPageFileNamesForSelectedViewEngine()
{
IMvcProject project = selectedViewFolder.Project;
if (IsAspxViewEngineSelected) {
return project.GetAspxMasterPageFiles();
}
return project.GetRazorFiles();
}
public void CloseSelectMasterPageView() public void CloseSelectMasterPageView()
{ {
IsSelectMasterPageViewOpen = false; IsSelectMasterPageViewOpen = false;
} }
public ObservableCollection<MvcMasterPageFileName> MasterPages { get; private set; } public ObservableCollection<MvcProjectFile> MasterPages { get; private set; }
public MvcMasterPageFileName SelectedMasterPage { public MvcProjectFile SelectedMasterPage {
get { return selectedMasterPage; } get { return selectedMasterPage; }
set { selectedMasterPage = value; } set { selectedMasterPage = value; }
} }

3
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcProject.cs

@ -17,6 +17,7 @@ namespace ICSharpCode.AspNet.Mvc
MvcTextTemplateLanguage GetTemplateLanguage(); MvcTextTemplateLanguage GetTemplateLanguage();
IEnumerable<IMvcClass> GetModelClasses(); IEnumerable<IMvcClass> GetModelClasses();
IEnumerable<MvcMasterPageFileName> GetAspxMasterPageFileNames(); IEnumerable<MvcProjectFile> GetAspxMasterPageFiles();
IEnumerable<MvcProjectFile> GetRazorFiles();
} }
} }

8
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileName.cs

@ -46,5 +46,13 @@ namespace ICSharpCode.AspNet.Mvc
} }
return String.Empty; return String.Empty;
} }
public static string GetLowerCaseFileExtension(string fileName)
{
if (fileName != null) {
return Path.GetExtension(fileName).ToLowerInvariant();
}
return String.Empty;
}
} }
} }

18
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProject.cs

@ -44,12 +44,22 @@ namespace ICSharpCode.AspNet.Mvc
return modelClassLocator.GetModelClasses(this); return modelClassLocator.GetModelClasses(this);
} }
public IEnumerable<MvcMasterPageFileName> GetAspxMasterPageFileNames() public IEnumerable<MvcProjectFile> GetAspxMasterPageFiles()
{ {
foreach (ProjectItem projectItem in Project.Items) { foreach (ProjectItem projectItem in Project.Items) {
MvcMasterPageFileName fileName = MvcMasterPageFileName.CreateMvcMasterPageFileName(projectItem); MvcProjectFile file = MvcProjectMasterPageFile.CreateMvcProjectMasterPageFile(projectItem);
if (fileName != null) { if (file != null) {
yield return fileName; yield return file;
}
}
}
public IEnumerable<MvcProjectFile> GetRazorFiles()
{
foreach (ProjectItem projectItem in Project.Items) {
MvcProjectFile file = MvcProjectRazorFile.CreateMvcProjectRazorFile(projectItem);
if (file != null) {
yield return file;
} }
} }
} }

35
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcMasterPageFileName.cs → src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectFile.cs

@ -7,9 +7,9 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.AspNet.Mvc namespace ICSharpCode.AspNet.Mvc
{ {
public class MvcMasterPageFileName : IComparable<MvcMasterPageFileName> public class MvcProjectFile : IComparable<MvcProjectFile>
{ {
public MvcMasterPageFileName(FileProjectItem fileProjectItem) public MvcProjectFile(FileProjectItem fileProjectItem)
{ {
UpdateFileName(fileProjectItem); UpdateFileName(fileProjectItem);
} }
@ -33,7 +33,7 @@ namespace ICSharpCode.AspNet.Mvc
return virtualPath.VirtualPath; return virtualPath.VirtualPath;
} }
public MvcMasterPageFileName() public MvcProjectFile()
{ {
FullPath = String.Empty; FullPath = String.Empty;
FileName = String.Empty; FileName = String.Empty;
@ -51,29 +51,6 @@ namespace ICSharpCode.AspNet.Mvc
return FullPath; return FullPath;
} }
public static MvcMasterPageFileName CreateMvcMasterPageFileName(ProjectItem projectItem)
{
var fileProjectItem = projectItem as FileProjectItem;
if (fileProjectItem != null) {
return CreateMvcMasterPageFileName(fileProjectItem);
}
return null;
}
public static MvcMasterPageFileName CreateMvcMasterPageFileName(FileProjectItem fileProjectItem)
{
if (IsMasterPageFileName(fileProjectItem.FileName)) {
return new MvcMasterPageFileName(fileProjectItem);
}
return null;
}
public static bool IsMasterPageFileName(string fileName)
{
string extension = GetLowerCaseFileExtension(fileName);
return extension == ".master";
}
static string GetLowerCaseFileExtension(string fileName) static string GetLowerCaseFileExtension(string fileName)
{ {
if (fileName != null) { if (fileName != null) {
@ -82,7 +59,7 @@ namespace ICSharpCode.AspNet.Mvc
return String.Empty; return String.Empty;
} }
public int CompareTo(MvcMasterPageFileName other) public int CompareTo(MvcProjectFile other)
{ {
int result = CompareFileNames(other); int result = CompareFileNames(other);
if (result == 0) { if (result == 0) {
@ -91,12 +68,12 @@ namespace ICSharpCode.AspNet.Mvc
return result; return result;
} }
int CompareFileNames(MvcMasterPageFileName other) int CompareFileNames(MvcProjectFile other)
{ {
return FileName.CompareTo(other.FileName); return FileName.CompareTo(other.FileName);
} }
int CompareFolderRelativeToProject(MvcMasterPageFileName other) int CompareFolderRelativeToProject(MvcProjectFile other)
{ {
return FolderRelativeToProject.CompareTo(other.FolderRelativeToProject); return FolderRelativeToProject.CompareTo(other.FolderRelativeToProject);
} }

40
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectMasterPageFile.cs

@ -0,0 +1,40 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.AspNet.Mvc
{
public class MvcProjectMasterPageFile
{
public static MvcProjectFile CreateMvcProjectMasterPageFile(ProjectItem projectItem)
{
var fileProjectItem = projectItem as FileProjectItem;
return CreateMvcProjectMasterPageFile(fileProjectItem);
}
public static MvcProjectFile CreateMvcProjectMasterPageFile(FileProjectItem fileProjectItem)
{
if (IsMasterPageFile(fileProjectItem)) {
return new MvcProjectFile(fileProjectItem);
}
return null;
}
public static bool IsMasterPageFile(FileProjectItem fileProjectItem)
{
if (fileProjectItem != null) {
return IsMasterPageFileName(fileProjectItem.FileName);
}
return false;
}
public static bool IsMasterPageFileName(string fileName)
{
string extension = MvcFileName.GetLowerCaseFileExtension(fileName);
return extension == ".master";
}
}
}

39
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectRazorFile.cs

@ -0,0 +1,39 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.AspNet.Mvc
{
public class MvcProjectRazorFile
{
public static MvcProjectFile CreateMvcProjectRazorFile(ProjectItem projectItem)
{
FileProjectItem fileProjectItem = projectItem as FileProjectItem;
return CreateMvcProjectRazorFile(fileProjectItem);
}
public static MvcProjectFile CreateMvcProjectRazorFile(FileProjectItem fileProjectItem)
{
if (IsRazorFile(fileProjectItem)) {
return new MvcProjectFile(fileProjectItem);
}
return null;
}
public static bool IsRazorFile(FileProjectItem fileProjectItem)
{
if (fileProjectItem != null) {
return IsRazorFileName(fileProjectItem.FileName);
}
return false;
}
public static bool IsRazorFileName(string fileName)
{
string extension = MvcFileName.GetLowerCaseFileExtension(fileName);
return extension == ".cshtml";
}
}
}

8
src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj

@ -66,8 +66,8 @@
<Compile Include="Helpers\FakeMvcViewFileGenerator.cs" /> <Compile Include="Helpers\FakeMvcViewFileGenerator.cs" />
<Compile Include="Helpers\FakeSelectedFolderNodeInProjectsView.cs" /> <Compile Include="Helpers\FakeSelectedFolderNodeInProjectsView.cs" />
<Compile Include="Helpers\FakeSelectedMvcFolder.cs" /> <Compile Include="Helpers\FakeSelectedMvcFolder.cs" />
<Compile Include="Helpers\MvcMasterPageFileNameAssert.cs" /> <Compile Include="Helpers\MvcProjectFileAssert.cs" />
<Compile Include="Helpers\MvcMasterPageFileNameCollectionAssert.cs" /> <Compile Include="Helpers\MvcProjectFileCollectionAssert.cs" />
<Compile Include="Helpers\TestableAddMvcControllerToProjectCommand.cs" /> <Compile Include="Helpers\TestableAddMvcControllerToProjectCommand.cs" />
<Compile Include="Helpers\TestableAddMvcViewToProjectCommand.cs" /> <Compile Include="Helpers\TestableAddMvcViewToProjectCommand.cs" />
<Compile Include="Helpers\TestableProject.cs" /> <Compile Include="Helpers\TestableProject.cs" />
@ -81,11 +81,13 @@
<Compile Include="Src\IsMvcViewFolderSelectedConditionEvaluatorTests.cs" /> <Compile Include="Src\IsMvcViewFolderSelectedConditionEvaluatorTests.cs" />
<Compile Include="Configuration\AssemblyInfo.cs" /> <Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="Src\MvcClassTests.cs" /> <Compile Include="Src\MvcClassTests.cs" />
<Compile Include="Src\MvcMasterPageFileNameTests.cs" /> <Compile Include="Src\MvcProjectFileTests.cs" />
<Compile Include="Src\MvcProjectMasterPageFileTests.cs" />
<Compile Include="Src\MvcModelClassLocatorTests.cs" /> <Compile Include="Src\MvcModelClassLocatorTests.cs" />
<Compile Include="Src\MvcControllerFileGeneratorTests.cs" /> <Compile Include="Src\MvcControllerFileGeneratorTests.cs" />
<Compile Include="Src\MvcControllerFileNameTests.cs" /> <Compile Include="Src\MvcControllerFileNameTests.cs" />
<Compile Include="Src\MvcModelClassViewModelTests.cs" /> <Compile Include="Src\MvcModelClassViewModelTests.cs" />
<Compile Include="Src\MvcProjectRazorFileTests.cs" />
<Compile Include="Src\MvcProjectTests.cs" /> <Compile Include="Src\MvcProjectTests.cs" />
<Compile Include="Src\MvcTextTemplateHostTests.cs" /> <Compile Include="Src\MvcTextTemplateHostTests.cs" />
<Compile Include="Src\MvcTextTemplateRepositoryTests.cs" /> <Compile Include="Src\MvcTextTemplateRepositoryTests.cs" />

22
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcProject.cs

@ -64,16 +64,28 @@ namespace AspNet.Mvc.Tests.Helpers
return ModelClasses; return ModelClasses;
} }
public List<MvcMasterPageFileName> MasterPageFileNames = new List<MvcMasterPageFileName>(); public List<MvcProjectFile> AspxMasterPageFiles = new List<MvcProjectFile>();
public void AddMasterPageFile(MvcMasterPageFileName fileName) public void AddAspxMasterPageFile(MvcProjectFile file)
{ {
MasterPageFileNames.Add(fileName); AspxMasterPageFiles.Add(file);
} }
public IEnumerable<MvcMasterPageFileName> GetAspxMasterPageFileNames() public IEnumerable<MvcProjectFile> GetAspxMasterPageFiles()
{ {
return MasterPageFileNames; return AspxMasterPageFiles;
}
public List<MvcProjectFile> RazorFiles = new List<MvcProjectFile>();
public void AddRazorFile(MvcProjectFile file)
{
RazorFiles.Add(file);
}
public IEnumerable<MvcProjectFile> GetRazorFiles()
{
return RazorFiles;
} }
} }
} }

32
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcMasterPageFileNameCollectionAssert.cs

@ -1,32 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.AspNet.Mvc;
using ICSharpCode.SharpDevelop;
using NUnit.Framework;
namespace AspNet.Mvc.Tests.Helpers
{
public static class MvcMasterPageFileNameCollectionAssert
{
public static void AreEqual(IEnumerable<MvcMasterPageFileName> expected, IEnumerable<MvcMasterPageFileName> actual)
{
List<string> expectedAsStrings = GetMvcMasterPageFileNamesAsStrings(expected);
List<string> actualAsStrings = GetMvcMasterPageFileNamesAsStrings(actual);
CollectionAssert.AreEqual(expectedAsStrings, actualAsStrings);
}
static List<string> GetMvcMasterPageFileNamesAsStrings(IEnumerable<MvcMasterPageFileName> fileNames)
{
var convertedFileNames = new List<string>();
foreach (MvcMasterPageFileName fileName in fileNames) {
string fileNameAsString = MvcMasterPageFileNameAssert.GetMvcMasterPageFileNameAsString(fileName);
convertedFileNames.Add(fileNameAsString);
}
return convertedFileNames;
}
}
}

10
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcMasterPageFileNameAssert.cs → src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcProjectFileAssert.cs

@ -7,16 +7,16 @@ using NUnit.Framework;
namespace AspNet.Mvc.Tests.Helpers namespace AspNet.Mvc.Tests.Helpers
{ {
public static class MvcMasterPageFileNameAssert public static class MvcProjectFileAssert
{ {
public static void AreEqual(MvcMasterPageFileName expected, MvcMasterPageFileName actual) public static void AreEqual(MvcProjectFile expected, MvcProjectFile actual)
{ {
string expectedAsString = GetMvcMasterPageFileNameAsString(expected); string expectedAsString = GetMvcProjectFileAsString(expected);
string actualAsString = GetMvcMasterPageFileNameAsString(actual); string actualAsString = GetMvcProjectFileAsString(actual);
Assert.AreEqual(expectedAsString, actualAsString); Assert.AreEqual(expectedAsString, actualAsString);
} }
public static string GetMvcMasterPageFileNameAsString(MvcMasterPageFileName fileName) public static string GetMvcProjectFileAsString(MvcProjectFile fileName)
{ {
return String.Format( return String.Format(
"FileName: {0}\r\nFolder: {1}\r\n, FullPath: {2}", "FileName: {0}\r\nFolder: {1}\r\n, FullPath: {2}",

32
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcProjectFileCollectionAssert.cs

@ -0,0 +1,32 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.AspNet.Mvc;
using ICSharpCode.SharpDevelop;
using NUnit.Framework;
namespace AspNet.Mvc.Tests.Helpers
{
public static class MvcProjectFileCollectionAssert
{
public static void AreEqual(IEnumerable<MvcProjectFile> expected, IEnumerable<MvcProjectFile> actual)
{
List<string> expectedAsStrings = GetMvcProjectFilesAsStrings(expected);
List<string> actualAsStrings = GetMvcProjectFilesAsStrings(actual);
CollectionAssert.AreEqual(expectedAsStrings, actualAsStrings);
}
static List<string> GetMvcProjectFilesAsStrings(IEnumerable<MvcProjectFile> fileNames)
{
var convertedFileNames = new List<string>();
foreach (MvcProjectFile fileName in fileNames) {
string fileNameAsString = MvcProjectFileAssert.GetMvcProjectFileAsString(fileName);
convertedFileNames.Add(fileNameAsString);
}
return convertedFileNames;
}
}
}

91
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs

@ -793,21 +793,21 @@ namespace AspNet.Mvc.Tests
{ {
CreateViewModel(); CreateViewModel();
SelectAspxViewEngine(); SelectAspxViewEngine();
var masterPageFile = new MvcMasterPageFileName() { var masterPageFile = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\Site.Master", FullPath = @"d:\projects\MyProject\Views\Shared\Site.Master",
FileName = "Site.Master", FileName = "Site.Master",
FolderRelativeToProject = @"Views\Shared" FolderRelativeToProject = @"Views\Shared"
}; };
fakeProject.AddMasterPageFile(masterPageFile); fakeProject.AddAspxMasterPageFile(masterPageFile);
viewModel.OpenSelectMasterPageView(); viewModel.OpenSelectMasterPageView();
var expectedFileNames = new MvcMasterPageFileName[] { var expectedFiles = new MvcProjectFile[] {
masterPageFile masterPageFile
}; };
ObservableCollection<MvcMasterPageFileName> fileNames = viewModel.MasterPages; ObservableCollection<MvcProjectFile> files = viewModel.MasterPages;
Assert.AreEqual(expectedFileNames, fileNames); Assert.AreEqual(expectedFiles, files);
} }
[Test] [Test]
@ -815,19 +815,19 @@ namespace AspNet.Mvc.Tests
{ {
CreateViewModel(); CreateViewModel();
SelectAspxViewEngine(); SelectAspxViewEngine();
var masterPageFile = new MvcMasterPageFileName(); var masterPageFile = new MvcProjectFile();
fakeProject.AddMasterPageFile(masterPageFile); fakeProject.AddAspxMasterPageFile(masterPageFile);
viewModel.OpenSelectMasterPageView(); viewModel.OpenSelectMasterPageView();
viewModel.CloseSelectMasterPageView(); viewModel.CloseSelectMasterPageView();
viewModel.OpenSelectMasterPageView(); viewModel.OpenSelectMasterPageView();
var expectedFileNames = new MvcMasterPageFileName[] { var expectedFiles = new MvcProjectFile[] {
masterPageFile masterPageFile
}; };
ObservableCollection<MvcMasterPageFileName> fileNames = viewModel.MasterPages; ObservableCollection<MvcProjectFile> files = viewModel.MasterPages;
Assert.AreEqual(expectedFileNames, fileNames); Assert.AreEqual(expectedFiles, files);
} }
[Test] [Test]
@ -845,7 +845,7 @@ namespace AspNet.Mvc.Tests
public void SelectMasterPageCommand_MasterPageIsSelected_CommandIsEnabled() public void SelectMasterPageCommand_MasterPageIsSelected_CommandIsEnabled()
{ {
CreateViewModel(); CreateViewModel();
viewModel.SelectedMasterPage = new MvcMasterPageFileName(); viewModel.SelectedMasterPage = new MvcProjectFile();
bool canExecute = viewModel.SelectMasterPageCommand.CanExecute(null); bool canExecute = viewModel.SelectMasterPageCommand.CanExecute(null);
@ -883,7 +883,7 @@ namespace AspNet.Mvc.Tests
CreateViewModel(); CreateViewModel();
viewModel.MasterPageFile = "test.master"; viewModel.MasterPageFile = "test.master";
viewModel.OpenSelectMasterPageView(); viewModel.OpenSelectMasterPageView();
var masterPageFileName = new MvcMasterPageFileName() { var masterPageFileName = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\site.master", FullPath = @"d:\projects\MyProject\Views\Shared\site.master",
FileName = "site.master", FileName = "site.master",
FolderRelativeToProject = @"Views\Shared", FolderRelativeToProject = @"Views\Shared",
@ -902,7 +902,7 @@ namespace AspNet.Mvc.Tests
{ {
CreateViewModel(); CreateViewModel();
viewModel.OpenSelectMasterPageView(); viewModel.OpenSelectMasterPageView();
var masterPageFileName = new MvcMasterPageFileName(); var masterPageFileName = new MvcProjectFile();
viewModel.SelectedMasterPage = masterPageFileName; viewModel.SelectedMasterPage = masterPageFileName;
MonitorPropertyChangedEvents(); MonitorPropertyChangedEvents();
@ -918,28 +918,79 @@ namespace AspNet.Mvc.Tests
{ {
CreateViewModel(); CreateViewModel();
SelectAspxViewEngine(); SelectAspxViewEngine();
var masterPageFile1 = new MvcMasterPageFileName() { var masterPageFile1 = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\ViewSite.Master", FullPath = @"d:\projects\MyProject\Views\Shared\ViewSite.Master",
FileName = "ViewSite.Master", FileName = "ViewSite.Master",
FolderRelativeToProject = @"Views\Shared" FolderRelativeToProject = @"Views\Shared"
}; };
fakeProject.AddMasterPageFile(masterPageFile1); fakeProject.AddAspxMasterPageFile(masterPageFile1);
var masterPageFile2 = new MvcMasterPageFileName() { var masterPageFile2 = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\Site.Master", FullPath = @"d:\projects\MyProject\Views\Shared\Site.Master",
FileName = "Site.Master", FileName = "Site.Master",
FolderRelativeToProject = @"Views\Shared" FolderRelativeToProject = @"Views\Shared"
}; };
fakeProject.AddMasterPageFile(masterPageFile2); fakeProject.AddAspxMasterPageFile(masterPageFile2);
viewModel.OpenSelectMasterPageView(); viewModel.OpenSelectMasterPageView();
var expectedFileNames = new MvcMasterPageFileName[] { var expectedFiles = new MvcProjectFile[] {
masterPageFile2, masterPageFile2,
masterPageFile1 masterPageFile1
}; };
ObservableCollection<MvcMasterPageFileName> fileNames = viewModel.MasterPages; ObservableCollection<MvcProjectFile> files = viewModel.MasterPages;
Assert.AreEqual(expectedFileNames, fileNames); Assert.AreEqual(expectedFiles, files);
}
[Test]
public void MasterPages_ProjectContainsOneRazorFileAndRazorEngineSelected_ReturnsOneRazorFile()
{
CreateViewModel();
SelectRazorViewEngine();
var razorFile = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\_Layout.cshtml",
FileName = "_Layout.cshtml",
FolderRelativeToProject = @"Views\Shared"
};
fakeProject.AddRazorFile(razorFile);
viewModel.OpenSelectMasterPageView();
var expectedFiles = new MvcProjectFile[] {
razorFile
};
ObservableCollection<MvcProjectFile> files = viewModel.MasterPages;
Assert.AreEqual(expectedFiles, files);
}
[Test]
public void MasterPages_ProjectContainsTwoRazorPagesInIncorrectSortOrder_ReturnsTwoRazorFilesSorted()
{
CreateViewModel();
SelectRazorViewEngine();
var razorFile1 = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\ViewSite.cshtml",
FileName = "ViewSite.cshtml",
FolderRelativeToProject = @"Views\Shared"
};
fakeProject.AddRazorFile(razorFile1);
var razorFile2 = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\Site.cshtml",
FileName = "Site.cshtml",
FolderRelativeToProject = @"Views\Shared"
};
fakeProject.AddRazorFile(razorFile2);
viewModel.OpenSelectMasterPageView();
var expectedFiles = new MvcProjectFile[] {
razorFile2,
razorFile1
};
ObservableCollection<MvcProjectFile> files = viewModel.MasterPages;
Assert.AreEqual(expectedFiles, files);
} }
} }
} }

51
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcMasterPageFileNameTests.cs → src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectFileTests.cs

@ -9,23 +9,22 @@ using NUnit.Framework;
namespace AspNet.Mvc.Tests namespace AspNet.Mvc.Tests
{ {
[TestFixture] public class MvcProjectFileTests
public class MvcMasterPageFileNameTests
{ {
TestableProject project; TestableProject project;
MvcMasterPageFileName masterPageFileName; MvcProjectFile file;
void CreateProject(string fileName) void CreateProject(string fileName)
{ {
project = TestableProject.CreateProject(fileName, "MyProject"); project = TestableProject.CreateProject(fileName, "MyProject");
} }
MvcMasterPageFileName CreateMasterPageFileName(string fullPath) MvcProjectFile CreateProjectFile(string fullPath)
{ {
var projectItem = new FileProjectItem(project, ItemType.Compile); var projectItem = new FileProjectItem(project, ItemType.Compile);
projectItem.FileName = fullPath; projectItem.FileName = fullPath;
masterPageFileName = new MvcMasterPageFileName(projectItem); file = new MvcProjectFile(projectItem);
return masterPageFileName; return file;
} }
[Test] [Test]
@ -33,9 +32,9 @@ namespace AspNet.Mvc.Tests
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
string expectedFullPath = @"d:\projects\MyProject\Views\Shared\Site.Master"; string expectedFullPath = @"d:\projects\MyProject\Views\Shared\Site.Master";
CreateMasterPageFileName(expectedFullPath); CreateProjectFile(expectedFullPath);
string fullPath = masterPageFileName.FullPath; string fullPath = file.FullPath;
Assert.AreEqual(expectedFullPath, fullPath); Assert.AreEqual(expectedFullPath, fullPath);
} }
@ -44,9 +43,9 @@ namespace AspNet.Mvc.Tests
public void FileName_CreatedFromFileProjectItem_ReturnsFileNameWithoutFolder() public void FileName_CreatedFromFileProjectItem_ReturnsFileNameWithoutFolder()
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
CreateMasterPageFileName(@"d:\projects\MyProject\Views\Shared\Site.Master"); CreateProjectFile(@"d:\projects\MyProject\Views\Shared\Site.Master");
string fileName = masterPageFileName.FileName; string fileName = file.FileName;
Assert.AreEqual("Site.Master", fileName); Assert.AreEqual("Site.Master", fileName);
} }
@ -55,9 +54,9 @@ namespace AspNet.Mvc.Tests
public void FolderRelativeToProject_CreatedFromFileProjectItem_ReturnsFileNameWithoutFolder() public void FolderRelativeToProject_CreatedFromFileProjectItem_ReturnsFileNameWithoutFolder()
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
CreateMasterPageFileName(@"d:\projects\MyProject\Views\Shared\Site.Master"); CreateProjectFile(@"d:\projects\MyProject\Views\Shared\Site.Master");
string folder = masterPageFileName.FolderRelativeToProject; string folder = file.FolderRelativeToProject;
Assert.AreEqual(@"Views\Shared", folder); Assert.AreEqual(@"Views\Shared", folder);
} }
@ -66,9 +65,9 @@ namespace AspNet.Mvc.Tests
public void VirtualPath_CreatedFromFileProjectItem_ReturnsAspNetVirtualPathForFileName() public void VirtualPath_CreatedFromFileProjectItem_ReturnsAspNetVirtualPathForFileName()
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
CreateMasterPageFileName(@"d:\projects\MyProject\Views\Shared\Site.Master"); CreateProjectFile(@"d:\projects\MyProject\Views\Shared\Site.Master");
string virtualPath = masterPageFileName.VirtualPath; string virtualPath = file.VirtualPath;
Assert.AreEqual("~/Views/Shared/Site.Master", virtualPath); Assert.AreEqual("~/Views/Shared/Site.Master", virtualPath);
} }
@ -77,9 +76,9 @@ namespace AspNet.Mvc.Tests
public void VirtualPath_FileInProjectRootDirectory_ReturnsAspNetVirtualPathForFileName() public void VirtualPath_FileInProjectRootDirectory_ReturnsAspNetVirtualPathForFileName()
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
CreateMasterPageFileName(@"d:\projects\MyProject\Site.Master"); CreateProjectFile(@"d:\projects\MyProject\Site.Master");
string virtualPath = masterPageFileName.VirtualPath; string virtualPath = file.VirtualPath;
Assert.AreEqual("~/Site.Master", virtualPath); Assert.AreEqual("~/Site.Master", virtualPath);
} }
@ -88,8 +87,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FileNamesAreTheSame_ReturnsZero() public void CompareTo_FileNamesAreTheSame_ReturnsZero()
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\Site.Master"); MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\Site.Master");
MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\Site.Master"); MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\Site.Master");
int result = lhs.CompareTo(rhs); int result = lhs.CompareTo(rhs);
@ -100,8 +99,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FoldersAreSameAndSecondFileNameIsGreaterThanFirstFileName_ReturnsMinusOne() public void CompareTo_FoldersAreSameAndSecondFileNameIsGreaterThanFirstFileName_ReturnsMinusOne()
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\Shared\A.Master"); MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\Shared\A.Master");
MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\Shared\Z.Master"); MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\Shared\Z.Master");
int result = lhs.CompareTo(rhs); int result = lhs.CompareTo(rhs);
@ -112,8 +111,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FoldersAreSameAndSecondFileNameIsLessThanFirstFileName_ReturnsPlusOne() public void CompareTo_FoldersAreSameAndSecondFileNameIsLessThanFirstFileName_ReturnsPlusOne()
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\Shared\Z.Master"); MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\Shared\Z.Master");
MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\Shared\A.Master"); MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\Shared\A.Master");
int result = lhs.CompareTo(rhs); int result = lhs.CompareTo(rhs);
@ -124,8 +123,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FileNamesAreSameAndSecondFolderIsLessThanFirstFolder_ReturnsPlusOne() public void CompareTo_FileNamesAreSameAndSecondFolderIsLessThanFirstFolder_ReturnsPlusOne()
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\Z\site.Master"); MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\Z\site.Master");
MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\A\site.Master"); MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\A\site.Master");
int result = lhs.CompareTo(rhs); int result = lhs.CompareTo(rhs);
@ -136,8 +135,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FileNamesAreSameAndSecondFolderIsGreaterThanFirstFolder_ReturnsMinussOne() public void CompareTo_FileNamesAreSameAndSecondFolderIsGreaterThanFirstFolder_ReturnsMinussOne()
{ {
CreateProject(@"d:\projects\MyProject\MyProject.csproj"); CreateProject(@"d:\projects\MyProject\MyProject.csproj");
MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\A\site.Master"); MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\A\site.Master");
MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\Z\site.Master"); MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\Z\site.Master");
int result = lhs.CompareTo(rhs); int result = lhs.CompareTo(rhs);

45
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectMasterPageFileTests.cs

@ -0,0 +1,45 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.AspNet.Mvc;
using NUnit.Framework;
namespace AspNet.Mvc.Tests
{
[TestFixture]
public class MvcProjectMasterPageFileTests
{
[Test]
public void IsMasterPageFileName_NullFileNamePassed_ReturnsFalse()
{
bool result = MvcProjectMasterPageFile.IsMasterPageFileName(null);
Assert.IsFalse(result);
}
[Test]
public void IsMasterPageFileName_MasterPageFileNamePassed_ReturnsTrue()
{
bool result = MvcProjectMasterPageFile.IsMasterPageFileName("Site.master");
Assert.IsTrue(result);
}
[Test]
public void IsMasterPageFileName_UpperCaseMasterPageFileNamePassed_ReturnsTrue()
{
bool result = MvcProjectMasterPageFile.IsMasterPageFileName("Site.MASTER");
Assert.IsTrue(result);
}
[Test]
public void CreateMvcProjectMasterPageFile_NullProjectItemPassed_ReturnsNull()
{
MvcProjectFile file = MvcProjectMasterPageFile.CreateMvcProjectMasterPageFile(null);
Assert.IsNull(file);
}
}
}

45
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectRazorFileTests.cs

@ -0,0 +1,45 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.AspNet.Mvc;
using NUnit.Framework;
namespace AspNet.Mvc.Tests
{
[TestFixture]
public class MvcProjectRazorFileTests
{
[Test]
public void IsRazorFileName_NullFileNamePassed_ReturnsFalse()
{
bool result = MvcProjectRazorFile.IsRazorFile(null);
Assert.IsFalse(result);
}
[Test]
public void IsRazorFileName_RazorFileNamePassed_ReturnsTrue()
{
bool result = MvcProjectRazorFile.IsRazorFileName("layout.cshtml");
Assert.IsTrue(result);
}
[Test]
public void IsRazorFileName_UpperCaseRazorFileNamePassed_ReturnsTrue()
{
bool result = MvcProjectRazorFile.IsRazorFileName("test.CSHTML");
Assert.IsTrue(result);
}
[Test]
public void CreateMvcProjectRazorFile_NullProjectItemPassed_ReturnsNull()
{
MvcProjectFile file = MvcProjectRazorFile.CreateMvcProjectRazorFile(null);
Assert.IsNull(file);
}
}
}

106
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs

@ -35,10 +35,17 @@ namespace AspNet.Mvc.Tests
testableProject.AddFileToProject(fileName); testableProject.AddFileToProject(fileName);
} }
List<MvcMasterPageFileName> GetAspxMasterPageFileNames() List<MvcProjectFile> GetAspxMasterPageFiles()
{ {
return new List<MvcMasterPageFileName>( return new List<MvcProjectFile>(
project.GetAspxMasterPageFileNames() project.GetAspxMasterPageFiles()
);
}
List<MvcProjectFile> GetRazorFiles()
{
return new List<MvcProjectFile>(
project.GetRazorFiles()
); );
} }
@ -125,74 +132,129 @@ namespace AspNet.Mvc.Tests
} }
[Test] [Test]
public void GetAspxMasterPageFileNames_OneMasterPageInProject_ReturnsOneFileName() public void GetAspxMasterPageFiles_OneMasterPageInProject_ReturnsOneFile()
{ {
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj"); CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\Site.Master"); AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\Site.Master");
List<MvcMasterPageFileName> fileNames = GetAspxMasterPageFileNames(); List<MvcProjectFile> files = GetAspxMasterPageFiles();
Assert.AreEqual(1, fileNames.Count); Assert.AreEqual(1, files.Count);
} }
[Test] [Test]
public void GetAspxMasterPageFileNames_OneMasterPageInProject_ReturnsOneMasterPageWithExpectedFileName() public void GetAspxMasterPageFiles_OneMasterPageInProject_ReturnsOneMasterPageWithExpectedFile()
{ {
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj"); CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\Site.Master"); AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\Site.Master");
MvcMasterPageFileName fileName = GetAspxMasterPageFileNames().First(); MvcProjectFile file = GetAspxMasterPageFiles().First();
var expectedFileName = new MvcMasterPageFileName() { var expectedFile = new MvcProjectFile() {
FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\Site.Master", FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\Site.Master",
FileName = "Site.Master", FileName = "Site.Master",
FolderRelativeToProject = @"Views\Shared" FolderRelativeToProject = @"Views\Shared"
}; };
MvcMasterPageFileNameAssert.AreEqual(expectedFileName, fileName); MvcProjectFileAssert.AreEqual(expectedFile, file);
} }
[Test] [Test]
public void GetAspxMasterPageFileNames_OneHtmlFileAndOneMasterPageInProject_ReturnsOneMasterPageWithExpectedFileName() public void GetAspxMasterPageFiles_OneHtmlFileAndOneMasterPageInProject_ReturnsOneMasterPageWithExpectedFileName()
{ {
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj"); CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\test.html"); AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\test.html");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\Site.Master"); AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\Site.Master");
List<MvcMasterPageFileName> fileNames = GetAspxMasterPageFileNames(); List<MvcProjectFile> files = GetAspxMasterPageFiles();
var expectedFileName = new MvcMasterPageFileName() { var expectedFileName = new MvcProjectFile() {
FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\Site.Master", FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\Site.Master",
FileName = "Site.Master", FileName = "Site.Master",
FolderRelativeToProject = @"Views\Shared" FolderRelativeToProject = @"Views\Shared"
}; };
var expectedFileNames = new MvcMasterPageFileName[] { var expectedFiles = new MvcProjectFile[] {
expectedFileName expectedFileName
}; };
MvcMasterPageFileNameCollectionAssert.AreEqual(expectedFileNames, fileNames); MvcProjectFileCollectionAssert.AreEqual(expectedFiles, files);
} }
[Test] [Test]
public void GetAspxMasterPageFileNames_OneMasterPageWithFileExtensionInUpperCaseInProject_ReturnsOneMasterPageWithExpectedFileName() public void GetAspxMasterPageFiles_OneMasterPageWithFileExtensionInUpperCaseInProject_ReturnsOneMasterPageWithExpectedFileName()
{ {
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj"); CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\TEST.MASTER"); AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\TEST.MASTER");
MvcMasterPageFileName fileName = GetAspxMasterPageFileNames().First(); MvcProjectFile fileName = GetAspxMasterPageFiles().First();
var expectedFileName = new MvcMasterPageFileName() { var expectedFileName = new MvcProjectFile() {
FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\TEST.MASTER", FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\TEST.MASTER",
FileName = "TEST.MASTER", FileName = "TEST.MASTER",
FolderRelativeToProject = @"Views\Shared" FolderRelativeToProject = @"Views\Shared"
}; };
MvcMasterPageFileNameAssert.AreEqual(expectedFileName, fileName); MvcProjectFileAssert.AreEqual(expectedFileName, fileName);
}
[Test]
public void GetRazorFiles_OneRazorFileInProject_ReturnsOneFile()
{
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\_Layout.cshtml");
List<MvcProjectFile> files = GetRazorFiles();
Assert.AreEqual(1, files.Count);
}
[Test]
public void GetRazorFiles_OneRazorFileInProject_ReturnsOneRazorFileWithExpectedFile()
{
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\_Layout.cshtml");
MvcProjectFile file = GetRazorFiles().First();
var expectedFile = new MvcProjectFile() {
FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\_Layout.cshtml",
FileName = "_Layout.cshtml",
FolderRelativeToProject = @"Views\Shared"
};
MvcProjectFileAssert.AreEqual(expectedFile, file);
}
[Test]
public void GetRazorFiles_OneHtmlFileAndOneRazorFileInProject_ReturnsOneRazorFileWithExpectedFileName()
{
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\test.html");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\test.cshtml");
List<MvcProjectFile> files = GetRazorFiles();
var expectedFileName = new MvcProjectFile() {
FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\test.cshtml",
FileName = "test.cshtml",
FolderRelativeToProject = @"Views\Shared"
};
var expectedFiles = new MvcProjectFile[] {
expectedFileName
};
MvcProjectFileCollectionAssert.AreEqual(expectedFiles, files);
} }
[Test] [Test]
public void IsMvcMasterPage_NullFileNamePassed_ReturnsFalse() public void GetRazorFiles_OneRazorWithFileExtensionInUpperCaseInProject_ReturnsOneRazorFileWithExpectedFileName()
{ {
bool result = MvcMasterPageFileName.IsMasterPageFileName(null); CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\TEST.CSHTML");
MvcProjectFile fileName = GetRazorFiles().First();
var expectedFileName = new MvcProjectFile() {
FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\TEST.CSHTML",
FileName = "TEST.CSHTML",
FolderRelativeToProject = @"Views\Shared"
};
Assert.IsFalse(result); MvcProjectFileAssert.AreEqual(expectedFileName, fileName);
} }
} }
} }

Loading…
Cancel
Save