Skip to content

Commit

Permalink
.shade file lookup support for MVC
Browse files Browse the repository at this point in the history
  • Loading branch information
RobertTheGrey committed Jun 1, 2012
1 parent be1119a commit ef48a7c
Show file tree
Hide file tree
Showing 2 changed files with 189 additions and 2 deletions.
163 changes: 163 additions & 0 deletions src/Spark.Web.Mvc.Tests/DescriptorBuildingTester.cs
Expand Up @@ -74,6 +74,19 @@ public void NormalViewAndNoDefaultLayout()
@"Home\Index.spark");
}

[Test]
public void NormalViewAndNoDefaultLayoutWithShade()
{
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", null, true, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Home\Index.shade");
}

[Test]
public void NormalViewAndDefaultLayoutPresent()
{
Expand All @@ -89,6 +102,20 @@ public void NormalViewAndDefaultLayoutPresent()
@"Layouts\Application.spark");
}

[Test]
public void NormalViewAndDefaultLayoutPresentWithShade()
{
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");
_viewFolder.Add(@"Layouts\Application.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", null, true, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Home\Index.shade",
@"Layouts\Application.shade");
}

[Test]
public void NormalViewAndControllerLayoutOverrides()
Expand All @@ -106,6 +133,22 @@ public void NormalViewAndControllerLayoutOverrides()
@"Layouts\Home.spark");
}

[Test]
public void NormalViewAndControllerLayoutOverridesWithShade()
{
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");
_viewFolder.Add(@"Layouts\Application.shade", "");
_viewFolder.Add(@"Layouts\Home.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", null, true, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Home\Index.shade",
@"Layouts\Home.shade");
}

[Test]
public void NormalViewAndNamedMaster()
{
Expand All @@ -123,6 +166,23 @@ public void NormalViewAndNamedMaster()
@"Layouts\Site.spark");
}

[Test]
public void NormalViewAndNamedMasterWithShade()
{
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");
_viewFolder.Add(@"Layouts\Application.shade", "");
_viewFolder.Add(@"Layouts\Home.shade", "");
_viewFolder.Add(@"Layouts\Site.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", "Site", true, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Home\Index.shade",
@"Layouts\Site.shade");
}

[Test]
public void PartialViewIgnoresDefaultLayouts()
{
Expand All @@ -140,6 +200,23 @@ public void PartialViewIgnoresDefaultLayouts()
@"Home\Index.spark");
}

[Test]
public void PartialViewIgnoresDefaultLayoutsWithShade()
{
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");
_viewFolder.Add(@"Layouts\Application.shade", "");
_viewFolder.Add(@"Layouts\Home.shade", "");
_viewFolder.Add(@"Shared\Application.shade", "");
_viewFolder.Add(@"Shared\Home.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", null, false, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Home\Index.shade");
}

[Test]
public void RouteAreaPresentDefaultsToNormalLocation()
{
Expand All @@ -156,6 +233,22 @@ public void RouteAreaPresentDefaultsToNormalLocation()
@"Layouts\Application.spark");
}

[Test]
public void RouteAreaPresentDefaultsToNormalLocationWithShade()
{
_routeData.DataTokens.Add("area", "Admin");
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");
_viewFolder.Add(@"Layouts\Application.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", null, true, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Home\Index.shade",
@"Layouts\Application.shade");
}

[Test]
public void AreaFolderMayContainControllerFolder()
{
Expand All @@ -173,6 +266,23 @@ public void AreaFolderMayContainControllerFolder()
@"Layouts\Application.spark");
}

[Test]
public void AreaFolderMayContainControllerFolderWithShade()
{
_routeData.DataTokens.Add("area", "Admin");
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");
_viewFolder.Add(@"Layouts\Application.shade", "");
_viewFolder.Add(@"Admin\Home\Index.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", null, true, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Admin\Home\Index.shade",
@"Layouts\Application.shade");
}

