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

247 lines
7.5 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System.Web.Hosting;
using Moq;
using Xunit;
namespace System.Web.Mvc.Test
{
public class WebFormViewEngineTest
{
[Fact]
public void CreatePartialViewCreatesWebFormView()
{
// Arrange
TestableWebFormViewEngine engine = new TestableWebFormViewEngine();
// Act
WebFormView result = (WebFormView)engine.CreatePartialView("partial path");
// Assert
Assert.Equal("partial path", result.ViewPath);
Assert.Equal(String.Empty, result.MasterPath);
}
[Fact]
public void CreateViewCreatesWebFormView()
{
// Arrange
TestableWebFormViewEngine engine = new TestableWebFormViewEngine();
// Act
WebFormView result = (WebFormView)engine.CreateView("view path", "master path");
// Assert
Assert.Equal("view path", result.ViewPath);
Assert.Equal("master path", result.MasterPath);
}
[Fact]
public void WebFormViewEngineSetsViewPageActivator()
{
// Arrange
Mock<IViewPageActivator> viewPageActivator = new Mock<IViewPageActivator>();
TestableWebFormViewEngine viewEngine = new TestableWebFormViewEngine(viewPageActivator.Object);
//Act & Assert
Assert.Equal(viewPageActivator.Object, viewEngine.ViewPageActivator);
}
[Fact]
public void CreatePartialView_PassesViewPageActivator()
{
// Arrange
Mock<IViewPageActivator> viewPageActivator = new Mock<IViewPageActivator>();
TestableWebFormViewEngine viewEngine = new TestableWebFormViewEngine(viewPageActivator.Object);
// Act
WebFormView result = (WebFormView)viewEngine.CreatePartialView("partial path");
// Assert
Assert.Equal(viewEngine.ViewPageActivator, result.ViewPageActivator);
}
[Fact]
public void CreateView_PassesViewPageActivator()
{
// Arrange
Mock<IViewPageActivator> viewPageActivator = new Mock<IViewPageActivator>();
TestableWebFormViewEngine viewEngine = new TestableWebFormViewEngine(viewPageActivator.Object);
// Act
WebFormView result = (WebFormView)viewEngine.CreateView("partial path", "master path");
// Assert
Assert.Equal(viewEngine.ViewPageActivator, result.ViewPageActivator);
}
[Fact]
public void MasterLocationFormatsProperty()
{
// Arrange
string[] expected = new string[]
{
"~/Views/{1}/{0}.master",
"~/Views/Shared/{0}.master"
};
// Act
TestableWebFormViewEngine engine = new TestableWebFormViewEngine();
// Assert
Assert.Equal(expected, engine.MasterLocationFormats);
}
[Fact]
public void AreaMasterLocationFormatsProperty()
{
// Arrange
string[] expected = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.master",
"~/Areas/{2}/Views/Shared/{0}.master",
};
// Act
TestableWebFormViewEngine engine = new TestableWebFormViewEngine();
// Assert
Assert.Equal(expected, engine.AreaMasterLocationFormats);
}
[Fact]
public void PartialViewLocationFormatsProperty()
{
// Arrange
string[] expected = new string[]
{
"~/Views/{1}/{0}.aspx",
"~/Views/{1}/{0}.ascx",
"~/Views/Shared/{0}.aspx",
"~/Views/Shared/{0}.ascx"
};
// Act
TestableWebFormViewEngine engine = new TestableWebFormViewEngine();
// Assert
Assert.Equal(expected, engine.PartialViewLocationFormats);
}
[Fact]
public void AreaPartialViewLocationFormatsProperty()
{
// Arrange
string[] expected = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.aspx",
"~/Areas/{2}/Views/{1}/{0}.ascx",
"~/Areas/{2}/Views/Shared/{0}.aspx",
"~/Areas/{2}/Views/Shared/{0}.ascx",
};
// Act
TestableWebFormViewEngine engine = new TestableWebFormViewEngine();
// Assert
Assert.Equal(expected, engine.AreaPartialViewLocationFormats);
}
[Fact]
public void ViewLocationFormatsProperty()
{
// Arrange
string[] expected = new string[]
{
"~/Views/{1}/{0}.aspx",
"~/Views/{1}/{0}.ascx",
"~/Views/Shared/{0}.aspx",
"~/Views/Shared/{0}.ascx"
};
// Act
TestableWebFormViewEngine engine = new TestableWebFormViewEngine();
// Assert
Assert.Equal(expected, engine.ViewLocationFormats);
}
[Fact]
public void AreaViewLocationFormatsProperty()
{
// Arrange
string[] expected = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.aspx",
"~/Areas/{2}/Views/{1}/{0}.ascx",
"~/Areas/{2}/Views/Shared/{0}.aspx",
"~/Areas/{2}/Views/Shared/{0}.ascx",
};
// Act
TestableWebFormViewEngine engine = new TestableWebFormViewEngine();
// Assert
Assert.Equal(expected, engine.AreaViewLocationFormats);
}
[Fact]
public void FileExtensionsProperty()
{
// Arrange
string[] expected = new string[]
{
"aspx",
"ascx",
"master",
};
// Act
TestableWebFormViewEngine engine = new TestableWebFormViewEngine();
// Assert
Assert.Equal(expected, engine.FileExtensions);
}
private sealed class TestableWebFormViewEngine : WebFormViewEngine
{
public TestableWebFormViewEngine()
: base()
{
}
public TestableWebFormViewEngine(IViewPageActivator viewPageActivator)
: base(viewPageActivator)
{
}
public new IViewPageActivator ViewPageActivator
{
get { return base.ViewPageActivator; }
}
public new VirtualPathProvider VirtualPathProvider
{
get { return base.VirtualPathProvider; }
set { base.VirtualPathProvider = value; }
}
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);
}
}
}
}