Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

256 lines
7.7 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System.Linq;
using Moq;
using Xunit;
namespace System.Web.Mvc.Test
{
public class RazorViewEngineTest
{
[Fact]
public void AreaMasterLocationFormats()
{
// Arrange
string[] expected = new[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.vbhtml"
};
// Act
RazorViewEngine viewEngine = new RazorViewEngine();
// Assert
Assert.Equal(expected, viewEngine.AreaMasterLocationFormats);
}
[Fact]
public void AreaPartialViewLocationFormats()
{
// Arrange
string[] expected = new[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.vbhtml"
};
// Act
RazorViewEngine viewEngine = new RazorViewEngine();
// Assert
Assert.Equal(expected, viewEngine.AreaPartialViewLocationFormats);
}
[Fact]
public void AreaViewLocationFormats()
{
// Arrange
string[] expected = new[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.vbhtml"
};
// Act
RazorViewEngine viewEngine = new RazorViewEngine();
// Assert
Assert.Equal(expected, viewEngine.AreaViewLocationFormats);
}
[Fact]
public void RazorViewEngineSetsViewPageActivator()
{
// Arrange
Mock<IViewPageActivator> viewPageActivator = new Mock<IViewPageActivator>();
TestableRazorViewEngine viewEngine = new TestableRazorViewEngine(viewPageActivator.Object);
//Act & Assert
Assert.Equal(viewPageActivator.Object, viewEngine.ViewPageActivator);
}
[Fact]
public void CreatePartialView_PassesViewPageActivator()
{
// Arrange
Mock<IViewPageActivator> viewPageActivator = new Mock<IViewPageActivator>();
TestableRazorViewEngine viewEngine = new TestableRazorViewEngine(viewPageActivator.Object);
// Act
RazorView result = (RazorView)viewEngine.CreatePartialView("partial path");
// Assert
Assert.Equal(viewEngine.ViewPageActivator, result.ViewPageActivator);
}
[Fact]
public void CreateView_PassesViewPageActivator()
{
// Arrange
Mock<IViewPageActivator> viewPageActivator = new Mock<IViewPageActivator>();
TestableRazorViewEngine viewEngine = new TestableRazorViewEngine(viewPageActivator.Object);
// Act
RazorView result = (RazorView)viewEngine.CreateView("partial path", "master path");
// Assert
Assert.Equal(viewEngine.ViewPageActivator, result.ViewPageActivator);
}
[Fact]
public void CreatePartialView_ReturnsRazorView()
{
// Arrange
TestableRazorViewEngine viewEngine = new TestableRazorViewEngine();
// Act
RazorView result = (RazorView)viewEngine.CreatePartialView("partial path");
// Assert
Assert.Equal("partial path", result.ViewPath);
Assert.Equal(String.Empty, result.LayoutPath);
Assert.False(result.RunViewStartPages);
}
[Fact]
public void CreateView_ReturnsRazorView()
{
// Arrange
TestableRazorViewEngine viewEngine = new TestableRazorViewEngine()
{
FileExtensions = new[] { "cshtml", "vbhtml", "razor" }
};
// Act
RazorView result = (RazorView)viewEngine.CreateView("partial path", "master path");
// Assert
Assert.Equal("partial path", result.ViewPath);
Assert.Equal("master path", result.LayoutPath);
Assert.Equal(new[] { "cshtml", "vbhtml", "razor" }, result.ViewStartFileExtensions.ToArray());
Assert.True(result.RunViewStartPages);
}
[Fact]
public void FileExtensionsProperty()
{
// Arrange
string[] expected = new[]
{
"cshtml",
"vbhtml",
};
// Act
RazorViewEngine viewEngine = new RazorViewEngine();
// Assert
Assert.Equal(expected, viewEngine.FileExtensions);
}
[Fact]
public void MasterLocationFormats()
{
// Arrange
string[] expected = new[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
// Act
RazorViewEngine viewEngine = new RazorViewEngine();
// Assert
Assert.Equal(expected, viewEngine.MasterLocationFormats);
}
[Fact]
public void PartialViewLocationFormats()
{
// Arrange
string[] expected = new[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
// Act
RazorViewEngine viewEngine = new RazorViewEngine();
// Assert
Assert.Equal(expected, viewEngine.PartialViewLocationFormats);
}
[Fact]
public void ViewLocationFormats()
{
// Arrange
string[] expected = new[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
// Act
RazorViewEngine viewEngine = new RazorViewEngine();
// Assert
Assert.Equal(expected, viewEngine.ViewLocationFormats);
}
[Fact]
public void ViewStartFileName()
{
Assert.Equal("_ViewStart", RazorViewEngine.ViewStartFileName);
}
private sealed class TestableRazorViewEngine : RazorViewEngine
{
public TestableRazorViewEngine()
: base()
{
}
public TestableRazorViewEngine(IViewPageActivator viewPageActivator)
: base(viewPageActivator)
{
}
public new IViewPageActivator ViewPageActivator
{
get { return base.ViewPageActivator; }
}
public IView CreatePartialView(string partialPath)
{
return base.CreatePartialView(new ControllerContext(), partialPath);
}
public IView CreateView(string viewPath, string masterPath)
{
return base.CreateView(new ControllerContext(), viewPath, masterPath);
}
// This method should remain overridable in derived view engines
protected override bool FileExists(ControllerContext controllerContext, string virtualPath)
{
return base.FileExists(controllerContext, virtualPath);
}
}
}
}