diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
index 3b15162bd5..901d1b29d0 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
@@ -79,7 +79,7 @@
-
+
@@ -96,6 +96,8 @@
+
+
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
index 9d51b34db8..2775a45365 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
@@ -20,7 +20,7 @@ namespace ICSharpCode.AspNet.Mvc
bool isStronglyTypedView;
bool isContentPage;
bool isSelectMasterPageViewOpen;
- MvcMasterPageFileName selectedMasterPage;
+ MvcProjectFile selectedMasterPage;
string masterPageFile = String.Empty;
MvcModelClassViewModelsForSelectedFolder modelClassesForSelectedFolder;
@@ -41,7 +41,7 @@ namespace ICSharpCode.AspNet.Mvc
this.viewFileName.Folder = selectedViewFolder.Path;
this.ModelClassName = String.Empty;
this.PrimaryContentPlaceHolderId = "Main";
- this.MasterPages = new ObservableCollection();
+ this.MasterPages = new ObservableCollection();
CreateModelClassesForSelectedFolder();
CreateCommands();
@@ -273,27 +273,36 @@ namespace ICSharpCode.AspNet.Mvc
void UpdateMasterPages()
{
MasterPages.Clear();
- foreach (MvcMasterPageFileName fileName in GetAspxMasterPageFileNames()) {
+ foreach (MvcProjectFile fileName in GetMasterPageFileNames()) {
MasterPages.Add(fileName);
}
}
- IEnumerable GetAspxMasterPageFileNames()
+ IEnumerable GetMasterPageFileNames()
{
- var unsortedMasterPages = selectedViewFolder.Project.GetAspxMasterPageFileNames() as IEnumerable;
- var masterPages = new List(unsortedMasterPages);
+ IEnumerable unsortedMasterPages = GetMasterPageFileNamesForSelectedViewEngine();
+ var masterPages = new List(unsortedMasterPages);
masterPages.Sort();
return masterPages;
}
+ IEnumerable GetMasterPageFileNamesForSelectedViewEngine()
+ {
+ IMvcProject project = selectedViewFolder.Project;
+ if (IsAspxViewEngineSelected) {
+ return project.GetAspxMasterPageFiles();
+ }
+ return project.GetRazorFiles();
+ }
+
public void CloseSelectMasterPageView()
{
IsSelectMasterPageViewOpen = false;
}
- public ObservableCollection MasterPages { get; private set; }
+ public ObservableCollection MasterPages { get; private set; }
- public MvcMasterPageFileName SelectedMasterPage {
+ public MvcProjectFile SelectedMasterPage {
get { return selectedMasterPage; }
set { selectedMasterPage = value; }
}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcProject.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcProject.cs
index 0e7252b5ba..d9de2dddde 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcProject.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcProject.cs
@@ -17,6 +17,7 @@ namespace ICSharpCode.AspNet.Mvc
MvcTextTemplateLanguage GetTemplateLanguage();
IEnumerable GetModelClasses();
- IEnumerable GetAspxMasterPageFileNames();
+ IEnumerable GetAspxMasterPageFiles();
+ IEnumerable GetRazorFiles();
}
}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileName.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileName.cs
index b7c4dea770..5f4ec84db4 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileName.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcFileName.cs
@@ -46,5 +46,13 @@ namespace ICSharpCode.AspNet.Mvc
}
return String.Empty;
}
+
+ public static string GetLowerCaseFileExtension(string fileName)
+ {
+ if (fileName != null) {
+ return Path.GetExtension(fileName).ToLowerInvariant();
+ }
+ return String.Empty;
+ }
}
}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProject.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProject.cs
index ff18c84bc4..8d974bb0b9 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProject.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProject.cs
@@ -44,12 +44,22 @@ namespace ICSharpCode.AspNet.Mvc
return modelClassLocator.GetModelClasses(this);
}
- public IEnumerable GetAspxMasterPageFileNames()
+ public IEnumerable GetAspxMasterPageFiles()
{
foreach (ProjectItem projectItem in Project.Items) {
- MvcMasterPageFileName fileName = MvcMasterPageFileName.CreateMvcMasterPageFileName(projectItem);
- if (fileName != null) {
- yield return fileName;
+ MvcProjectFile file = MvcProjectMasterPageFile.CreateMvcProjectMasterPageFile(projectItem);
+ if (file != null) {
+ yield return file;
+ }
+ }
+ }
+
+ public IEnumerable GetRazorFiles()
+ {
+ foreach (ProjectItem projectItem in Project.Items) {
+ MvcProjectFile file = MvcProjectRazorFile.CreateMvcProjectRazorFile(projectItem);
+ if (file != null) {
+ yield return file;
}
}
}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcMasterPageFileName.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectFile.cs
similarity index 63%
rename from src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcMasterPageFileName.cs
rename to src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectFile.cs
index 70854cef7e..558f552e8d 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcMasterPageFileName.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectFile.cs
@@ -7,9 +7,9 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.AspNet.Mvc
{
- public class MvcMasterPageFileName : IComparable
+ public class MvcProjectFile : IComparable
{
- public MvcMasterPageFileName(FileProjectItem fileProjectItem)
+ public MvcProjectFile(FileProjectItem fileProjectItem)
{
UpdateFileName(fileProjectItem);
}
@@ -33,7 +33,7 @@ namespace ICSharpCode.AspNet.Mvc
return virtualPath.VirtualPath;
}
- public MvcMasterPageFileName()
+ public MvcProjectFile()
{
FullPath = String.Empty;
FileName = String.Empty;
@@ -51,29 +51,6 @@ namespace ICSharpCode.AspNet.Mvc
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)
{
if (fileName != null) {
@@ -82,7 +59,7 @@ namespace ICSharpCode.AspNet.Mvc
return String.Empty;
}
- public int CompareTo(MvcMasterPageFileName other)
+ public int CompareTo(MvcProjectFile other)
{
int result = CompareFileNames(other);
if (result == 0) {
@@ -91,12 +68,12 @@ namespace ICSharpCode.AspNet.Mvc
return result;
}
- int CompareFileNames(MvcMasterPageFileName other)
+ int CompareFileNames(MvcProjectFile other)
{
return FileName.CompareTo(other.FileName);
}
- int CompareFolderRelativeToProject(MvcMasterPageFileName other)
+ int CompareFolderRelativeToProject(MvcProjectFile other)
{
return FolderRelativeToProject.CompareTo(other.FolderRelativeToProject);
}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectMasterPageFile.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectMasterPageFile.cs
new file mode 100644
index 0000000000..57a8235c6d
--- /dev/null
+++ b/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";
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectRazorFile.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcProjectRazorFile.cs
new file mode 100644
index 0000000000..2fb041a326
--- /dev/null
+++ b/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";
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj b/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj
index b477da6006..fedb78ea17 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/AspNet.Mvc.Tests.csproj
@@ -66,8 +66,8 @@
-
-
+
+
@@ -81,11 +81,13 @@
-
+
+
+
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcProject.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcProject.cs
index 23c65e645d..edf8464a2c 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcProject.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcProject.cs
@@ -64,16 +64,28 @@ namespace AspNet.Mvc.Tests.Helpers
return ModelClasses;
}
- public List MasterPageFileNames = new List();
+ public List AspxMasterPageFiles = new List();
- public void AddMasterPageFile(MvcMasterPageFileName fileName)
+ public void AddAspxMasterPageFile(MvcProjectFile file)
{
- MasterPageFileNames.Add(fileName);
+ AspxMasterPageFiles.Add(file);
}
- public IEnumerable GetAspxMasterPageFileNames()
+ public IEnumerable GetAspxMasterPageFiles()
{
- return MasterPageFileNames;
+ return AspxMasterPageFiles;
+ }
+
+ public List RazorFiles = new List();
+
+ public void AddRazorFile(MvcProjectFile file)
+ {
+ RazorFiles.Add(file);
+ }
+
+ public IEnumerable GetRazorFiles()
+ {
+ return RazorFiles;
}
}
}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcMasterPageFileNameCollectionAssert.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcMasterPageFileNameCollectionAssert.cs
deleted file mode 100644
index 5e298829af..0000000000
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcMasterPageFileNameCollectionAssert.cs
+++ /dev/null
@@ -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 expected, IEnumerable actual)
- {
- List expectedAsStrings = GetMvcMasterPageFileNamesAsStrings(expected);
- List actualAsStrings = GetMvcMasterPageFileNamesAsStrings(actual);
-
- CollectionAssert.AreEqual(expectedAsStrings, actualAsStrings);
- }
-
- static List GetMvcMasterPageFileNamesAsStrings(IEnumerable fileNames)
- {
- var convertedFileNames = new List();
- foreach (MvcMasterPageFileName fileName in fileNames) {
- string fileNameAsString = MvcMasterPageFileNameAssert.GetMvcMasterPageFileNameAsString(fileName);
- convertedFileNames.Add(fileNameAsString);
- }
- return convertedFileNames;
- }
- }
-}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcMasterPageFileNameAssert.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcProjectFileAssert.cs
similarity index 59%
rename from src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcMasterPageFileNameAssert.cs
rename to src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcProjectFileAssert.cs
index 0eb5c31cd1..31f4fb202b 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcMasterPageFileNameAssert.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcProjectFileAssert.cs
@@ -7,16 +7,16 @@ using NUnit.Framework;
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 actualAsString = GetMvcMasterPageFileNameAsString(actual);
+ string expectedAsString = GetMvcProjectFileAsString(expected);
+ string actualAsString = GetMvcProjectFileAsString(actual);
Assert.AreEqual(expectedAsString, actualAsString);
}
- public static string GetMvcMasterPageFileNameAsString(MvcMasterPageFileName fileName)
+ public static string GetMvcProjectFileAsString(MvcProjectFile fileName)
{
return String.Format(
"FileName: {0}\r\nFolder: {1}\r\n, FullPath: {2}",
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcProjectFileCollectionAssert.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MvcProjectFileCollectionAssert.cs
new file mode 100644
index 0000000000..33bc9d7afb
--- /dev/null
+++ b/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 expected, IEnumerable actual)
+ {
+ List expectedAsStrings = GetMvcProjectFilesAsStrings(expected);
+ List actualAsStrings = GetMvcProjectFilesAsStrings(actual);
+
+ CollectionAssert.AreEqual(expectedAsStrings, actualAsStrings);
+ }
+
+ static List GetMvcProjectFilesAsStrings(IEnumerable fileNames)
+ {
+ var convertedFileNames = new List();
+ foreach (MvcProjectFile fileName in fileNames) {
+ string fileNameAsString = MvcProjectFileAssert.GetMvcProjectFileAsString(fileName);
+ convertedFileNames.Add(fileNameAsString);
+ }
+ return convertedFileNames;
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs
index 98c7a04cf5..0fb4a6174c 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs
@@ -793,21 +793,21 @@ namespace AspNet.Mvc.Tests
{
CreateViewModel();
SelectAspxViewEngine();
- var masterPageFile = new MvcMasterPageFileName() {
+ var masterPageFile = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\Site.Master",
FileName = "Site.Master",
FolderRelativeToProject = @"Views\Shared"
};
- fakeProject.AddMasterPageFile(masterPageFile);
+ fakeProject.AddAspxMasterPageFile(masterPageFile);
viewModel.OpenSelectMasterPageView();
- var expectedFileNames = new MvcMasterPageFileName[] {
+ var expectedFiles = new MvcProjectFile[] {
masterPageFile
};
- ObservableCollection fileNames = viewModel.MasterPages;
+ ObservableCollection files = viewModel.MasterPages;
- Assert.AreEqual(expectedFileNames, fileNames);
+ Assert.AreEqual(expectedFiles, files);
}
[Test]
@@ -815,19 +815,19 @@ namespace AspNet.Mvc.Tests
{
CreateViewModel();
SelectAspxViewEngine();
- var masterPageFile = new MvcMasterPageFileName();
- fakeProject.AddMasterPageFile(masterPageFile);
+ var masterPageFile = new MvcProjectFile();
+ fakeProject.AddAspxMasterPageFile(masterPageFile);
viewModel.OpenSelectMasterPageView();
viewModel.CloseSelectMasterPageView();
viewModel.OpenSelectMasterPageView();
- var expectedFileNames = new MvcMasterPageFileName[] {
+ var expectedFiles = new MvcProjectFile[] {
masterPageFile
};
- ObservableCollection fileNames = viewModel.MasterPages;
+ ObservableCollection files = viewModel.MasterPages;
- Assert.AreEqual(expectedFileNames, fileNames);
+ Assert.AreEqual(expectedFiles, files);
}
[Test]
@@ -845,7 +845,7 @@ namespace AspNet.Mvc.Tests
public void SelectMasterPageCommand_MasterPageIsSelected_CommandIsEnabled()
{
CreateViewModel();
- viewModel.SelectedMasterPage = new MvcMasterPageFileName();
+ viewModel.SelectedMasterPage = new MvcProjectFile();
bool canExecute = viewModel.SelectMasterPageCommand.CanExecute(null);
@@ -883,7 +883,7 @@ namespace AspNet.Mvc.Tests
CreateViewModel();
viewModel.MasterPageFile = "test.master";
viewModel.OpenSelectMasterPageView();
- var masterPageFileName = new MvcMasterPageFileName() {
+ var masterPageFileName = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\site.master",
FileName = "site.master",
FolderRelativeToProject = @"Views\Shared",
@@ -902,7 +902,7 @@ namespace AspNet.Mvc.Tests
{
CreateViewModel();
viewModel.OpenSelectMasterPageView();
- var masterPageFileName = new MvcMasterPageFileName();
+ var masterPageFileName = new MvcProjectFile();
viewModel.SelectedMasterPage = masterPageFileName;
MonitorPropertyChangedEvents();
@@ -918,28 +918,79 @@ namespace AspNet.Mvc.Tests
{
CreateViewModel();
SelectAspxViewEngine();
- var masterPageFile1 = new MvcMasterPageFileName() {
+ var masterPageFile1 = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\ViewSite.Master",
FileName = "ViewSite.Master",
FolderRelativeToProject = @"Views\Shared"
};
- fakeProject.AddMasterPageFile(masterPageFile1);
- var masterPageFile2 = new MvcMasterPageFileName() {
+ fakeProject.AddAspxMasterPageFile(masterPageFile1);
+ var masterPageFile2 = new MvcProjectFile() {
FullPath = @"d:\projects\MyProject\Views\Shared\Site.Master",
FileName = "Site.Master",
FolderRelativeToProject = @"Views\Shared"
};
- fakeProject.AddMasterPageFile(masterPageFile2);
+ fakeProject.AddAspxMasterPageFile(masterPageFile2);
viewModel.OpenSelectMasterPageView();
- var expectedFileNames = new MvcMasterPageFileName[] {
+ var expectedFiles = new MvcProjectFile[] {
masterPageFile2,
masterPageFile1
};
- ObservableCollection fileNames = viewModel.MasterPages;
+ ObservableCollection 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 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 files = viewModel.MasterPages;
+
+ Assert.AreEqual(expectedFiles, files);
}
}
}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcMasterPageFileNameTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectFileTests.cs
similarity index 62%
rename from src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcMasterPageFileNameTests.cs
rename to src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectFileTests.cs
index 219f14d972..6d65cac887 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcMasterPageFileNameTests.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectFileTests.cs
@@ -9,23 +9,22 @@ using NUnit.Framework;
namespace AspNet.Mvc.Tests
{
- [TestFixture]
- public class MvcMasterPageFileNameTests
+ public class MvcProjectFileTests
{
TestableProject project;
- MvcMasterPageFileName masterPageFileName;
+ MvcProjectFile file;
void CreateProject(string fileName)
{
project = TestableProject.CreateProject(fileName, "MyProject");
}
- MvcMasterPageFileName CreateMasterPageFileName(string fullPath)
+ MvcProjectFile CreateProjectFile(string fullPath)
{
var projectItem = new FileProjectItem(project, ItemType.Compile);
projectItem.FileName = fullPath;
- masterPageFileName = new MvcMasterPageFileName(projectItem);
- return masterPageFileName;
+ file = new MvcProjectFile(projectItem);
+ return file;
}
[Test]
@@ -33,9 +32,9 @@ namespace AspNet.Mvc.Tests
{
CreateProject(@"d:\projects\MyProject\MyProject.csproj");
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);
}
@@ -44,9 +43,9 @@ namespace AspNet.Mvc.Tests
public void FileName_CreatedFromFileProjectItem_ReturnsFileNameWithoutFolder()
{
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);
}
@@ -55,9 +54,9 @@ namespace AspNet.Mvc.Tests
public void FolderRelativeToProject_CreatedFromFileProjectItem_ReturnsFileNameWithoutFolder()
{
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);
}
@@ -66,9 +65,9 @@ namespace AspNet.Mvc.Tests
public void VirtualPath_CreatedFromFileProjectItem_ReturnsAspNetVirtualPathForFileName()
{
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);
}
@@ -77,9 +76,9 @@ namespace AspNet.Mvc.Tests
public void VirtualPath_FileInProjectRootDirectory_ReturnsAspNetVirtualPathForFileName()
{
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);
}
@@ -88,8 +87,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FileNamesAreTheSame_ReturnsZero()
{
CreateProject(@"d:\projects\MyProject\MyProject.csproj");
- MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\Site.Master");
- MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\Site.Master");
+ MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\Site.Master");
+ MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\Site.Master");
int result = lhs.CompareTo(rhs);
@@ -100,8 +99,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FoldersAreSameAndSecondFileNameIsGreaterThanFirstFileName_ReturnsMinusOne()
{
CreateProject(@"d:\projects\MyProject\MyProject.csproj");
- MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\Shared\A.Master");
- MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\Shared\Z.Master");
+ MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\Shared\A.Master");
+ MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\Shared\Z.Master");
int result = lhs.CompareTo(rhs);
@@ -112,8 +111,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FoldersAreSameAndSecondFileNameIsLessThanFirstFileName_ReturnsPlusOne()
{
CreateProject(@"d:\projects\MyProject\MyProject.csproj");
- MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\Shared\Z.Master");
- MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\Shared\A.Master");
+ MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\Shared\Z.Master");
+ MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\Shared\A.Master");
int result = lhs.CompareTo(rhs);
@@ -124,8 +123,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FileNamesAreSameAndSecondFolderIsLessThanFirstFolder_ReturnsPlusOne()
{
CreateProject(@"d:\projects\MyProject\MyProject.csproj");
- MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\Z\site.Master");
- MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\A\site.Master");
+ MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\Z\site.Master");
+ MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\A\site.Master");
int result = lhs.CompareTo(rhs);
@@ -136,8 +135,8 @@ namespace AspNet.Mvc.Tests
public void CompareTo_FileNamesAreSameAndSecondFolderIsGreaterThanFirstFolder_ReturnsMinussOne()
{
CreateProject(@"d:\projects\MyProject\MyProject.csproj");
- MvcMasterPageFileName lhs = CreateMasterPageFileName(@"d:\projects\MyProject\A\site.Master");
- MvcMasterPageFileName rhs = CreateMasterPageFileName(@"d:\projects\MyProject\Z\site.Master");
+ MvcProjectFile lhs = CreateProjectFile(@"d:\projects\MyProject\A\site.Master");
+ MvcProjectFile rhs = CreateProjectFile(@"d:\projects\MyProject\Z\site.Master");
int result = lhs.CompareTo(rhs);
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectMasterPageFileTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectMasterPageFileTests.cs
new file mode 100644
index 0000000000..9a6ffe74f2
--- /dev/null
+++ b/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);
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectRazorFileTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectRazorFileTests.cs
new file mode 100644
index 0000000000..37ffa3bf40
--- /dev/null
+++ b/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);
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs
index 09851e9c3a..f55a778cf9 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs
@@ -35,10 +35,17 @@ namespace AspNet.Mvc.Tests
testableProject.AddFileToProject(fileName);
}
- List GetAspxMasterPageFileNames()
+ List GetAspxMasterPageFiles()
{
- return new List(
- project.GetAspxMasterPageFileNames()
+ return new List(
+ project.GetAspxMasterPageFiles()
+ );
+ }
+
+ List GetRazorFiles()
+ {
+ return new List(
+ project.GetRazorFiles()
);
}
@@ -125,74 +132,129 @@ namespace AspNet.Mvc.Tests
}
[Test]
- public void GetAspxMasterPageFileNames_OneMasterPageInProject_ReturnsOneFileName()
+ public void GetAspxMasterPageFiles_OneMasterPageInProject_ReturnsOneFile()
{
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\Site.Master");
- List fileNames = GetAspxMasterPageFileNames();
+ List files = GetAspxMasterPageFiles();
- Assert.AreEqual(1, fileNames.Count);
+ Assert.AreEqual(1, files.Count);
}
[Test]
- public void GetAspxMasterPageFileNames_OneMasterPageInProject_ReturnsOneMasterPageWithExpectedFileName()
+ public void GetAspxMasterPageFiles_OneMasterPageInProject_ReturnsOneMasterPageWithExpectedFile()
{
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
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",
FileName = "Site.Master",
FolderRelativeToProject = @"Views\Shared"
};
- MvcMasterPageFileNameAssert.AreEqual(expectedFileName, fileName);
+ MvcProjectFileAssert.AreEqual(expectedFile, file);
}
[Test]
- public void GetAspxMasterPageFileNames_OneHtmlFileAndOneMasterPageInProject_ReturnsOneMasterPageWithExpectedFileName()
+ public void GetAspxMasterPageFiles_OneHtmlFileAndOneMasterPageInProject_ReturnsOneMasterPageWithExpectedFileName()
{
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\test.html");
AddFileToProject(@"d:\projects\AspNetMvcProject\Views\Shared\Site.Master");
- List fileNames = GetAspxMasterPageFileNames();
+ List files = GetAspxMasterPageFiles();
- var expectedFileName = new MvcMasterPageFileName() {
+ var expectedFileName = new MvcProjectFile() {
FullPath = @"d:\projects\AspNetMvcProject\Views\Shared\Site.Master",
FileName = "Site.Master",
FolderRelativeToProject = @"Views\Shared"
};
- var expectedFileNames = new MvcMasterPageFileName[] {
+ var expectedFiles = new MvcProjectFile[] {
expectedFileName
};
- MvcMasterPageFileNameCollectionAssert.AreEqual(expectedFileNames, fileNames);
+ MvcProjectFileCollectionAssert.AreEqual(expectedFiles, files);
}
[Test]
- public void GetAspxMasterPageFileNames_OneMasterPageWithFileExtensionInUpperCaseInProject_ReturnsOneMasterPageWithExpectedFileName()
+ public void GetAspxMasterPageFiles_OneMasterPageWithFileExtensionInUpperCaseInProject_ReturnsOneMasterPageWithExpectedFileName()
{
CreateProject(@"d:\projects\AspNetMvcProject\MyProject.csproj");
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",
FileName = "TEST.MASTER",
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 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 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]
- 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);
}
}
}