U4-7739 - added more options to ViewHelper.GetDefaultFileContent
This commit is contained in:
@@ -66,21 +66,58 @@ namespace Umbraco.Core.IO
|
||||
return viewContent;
|
||||
}
|
||||
|
||||
public static string GetDefaultFileContent(string layoutPageAlias = null, string modelClassName = null)
|
||||
public static string GetDefaultFileContent(string layoutPageAlias = null, string modelClassName = null, string modelNamespace = null, string modelNamespaceAlias = null)
|
||||
{
|
||||
var design = @"@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
|
||||
@{
|
||||
Layout = null;
|
||||
}";
|
||||
var content = new StringBuilder();
|
||||
|
||||
if (layoutPageAlias.IsNullOrWhiteSpace() == false)
|
||||
design = design.Replace("null", string.Format("\"{0}.cshtml\"", layoutPageAlias));
|
||||
if (string.IsNullOrWhiteSpace(modelNamespaceAlias))
|
||||
modelNamespaceAlias = "ContentModels";
|
||||
|
||||
// either
|
||||
// @inherits Umbraco.Web.Mvc.UmbracoTemplatePage
|
||||
// @inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ModelClass>
|
||||
// @inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.ModelClass>
|
||||
content.Append("@inherits Umbraco.Web.Mvc.UmbracoTemplatePage");
|
||||
if (modelClassName.IsNullOrWhiteSpace() == false)
|
||||
design = design.Replace(".UmbracoTemplatePage", string.Format(".UmbracoTemplatePage<{0}>", modelClassName));
|
||||
{
|
||||
content.Append("<");
|
||||
if (modelNamespace.IsNullOrWhiteSpace() == false)
|
||||
{
|
||||
content.Append(modelNamespaceAlias);
|
||||
content.Append(".");
|
||||
}
|
||||
content.Append(modelClassName);
|
||||
content.Append(">");
|
||||
}
|
||||
content.Append("\r\n");
|
||||
|
||||
// if required, add
|
||||
// @using ContentModels = ModelNamespace;
|
||||
if (modelClassName.IsNullOrWhiteSpace() == false && modelNamespace.IsNullOrWhiteSpace() == false)
|
||||
{
|
||||
content.Append("@using ");
|
||||
content.Append(modelNamespaceAlias);
|
||||
content.Append(" = ");
|
||||
content.Append(modelNamespace);
|
||||
content.Append(";\r\n");
|
||||
}
|
||||
|
||||
return design;
|
||||
// either
|
||||
// Layout = null;
|
||||
// Layout = "layoutPage.cshtml";
|
||||
content.Append("@{\r\n\tLayout = ");
|
||||
if (layoutPageAlias.IsNullOrWhiteSpace())
|
||||
{
|
||||
content.Append("null");
|
||||
}
|
||||
else
|
||||
{
|
||||
content.Append("\"");
|
||||
content.Append(layoutPageAlias);
|
||||
content.Append(".cshtml\"");
|
||||
}
|
||||
content.Append(";\r\n}");
|
||||
return content.ToString();
|
||||
}
|
||||
|
||||
private string SaveTemplateToFile(ITemplate template)
|
||||
|
||||
91
src/Umbraco.Tests/Templates/ViewHelperTests.cs
Normal file
91
src/Umbraco.Tests/Templates/ViewHelperTests.cs
Normal file
@@ -0,0 +1,91 @@
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.IO;
|
||||
|
||||
namespace Umbraco.Tests.Templates
|
||||
{
|
||||
[TestFixture]
|
||||
public class ViewHelperTests
|
||||
{
|
||||
[Test]
|
||||
public void NoOptions()
|
||||
{
|
||||
var view = ViewHelper.GetDefaultFileContent();
|
||||
Assert.AreEqual(FixView(@"@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
|
||||
@{
|
||||
Layout = null;
|
||||
}"), FixView(view));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Layout()
|
||||
{
|
||||
var view = ViewHelper.GetDefaultFileContent(layoutPageAlias: "Dharznoik");
|
||||
Assert.AreEqual(FixView(@"@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
|
||||
@{
|
||||
Layout = ""Dharznoik.cshtml"";
|
||||
}"), FixView(view));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ClassName()
|
||||
{
|
||||
var view = ViewHelper.GetDefaultFileContent(modelClassName: "ClassName");
|
||||
Assert.AreEqual(FixView(@"@inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ClassName>
|
||||
@{
|
||||
Layout = null;
|
||||
}"), FixView(view));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Namespace()
|
||||
{
|
||||
var view = ViewHelper.GetDefaultFileContent(modelNamespace: "Models");
|
||||
Assert.AreEqual(FixView(@"@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
|
||||
@{
|
||||
Layout = null;
|
||||
}"), FixView(view));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ClassNameAndNamespace()
|
||||
{
|
||||
var view = ViewHelper.GetDefaultFileContent(modelClassName: "ClassName", modelNamespace: "My.Models");
|
||||
Assert.AreEqual(FixView(@"@inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.ClassName>
|
||||
@using ContentModels = My.Models;
|
||||
@{
|
||||
Layout = null;
|
||||
}"), FixView(view));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ClassNameAndNamespaceAndAlias()
|
||||
{
|
||||
var view = ViewHelper.GetDefaultFileContent(modelClassName: "ClassName", modelNamespace: "My.Models", modelNamespaceAlias: "MyModels");
|
||||
Assert.AreEqual(FixView(@"@inherits Umbraco.Web.Mvc.UmbracoTemplatePage<MyModels.ClassName>
|
||||
@using MyModels = My.Models;
|
||||
@{
|
||||
Layout = null;
|
||||
}"), FixView(view));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Combined()
|
||||
{
|
||||
var view = ViewHelper.GetDefaultFileContent(layoutPageAlias: "Dharznoik", modelClassName: "ClassName", modelNamespace: "My.Models", modelNamespaceAlias: "MyModels");
|
||||
Assert.AreEqual(FixView(@"@inherits Umbraco.Web.Mvc.UmbracoTemplatePage<MyModels.ClassName>
|
||||
@using MyModels = My.Models;
|
||||
@{
|
||||
Layout = ""Dharznoik.cshtml"";
|
||||
}"), FixView(view));
|
||||
}
|
||||
|
||||
private static string FixView(string view)
|
||||
{
|
||||
view = view.Replace("\r\n", "\n");
|
||||
view = view.Replace("\r", "\n");
|
||||
view = view.Replace("\n", "\r\n");
|
||||
view = view.Replace("\t", " ");
|
||||
return view;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -369,6 +369,7 @@
|
||||
<Compile Include="Services\UserServiceTests.cs" />
|
||||
<Compile Include="Manifest\ManifestParserTests.cs" />
|
||||
<Compile Include="Templates\TemplateRepositoryTests.cs" />
|
||||
<Compile Include="Templates\ViewHelperTests.cs" />
|
||||
<Compile Include="TestHelpers\BaseSeleniumTest.cs" />
|
||||
<Compile Include="Integration\InstallPackage.cs" />
|
||||
<Compile Include="CoreXml\NavigableNavigatorTests.cs" />
|
||||
|
||||
Reference in New Issue
Block a user