[Test]
public void AreaRouteValueAlsoRecognizedForBackCompatWithEarlierAssumptions() {
_routeData.Values.Add("area", "Admin");
Expand All @@ -189,6 +299,22 @@ public void AreaFolderMayContainControllerFolder()
@"Layouts\Application.spark");
}

[Test]
public void AreaRouteValueAlsoRecognizedForBackCompatWithEarlierAssumptionsWithShade() {
_routeData.Values.Add("area", "Admin");
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");
_viewFolder.Add(@"Layouts\Application.shade", "");
_viewFolder.Add(@"Admin\Home\Index.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", null, true, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Admin\Home\Index.shade",
@"Layouts\Application.shade");
}

[Test]
public void AreaFolderMayContainLayoutsFolder()
{
Expand All @@ -207,6 +333,24 @@ public void AreaFolderMayContainLayoutsFolder()
@"Admin\Layouts\Application.spark");
}

[Test]
public void AreaFolderMayContainLayoutsFolderWithShade()
{
_routeData.DataTokens.Add("area", "Admin");
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");
_viewFolder.Add(@"Layouts\Application.shade", "");
_viewFolder.Add(@"Admin\Home\Index.shade", "");
_viewFolder.Add(@"Admin\Layouts\Application.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", null, true, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Admin\Home\Index.shade",
@"Admin\Layouts\Application.shade");
}

[Test]
public void AreaContainsNamedLayout()
{
Expand All @@ -226,6 +370,25 @@ public void AreaContainsNamedLayout()
@"Admin\Layouts\Site.spark");
}

[Test]
public void AreaContainsNamedLayoutWithShade()
{
_routeData.DataTokens.Add("area", "Admin");
_routeData.Values.Add("controller", "Home");
_viewFolder.Add(@"Home\Index.shade", "");
_viewFolder.Add(@"Layouts\Application.shade", "");
_viewFolder.Add(@"Admin\Home\Index.shade", "");
_viewFolder.Add(@"Admin\Layouts\Application.shade", "");
_viewFolder.Add(@"Admin\Layouts\Site.shade", "");

var searchedLocations = new List<string>();
var result = _factory.CreateDescriptor(_controllerContext, "Index", "Site", true, searchedLocations);
AssertDescriptorTemplates(
result, searchedLocations,
@"Admin\Home\Index.shade",
@"Admin\Layouts\Site.shade");
}

[Test]
public void PartialViewFromAreaIgnoresLayout()
{
Expand Down
28 changes: 26 additions & 2 deletions src/Spark.Web.Mvc/DefaultDescriptorBuilder.cs
Expand Up @@ -197,12 +197,18 @@ protected virtual IEnumerable<string> PotentialViewLocations(string controllerNa
string.Format("~{0}Areas{0}{1}{0}Views{0}Shared{0}{2}.spark", Path.DirectorySeparatorChar, extra["area"], viewName),
string.Format("{0}{1}{2}.spark", controllerName, Path.DirectorySeparatorChar, viewName),
string.Format("Shared{0}{1}.spark", Path.DirectorySeparatorChar, viewName),
string.Format("~{0}Areas{0}{1}{0}Views{0}{2}{0}{3}.shade", Path.DirectorySeparatorChar, extra["area"], controllerName, viewName),
string.Format("~{0}Areas{0}{1}{0}Views{0}Shared{0}{2}.shade", Path.DirectorySeparatorChar, extra["area"], viewName),
string.Format("{0}{1}{2}.shade", controllerName, Path.DirectorySeparatorChar, viewName),
string.Format("Shared{0}{1}.shade", Path.DirectorySeparatorChar, viewName)
}, extra);
}
return ApplyFilters(new[]
{
string.Format("{0}{1}{2}.spark", controllerName,Path.DirectorySeparatorChar, viewName),
string.Format("Shared{0}{1}.spark", Path.DirectorySeparatorChar,viewName)
string.Format("Shared{0}{1}.spark", Path.DirectorySeparatorChar,viewName),
string.Format("{0}{1}{2}.shade", controllerName,Path.DirectorySeparatorChar, viewName),
string.Format("Shared{0}{1}.shade", Path.DirectorySeparatorChar,viewName)
}, extra);
}

Expand All @@ -216,12 +222,18 @@ protected virtual IEnumerable<string> PotentialMasterLocations(string masterName
string.Format("~{0}Areas{0}{1}{0}Views{0}Shared{0}{2}.spark", Path.DirectorySeparatorChar, extra["area"], masterName),
string.Format("Layouts{0}{1}.spark", Path.DirectorySeparatorChar,masterName),
string.Format("Shared{0}{1}.spark", Path.DirectorySeparatorChar,masterName),
string.Format("~{0}Areas{0}{1}{0}Views{0}Layouts{0}{2}.shade", Path.DirectorySeparatorChar, extra["area"], masterName),
string.Format("~{0}Areas{0}{1}{0}Views{0}Shared{0}{2}.shade", Path.DirectorySeparatorChar, extra["area"], masterName),
string.Format("Layouts{0}{1}.shade", Path.DirectorySeparatorChar,masterName),
string.Format("Shared{0}{1}.shade", Path.DirectorySeparatorChar,masterName)
}, extra);
}
return ApplyFilters(new[]
{
string.Format("Layouts{0}{1}.spark", Path.DirectorySeparatorChar,masterName),
string.Format("Shared{0}{1}.spark", Path.DirectorySeparatorChar,masterName),
string.Format("Layouts{0}{1}.shade", Path.DirectorySeparatorChar,masterName),
string.Format("Shared{0}{1}.shade", Path.DirectorySeparatorChar,masterName)
}, extra);
}

Expand All @@ -239,6 +251,14 @@ protected virtual IEnumerable<string> PotentialDefaultMasterLocations(string con
string.Format("~{0}Areas{0}{1}{0}Views{0}Shared{0}Application.spark", Path.DirectorySeparatorChar, extra["area"]),
string.Format("Layouts{0}Application.spark", Path.DirectorySeparatorChar),
string.Format("Shared{0}Application.spark", Path.DirectorySeparatorChar),
string.Format("~{0}Areas{0}{1}{0}Views{0}Layouts{0}{2}.shade", Path.DirectorySeparatorChar, extra["area"], controllerName),
string.Format("~{0}Areas{0}{1}{0}Views{0}Shared{0}{2}.shade", Path.DirectorySeparatorChar, extra["area"], controllerName),
string.Format("Layouts{0}{1}.shade", Path.DirectorySeparatorChar, controllerName),
string.Format("Shared{0}{1}.shade", Path.DirectorySeparatorChar, controllerName),
string.Format("~{0}Areas{0}{1}{0}Views{0}Layouts{0}Application.shade", Path.DirectorySeparatorChar, extra["area"]),
string.Format("~{0}Areas{0}{1}{0}Views{0}Shared{0}Application.shade", Path.DirectorySeparatorChar, extra["area"]),
string.Format("Layouts{0}Application.shade", Path.DirectorySeparatorChar),
string.Format("Shared{0}Application.shade", Path.DirectorySeparatorChar)
}, extra);
}

Expand All @@ -247,7 +267,11 @@ protected virtual IEnumerable<string> PotentialDefaultMasterLocations(string con
string.Format("Layouts{0}{1}.spark", Path.DirectorySeparatorChar, controllerName),
string.Format("Shared{0}{1}.spark", Path.DirectorySeparatorChar, controllerName),
string.Format("Layouts{0}Application.spark", Path.DirectorySeparatorChar),
string.Format("Shared{0}Application.spark", Path.DirectorySeparatorChar)
string.Format("Shared{0}Application.spark", Path.DirectorySeparatorChar),
string.Format("Layouts{0}{1}.shade", Path.DirectorySeparatorChar, controllerName),
string.Format("Shared{0}{1}.shade", Path.DirectorySeparatorChar, controllerName),
string.Format("Layouts{0}Application.shade", Path.DirectorySeparatorChar),
string.Format("Shared{0}Application.shade", Path.DirectorySeparatorChar)
}, extra);
}
}
Expand Down

0 comments on commit ef48a7c

Please sign in to comment.