parent
a2561281b7
commit
47d227cbf2
|
|
@ -26,7 +26,7 @@ namespace Microsoft.AspNet.Mvc
|
||||||
var viewEngine = ViewEngine ?? context.HttpContext.RequestServices.GetService<ICompositeViewEngine>();
|
var viewEngine = ViewEngine ?? context.HttpContext.RequestServices.GetService<ICompositeViewEngine>();
|
||||||
|
|
||||||
var viewName = ViewName ?? context.ActionDescriptor.Name;
|
var viewName = ViewName ?? context.ActionDescriptor.Name;
|
||||||
var view = FindView(viewEngine, context.RouteData.Values, viewName);
|
var view = FindView(viewEngine, context, viewName);
|
||||||
|
|
||||||
using (view as IDisposable)
|
using (view as IDisposable)
|
||||||
{
|
{
|
||||||
|
|
@ -52,10 +52,7 @@ namespace Microsoft.AspNet.Mvc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IView FindView(
|
private static IView FindView(IViewEngine viewEngine, ActionContext context, string viewName)
|
||||||
[NotNull] IViewEngine viewEngine,
|
|
||||||
[NotNull] IDictionary<string, object> context,
|
|
||||||
[NotNull] string viewName)
|
|
||||||
{
|
{
|
||||||
var result = viewEngine.FindView(context, viewName);
|
var result = viewEngine.FindView(context, viewName);
|
||||||
if (!result.Success)
|
if (!result.Success)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
|
|
@ -21,20 +20,20 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
public IReadOnlyList<IViewEngine> ViewEngines { get; private set; }
|
public IReadOnlyList<IViewEngine> ViewEngines { get; private set; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public ViewEngineResult FindPartialView([NotNull] IDictionary<string, object> context,
|
public ViewEngineResult FindPartialView([NotNull] ActionContext context,
|
||||||
[NotNull] string partialViewName)
|
[NotNull] string partialViewName)
|
||||||
{
|
{
|
||||||
return FindView(context, partialViewName, partial: true);
|
return FindView(context, partialViewName, partial: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public ViewEngineResult FindView([NotNull] IDictionary<string, object> context,
|
public ViewEngineResult FindView([NotNull] ActionContext context,
|
||||||
[NotNull] string viewName)
|
[NotNull] string viewName)
|
||||||
{
|
{
|
||||||
return FindView(context, viewName, partial: false);
|
return FindView(context, viewName, partial: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ViewEngineResult FindView(IDictionary<string, object> context,
|
private ViewEngineResult FindView(ActionContext context,
|
||||||
string viewName,
|
string viewName,
|
||||||
bool partial)
|
bool partial)
|
||||||
{
|
{
|
||||||
|
|
@ -48,6 +47,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
searchedLocations = searchedLocations.Concat(result.SearchedLocations);
|
searchedLocations = searchedLocations.Concat(result.SearchedLocations);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -381,7 +381,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
|
|
||||||
var newViewData = new ViewDataDictionary(baseViewData, model);
|
var newViewData = new ViewDataDictionary(baseViewData, model);
|
||||||
|
|
||||||
var viewEngineResult = _viewEngine.FindPartialView(ViewContext.RouteData.Values, partialViewName);
|
var viewEngineResult = _viewEngine.FindPartialView(ViewContext, partialViewName);
|
||||||
if (!viewEngineResult.Success)
|
if (!viewEngineResult.Success)
|
||||||
{
|
{
|
||||||
var locations = string.Empty;
|
var locations = string.Empty;
|
||||||
|
|
|
||||||
|
|
@ -88,8 +88,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
{
|
{
|
||||||
var fullViewName = modeViewPath + "/" + viewName;
|
var fullViewName = modeViewPath + "/" + viewName;
|
||||||
|
|
||||||
// Forcing synchronous behavior so users don't have to await templates.
|
var viewEngineResult = _viewEngine.FindPartialView(_viewContext, fullViewName);
|
||||||
var viewEngineResult = _viewEngine.FindPartialView(_viewContext.RouteData.Values, fullViewName);
|
|
||||||
if (viewEngineResult.Success)
|
if (viewEngineResult.Success)
|
||||||
{
|
{
|
||||||
using (var writer = new StringWriter(CultureInfo.InvariantCulture))
|
using (var writer = new StringWriter(CultureInfo.InvariantCulture))
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,27 @@
|
||||||
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Mvc.Rendering
|
namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Defines the contract for a view engine.
|
||||||
|
/// </summary>
|
||||||
public interface IViewEngine
|
public interface IViewEngine
|
||||||
{
|
{
|
||||||
ViewEngineResult FindView([NotNull] IDictionary<string, object> context, [NotNull] string viewName);
|
/// <summary>
|
||||||
|
/// Finds the specified view by using the specified action context.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="context">The action context.</param>
|
||||||
|
/// <param name="viewName">The name or full path to the view.</param>
|
||||||
|
/// <returns>A result representing the result of locating the view.</returns>
|
||||||
|
ViewEngineResult FindView(ActionContext context, string viewName);
|
||||||
|
|
||||||
ViewEngineResult FindPartialView(
|
/// <summary>
|
||||||
[NotNull] IDictionary<string, object> context,
|
/// Finds the specified partial view by using the specified action context.
|
||||||
[NotNull] string partialViewName);
|
/// </summary>
|
||||||
|
/// <param name="context">The action context.</param>
|
||||||
|
/// <param name="viewName">The name or full path to the view.</param>
|
||||||
|
/// <returns>A result representing the result of locating the view.</returns>
|
||||||
|
ViewEngineResult FindPartialView(ActionContext context, string partialViewName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ namespace Microsoft.AspNet.Mvc
|
||||||
ViewName ?? "Default");
|
ViewName ?? "Default");
|
||||||
}
|
}
|
||||||
|
|
||||||
var view = FindView(context.ViewContext.RouteData.Values, qualifiedViewName);
|
var view = FindView(context.ViewContext, qualifiedViewName);
|
||||||
|
|
||||||
var childViewContext = new ViewContext(
|
var childViewContext = new ViewContext(
|
||||||
context.ViewContext,
|
context.ViewContext,
|
||||||
|
|
@ -75,7 +75,7 @@ namespace Microsoft.AspNet.Mvc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private IView FindView([NotNull] IDictionary<string, object> context, [NotNull] string viewName)
|
private IView FindView(ActionContext context, string viewName)
|
||||||
{
|
{
|
||||||
var result = _viewEngine.FindView(context, viewName);
|
var result = _viewEngine.FindView(context, viewName);
|
||||||
if (!result.Success)
|
if (!result.Success)
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ using Microsoft.AspNet.Mvc.Rendering;
|
||||||
|
|
||||||
namespace Microsoft.AspNet.Mvc.Razor
|
namespace Microsoft.AspNet.Mvc.Razor
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a view engine that is used to render a page that uses the Razor syntax.
|
||||||
|
/// </summary>
|
||||||
public class RazorViewEngine : IViewEngine
|
public class RazorViewEngine : IViewEngine
|
||||||
{
|
{
|
||||||
private const string ViewExtension = ".cshtml";
|
private const string ViewExtension = ".cshtml";
|
||||||
|
|
@ -27,15 +30,22 @@ namespace Microsoft.AspNet.Mvc.Razor
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly IRazorPageFactory _pageFactory;
|
private readonly IRazorPageFactory _pageFactory;
|
||||||
private readonly IRazorPageActivator _viewActivator;
|
private readonly IRazorPageActivator _pageActivator;
|
||||||
private readonly IViewStartProvider _viewStartProvider;
|
private readonly IViewStartProvider _viewStartProvider;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the RazorViewEngine class.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pageFactory">The page factory used for creating <see cref="IRazorPage"/>.</param>
|
||||||
|
/// <param name="pageActivator">Activator for activated instances of <see cref="IRazorPage"/>.</param>
|
||||||
|
/// <param name="viewStartProvider">The provider used to provide instances of ViewStarts applicable to the
|
||||||
|
/// page being rendered.</param>
|
||||||
public RazorViewEngine(IRazorPageFactory pageFactory,
|
public RazorViewEngine(IRazorPageFactory pageFactory,
|
||||||
IRazorPageActivator viewActivator,
|
IRazorPageActivator pageActivator,
|
||||||
IViewStartProvider viewStartProvider)
|
IViewStartProvider viewStartProvider)
|
||||||
{
|
{
|
||||||
_pageFactory = pageFactory;
|
_pageFactory = pageFactory;
|
||||||
_viewActivator = viewActivator;
|
_pageActivator = pageActivator;
|
||||||
_viewStartProvider = viewStartProvider;
|
_viewStartProvider = viewStartProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -44,21 +54,23 @@ namespace Microsoft.AspNet.Mvc.Razor
|
||||||
get { return _viewLocationFormats; }
|
get { return _viewLocationFormats; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public ViewEngineResult FindView([NotNull] IDictionary<string, object> context,
|
/// <inheritdoc />
|
||||||
|
public ViewEngineResult FindView([NotNull] ActionContext context,
|
||||||
[NotNull] string viewName)
|
[NotNull] string viewName)
|
||||||
{
|
{
|
||||||
var viewEngineResult = CreateViewEngineResult(context, viewName, partial: false);
|
var viewEngineResult = CreateViewEngineResult(context, viewName, partial: false);
|
||||||
return viewEngineResult;
|
return viewEngineResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ViewEngineResult FindPartialView([NotNull] IDictionary<string, object> context,
|
/// <inheritdoc />
|
||||||
|
public ViewEngineResult FindPartialView([NotNull] ActionContext context,
|
||||||
[NotNull] string partialViewName)
|
[NotNull] string partialViewName)
|
||||||
{
|
{
|
||||||
return CreateViewEngineResult(context, partialViewName, partial: true);
|
return CreateViewEngineResult(context, partialViewName, partial: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ViewEngineResult CreateViewEngineResult([NotNull] IDictionary<string, object> context,
|
private ViewEngineResult CreateViewEngineResult(ActionContext context,
|
||||||
[NotNull] string viewName,
|
string viewName,
|
||||||
bool partial)
|
bool partial)
|
||||||
{
|
{
|
||||||
var nameRepresentsPath = IsSpecificPath(viewName);
|
var nameRepresentsPath = IsSpecificPath(viewName);
|
||||||
|
|
@ -78,8 +90,9 @@ namespace Microsoft.AspNet.Mvc.Razor
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var controllerName = context.GetValueOrDefault<string>("controller");
|
var routeValues = context.RouteData.Values;
|
||||||
var areaName = context.GetValueOrDefault<string>("area");
|
var controllerName = routeValues.GetValueOrDefault<string>("controller");
|
||||||
|
var areaName = routeValues.GetValueOrDefault<string>("area");
|
||||||
var potentialPaths = GetViewSearchPaths(viewName, controllerName, areaName);
|
var potentialPaths = GetViewSearchPaths(viewName, controllerName, areaName);
|
||||||
|
|
||||||
foreach (var path in potentialPaths)
|
foreach (var path in potentialPaths)
|
||||||
|
|
@ -98,9 +111,9 @@ namespace Microsoft.AspNet.Mvc.Razor
|
||||||
private ViewEngineResult CreateFoundResult(IRazorPage page, string viewName, bool partial)
|
private ViewEngineResult CreateFoundResult(IRazorPage page, string viewName, bool partial)
|
||||||
{
|
{
|
||||||
var view = new RazorView(_pageFactory,
|
var view = new RazorView(_pageFactory,
|
||||||
_viewActivator,
|
_pageActivator,
|
||||||
_viewStartProvider,
|
_viewStartProvider,
|
||||||
page,
|
page,
|
||||||
executeViewHierarchy: !partial);
|
executeViewHierarchy: !partial);
|
||||||
return ViewEngineResult.Found(viewName, view);
|
return ViewEngineResult.Found(viewName, view);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,12 +64,12 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
|
|
||||||
private class TestViewEngine : IViewEngine
|
private class TestViewEngine : IViewEngine
|
||||||
{
|
{
|
||||||
public ViewEngineResult FindPartialView([NotNull]IDictionary<string, object> context, [NotNull]string partialViewName)
|
public ViewEngineResult FindPartialView(ActionContext context, string partialViewName)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ViewEngineResult FindView([NotNull]IDictionary<string, object> context, [NotNull]string viewName)
|
public ViewEngineResult FindView(ActionContext context, string viewName)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Microsoft.AspNet.Http;
|
||||||
|
using Microsoft.AspNet.Routing;
|
||||||
using Moq;
|
using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -18,16 +20,18 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var provider = new Mock<IViewEngineProvider>();
|
var provider = new Mock<IViewEngineProvider>();
|
||||||
provider.SetupGet(p => p.ViewEngines)
|
provider.SetupGet(p => p.ViewEngines)
|
||||||
.Returns(new IViewEngine[0]);
|
.Returns(new IViewEngine[0]);
|
||||||
|
var actionContext = GetActionContext();
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindView(actionContext, viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
Assert.Empty(result.SearchedLocations);
|
Assert.Empty(result.SearchedLocations);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void FindView_ReturnsNotFoundResult_WhenExactlyOneViewEngineIsRegisteredWhichReturnsNotFoundResult()
|
public void FindView_ReturnsNotFoundResult_WhenExactlyOneViewEngineIsRegisteredWhichReturnsNotFoundResult()
|
||||||
{
|
{
|
||||||
|
|
@ -35,14 +39,14 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var viewName = "test-view";
|
var viewName = "test-view";
|
||||||
var provider = new Mock<IViewEngineProvider>();
|
var provider = new Mock<IViewEngineProvider>();
|
||||||
var engine = new Mock<IViewEngine>();
|
var engine = new Mock<IViewEngine>();
|
||||||
engine.Setup(e => e.FindView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, new[] { "controller/test-view" }));
|
.Returns(ViewEngineResult.NotFound(viewName, new[] { "controller/test-view" }));
|
||||||
provider.SetupGet(p => p.ViewEngines)
|
provider.SetupGet(p => p.ViewEngines)
|
||||||
.Returns(new[] { engine.Object });
|
.Returns(new[] { engine.Object });
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindView(GetActionContext(), viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
|
|
@ -57,14 +61,14 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var provider = new Mock<IViewEngineProvider>();
|
var provider = new Mock<IViewEngineProvider>();
|
||||||
var engine = new Mock<IViewEngine>();
|
var engine = new Mock<IViewEngine>();
|
||||||
var view = Mock.Of<IView>();
|
var view = Mock.Of<IView>();
|
||||||
engine.Setup(e => e.FindView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.Found(viewName, view));
|
.Returns(ViewEngineResult.Found(viewName, view));
|
||||||
provider.SetupGet(p => p.ViewEngines)
|
provider.SetupGet(p => p.ViewEngines)
|
||||||
.Returns(new[] { engine.Object });
|
.Returns(new[] { engine.Object });
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindView(GetActionContext(), viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.True(result.Success);
|
Assert.True(result.Success);
|
||||||
|
|
@ -81,11 +85,11 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var engine3 = new Mock<IViewEngine>();
|
var engine3 = new Mock<IViewEngine>();
|
||||||
var view2 = Mock.Of<IView>();
|
var view2 = Mock.Of<IView>();
|
||||||
var view3 = Mock.Of<IView>();
|
var view3 = Mock.Of<IView>();
|
||||||
engine1.Setup(e => e.FindView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine1.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound(viewName, Enumerable.Empty<string>()));
|
||||||
engine2.Setup(e => e.FindView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine2.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.Found(viewName, view2));
|
.Returns(ViewEngineResult.Found(viewName, view2));
|
||||||
engine3.Setup(e => e.FindView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine3.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.Found(viewName, view3));
|
.Returns(ViewEngineResult.Found(viewName, view3));
|
||||||
|
|
||||||
var provider = new Mock<IViewEngineProvider>();
|
var provider = new Mock<IViewEngineProvider>();
|
||||||
|
|
@ -94,7 +98,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindView(GetActionContext(), viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.True(result.Success);
|
Assert.True(result.Success);
|
||||||
|
|
@ -110,11 +114,11 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var engine1 = new Mock<IViewEngine>();
|
var engine1 = new Mock<IViewEngine>();
|
||||||
var engine2 = new Mock<IViewEngine>();
|
var engine2 = new Mock<IViewEngine>();
|
||||||
var engine3 = new Mock<IViewEngine>();
|
var engine3 = new Mock<IViewEngine>();
|
||||||
engine1.Setup(e => e.FindView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine1.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, new[] { "1", "2" }));
|
.Returns(ViewEngineResult.NotFound(viewName, new[] { "1", "2" }));
|
||||||
engine2.Setup(e => e.FindView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine2.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, new[] { "3" }));
|
.Returns(ViewEngineResult.NotFound(viewName, new[] { "3" }));
|
||||||
engine3.Setup(e => e.FindView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine3.Setup(e => e.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, new[] { "4", "5" }));
|
.Returns(ViewEngineResult.NotFound(viewName, new[] { "4", "5" }));
|
||||||
|
|
||||||
var provider = new Mock<IViewEngineProvider>();
|
var provider = new Mock<IViewEngineProvider>();
|
||||||
|
|
@ -123,7 +127,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindView(GetActionContext(), viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
|
|
@ -141,7 +145,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindPartialView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindPartialView(GetActionContext(), viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
|
|
@ -155,14 +159,14 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var viewName = "partial-view";
|
var viewName = "partial-view";
|
||||||
var provider = new Mock<IViewEngineProvider>();
|
var provider = new Mock<IViewEngineProvider>();
|
||||||
var engine = new Mock<IViewEngine>();
|
var engine = new Mock<IViewEngine>();
|
||||||
engine.Setup(e => e.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, new[] { "shared/partial-view" }));
|
.Returns(ViewEngineResult.NotFound(viewName, new[] { "shared/partial-view" }));
|
||||||
provider.SetupGet(p => p.ViewEngines)
|
provider.SetupGet(p => p.ViewEngines)
|
||||||
.Returns(new[] { engine.Object });
|
.Returns(new[] { engine.Object });
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindPartialView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindPartialView(GetActionContext(), viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
|
|
@ -177,14 +181,14 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var provider = new Mock<IViewEngineProvider>();
|
var provider = new Mock<IViewEngineProvider>();
|
||||||
var engine = new Mock<IViewEngine>();
|
var engine = new Mock<IViewEngine>();
|
||||||
var view = Mock.Of<IView>();
|
var view = Mock.Of<IView>();
|
||||||
engine.Setup(e => e.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.Found(viewName, view));
|
.Returns(ViewEngineResult.Found(viewName, view));
|
||||||
provider.SetupGet(p => p.ViewEngines)
|
provider.SetupGet(p => p.ViewEngines)
|
||||||
.Returns(new[] { engine.Object });
|
.Returns(new[] { engine.Object });
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindPartialView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindPartialView(GetActionContext(), viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.True(result.Success);
|
Assert.True(result.Success);
|
||||||
|
|
@ -201,11 +205,11 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var engine3 = new Mock<IViewEngine>();
|
var engine3 = new Mock<IViewEngine>();
|
||||||
var view2 = Mock.Of<IView>();
|
var view2 = Mock.Of<IView>();
|
||||||
var view3 = Mock.Of<IView>();
|
var view3 = Mock.Of<IView>();
|
||||||
engine1.Setup(e => e.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine1.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound(viewName, Enumerable.Empty<string>()));
|
||||||
engine2.Setup(e => e.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine2.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.Found(viewName, view2));
|
.Returns(ViewEngineResult.Found(viewName, view2));
|
||||||
engine3.Setup(e => e.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine3.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.Found(viewName, view3));
|
.Returns(ViewEngineResult.Found(viewName, view3));
|
||||||
|
|
||||||
var provider = new Mock<IViewEngineProvider>();
|
var provider = new Mock<IViewEngineProvider>();
|
||||||
|
|
@ -214,7 +218,7 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindPartialView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindPartialView(GetActionContext(), viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.True(result.Success);
|
Assert.True(result.Success);
|
||||||
|
|
@ -230,11 +234,11 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var engine1 = new Mock<IViewEngine>();
|
var engine1 = new Mock<IViewEngine>();
|
||||||
var engine2 = new Mock<IViewEngine>();
|
var engine2 = new Mock<IViewEngine>();
|
||||||
var engine3 = new Mock<IViewEngine>();
|
var engine3 = new Mock<IViewEngine>();
|
||||||
engine1.Setup(e => e.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine1.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, new[] { "1", "2" }));
|
.Returns(ViewEngineResult.NotFound(viewName, new[] { "1", "2" }));
|
||||||
engine2.Setup(e => e.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine2.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, new[] { "3" }));
|
.Returns(ViewEngineResult.NotFound(viewName, new[] { "3" }));
|
||||||
engine3.Setup(e => e.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
engine3.Setup(e => e.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound(viewName, new[] { "4", "5" }));
|
.Returns(ViewEngineResult.NotFound(viewName, new[] { "4", "5" }));
|
||||||
|
|
||||||
var provider = new Mock<IViewEngineProvider>();
|
var provider = new Mock<IViewEngineProvider>();
|
||||||
|
|
@ -243,11 +247,17 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
var compositeViewEngine = new CompositeViewEngine(provider.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = compositeViewEngine.FindPartialView(new Dictionary<string, object>(), viewName);
|
var result = compositeViewEngine.FindPartialView(GetActionContext(), viewName);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
Assert.Equal(new[] { "1", "2", "3", "4", "5" }, result.SearchedLocations);
|
Assert.Equal(new[] { "1", "2", "3", "4", "5" }, result.SearchedLocations);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static ActionContext GetActionContext()
|
||||||
|
{
|
||||||
|
var httpContext = Mock.Of<HttpContext>();
|
||||||
|
return new ActionContext(httpContext, new RouteData(), new ActionDescriptor());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -86,7 +86,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
||||||
";
|
";
|
||||||
var model = new DefaultTemplatesUtilities.ObjectWithScaffoldColumn();
|
var model = new DefaultTemplatesUtilities.ObjectWithScaffoldColumn();
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
viewEngine.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
|
|
||||||
|
|
@ -104,7 +104,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
||||||
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine
|
viewEngine
|
||||||
.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
helper.ViewData["Property1"] = "ViewData string";
|
helper.ViewData["Property1"] = "ViewData string";
|
||||||
|
|
@ -123,7 +123,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
||||||
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine
|
viewEngine
|
||||||
.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
helper.ViewData["Property1"] = "ViewData string";
|
helper.ViewData["Property1"] = "ViewData string";
|
||||||
|
|
@ -142,7 +142,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
||||||
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine
|
viewEngine
|
||||||
.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
|
|
||||||
|
|
@ -162,7 +162,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
||||||
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = propertyValue, };
|
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = propertyValue, };
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine
|
viewEngine
|
||||||
.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
helper.ViewData["Property1"] = "ViewData string";
|
helper.ViewData["Property1"] = "ViewData string";
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ Environment.NewLine;
|
||||||
|
|
||||||
var model = new DefaultTemplatesUtilities.ObjectWithScaffoldColumn();
|
var model = new DefaultTemplatesUtilities.ObjectWithScaffoldColumn();
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
viewEngine.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var htmlHelper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
|
|
||||||
|
|
@ -112,7 +112,7 @@ Environment.NewLine;
|
||||||
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine
|
viewEngine
|
||||||
.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
helper.ViewData["Property1"] = "ViewData string";
|
helper.ViewData["Property1"] = "ViewData string";
|
||||||
|
|
@ -133,7 +133,7 @@ Environment.NewLine;
|
||||||
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine
|
viewEngine
|
||||||
.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
helper.ViewData["Property1"] = "ViewData string";
|
helper.ViewData["Property1"] = "ViewData string";
|
||||||
|
|
@ -154,7 +154,7 @@ Environment.NewLine;
|
||||||
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = "Model string" };
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine
|
viewEngine
|
||||||
.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
|
|
||||||
|
|
@ -176,7 +176,7 @@ Environment.NewLine;
|
||||||
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = propertyValue, };
|
var model = new DefaultTemplatesUtilities.ObjectTemplateModel { Property1 = propertyValue, };
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine
|
viewEngine
|
||||||
.Setup(v => v.FindPartialView(It.IsAny<IDictionary<string, object>>(), It.IsAny<string>()))
|
.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
.Returns(ViewEngineResult.NotFound("", Enumerable.Empty<string>()));
|
||||||
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
var helper = DefaultTemplatesUtilities.GetHtmlHelper(model, viewEngine.Object);
|
||||||
helper.ViewData["Property1"] = "ViewData string";
|
helper.ViewData["Property1"] = "ViewData string";
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ namespace Microsoft.AspNet.Mvc.Core
|
||||||
|
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine
|
viewEngine
|
||||||
.Setup(v => v.FindPartialView(It.IsAny<Dictionary<string, object>>(), It.IsAny<string>()))
|
.Setup(v => v.FindPartialView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.Found("MyView", view.Object));
|
.Returns(ViewEngineResult.Found("MyView", view.Object));
|
||||||
|
|
||||||
return viewEngine.Object;
|
return viewEngine.Object;
|
||||||
|
|
|
||||||
|
|
@ -51,12 +51,12 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
|
|
||||||
public ITestService Service { get; private set; }
|
public ITestService Service { get; private set; }
|
||||||
|
|
||||||
public ViewEngineResult FindPartialView([NotNull]IDictionary<string, object> context, [NotNull]string partialViewName)
|
public ViewEngineResult FindPartialView(ActionContext context, string partialViewName)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ViewEngineResult FindView([NotNull]IDictionary<string, object> context, [NotNull]string viewName)
|
public ViewEngineResult FindView(ActionContext context, string viewName)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,12 +53,12 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
|
|
||||||
private class TestViewEngine : IViewEngine
|
private class TestViewEngine : IViewEngine
|
||||||
{
|
{
|
||||||
public ViewEngineResult FindPartialView(IDictionary<string, object> context, string partialViewName)
|
public ViewEngineResult FindPartialView(ActionContext context, string partialViewName)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ViewEngineResult FindView(IDictionary<string, object> context, string viewName)
|
public ViewEngineResult FindView(ActionContext context, string viewName)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,6 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
var routeDictionary = new Dictionary<string, object>();
|
var routeDictionary = new Dictionary<string, object>();
|
||||||
|
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine.Setup(v => v.FindView(routeDictionary, It.IsAny<string>()))
|
|
||||||
.Returns(ViewEngineResult.Found("MyView", view.Object));
|
|
||||||
|
|
||||||
var serviceProvider = new Mock<IServiceProvider>();
|
var serviceProvider = new Mock<IServiceProvider>();
|
||||||
serviceProvider.Setup(sp => sp.GetService(typeof(ICompositeViewEngine)))
|
serviceProvider.Setup(sp => sp.GetService(typeof(ICompositeViewEngine)))
|
||||||
|
|
@ -52,12 +50,15 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
.Returns(response.Object);
|
.Returns(response.Object);
|
||||||
context.SetupGet(c => c.RequestServices)
|
context.SetupGet(c => c.RequestServices)
|
||||||
.Returns(serviceProvider.Object);
|
.Returns(serviceProvider.Object);
|
||||||
|
|
||||||
var actionContext = new ActionContext(context.Object,
|
var actionContext = new ActionContext(context.Object,
|
||||||
new RouteData() { Values = routeDictionary },
|
new RouteData() { Values = routeDictionary },
|
||||||
new ActionDescriptor());
|
new ActionDescriptor());
|
||||||
|
|
||||||
|
viewEngine.Setup(v => v.FindView(actionContext, It.IsAny<string>()))
|
||||||
|
.Returns(ViewEngineResult.Found("MyView", view.Object));
|
||||||
|
|
||||||
|
|
||||||
var viewResult = new ViewResult();
|
var viewResult = new ViewResult();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -84,8 +85,6 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
var routeDictionary = new Dictionary<string, object>();
|
var routeDictionary = new Dictionary<string, object>();
|
||||||
|
|
||||||
var goodViewEngine = new Mock<IViewEngine>();
|
var goodViewEngine = new Mock<IViewEngine>();
|
||||||
goodViewEngine.Setup(v => v.FindView(routeDictionary, It.IsAny<string>()))
|
|
||||||
.Returns(ViewEngineResult.Found("MyView", view.Object));
|
|
||||||
|
|
||||||
var badViewEngine = new Mock<ICompositeViewEngine>(MockBehavior.Strict);
|
var badViewEngine = new Mock<ICompositeViewEngine>(MockBehavior.Strict);
|
||||||
|
|
||||||
|
|
@ -108,6 +107,10 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
new RouteData() { Values = routeDictionary },
|
new RouteData() { Values = routeDictionary },
|
||||||
new ActionDescriptor());
|
new ActionDescriptor());
|
||||||
|
|
||||||
|
goodViewEngine.Setup(v => v.FindView(actionContext, It.IsAny<string>()))
|
||||||
|
.Returns(ViewEngineResult.Found("MyView", view.Object));
|
||||||
|
|
||||||
|
|
||||||
var viewResult = new ViewResult()
|
var viewResult = new ViewResult()
|
||||||
{
|
{
|
||||||
ViewEngine = goodViewEngine.Object,
|
ViewEngine = goodViewEngine.Object,
|
||||||
|
|
@ -141,7 +144,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
});
|
});
|
||||||
|
|
||||||
var viewEngine = new Mock<ICompositeViewEngine>();
|
var viewEngine = new Mock<ICompositeViewEngine>();
|
||||||
viewEngine.Setup(v => v.FindView(routeDictionary, It.IsAny<string>()))
|
viewEngine.Setup(v => v.FindView(It.IsAny<ActionContext>(), It.IsAny<string>()))
|
||||||
.Returns(ViewEngineResult.Found("MyView", view.Object));
|
.Returns(ViewEngineResult.Found("MyView", view.Object));
|
||||||
|
|
||||||
var serviceProvider = new Mock<IServiceProvider>();
|
var serviceProvider = new Mock<IServiceProvider>();
|
||||||
|
|
@ -156,11 +159,11 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
context.SetupGet(c => c.Response)
|
context.SetupGet(c => c.Response)
|
||||||
.Returns(response.Object);
|
.Returns(response.Object);
|
||||||
context.SetupGet(c => c.RequestServices).Returns(serviceProvider.Object);
|
context.SetupGet(c => c.RequestServices).Returns(serviceProvider.Object);
|
||||||
|
|
||||||
var actionContext = new ActionContext(context.Object,
|
var actionContext = new ActionContext(context.Object,
|
||||||
new RouteData() { Values = routeDictionary },
|
new RouteData() { Values = routeDictionary },
|
||||||
new ActionDescriptor());
|
new ActionDescriptor());
|
||||||
|
|
||||||
var viewResult = new ViewResult();
|
var viewResult = new ViewResult();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,9 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.AspNet.Http;
|
||||||
using Microsoft.AspNet.Mvc.Rendering;
|
using Microsoft.AspNet.Mvc.Rendering;
|
||||||
|
using Microsoft.AspNet.Routing;
|
||||||
using Moq;
|
using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -39,10 +41,11 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var viewEngine = CreateSearchLocationViewEngineTester();
|
var viewEngine = CreateSearchLocationViewEngineTester();
|
||||||
|
var context = GetActionContext(_controllerTestContext);
|
||||||
|
|
||||||
// Act & Assert
|
// Act & Assert
|
||||||
Assert.Throws<InvalidOperationException>(() =>
|
Assert.Throws<InvalidOperationException>(() =>
|
||||||
viewEngine.FindView(_controllerTestContext, viewName));
|
viewEngine.FindView(context, viewName));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
|
|
@ -53,10 +56,11 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
var viewEngine = CreateSearchLocationViewEngineTester();
|
var viewEngine = CreateSearchLocationViewEngineTester();
|
||||||
// Append .cshtml so the viewname is no longer invalid
|
// Append .cshtml so the viewname is no longer invalid
|
||||||
viewName += ".cshtml";
|
viewName += ".cshtml";
|
||||||
|
var context = GetActionContext(_controllerTestContext);
|
||||||
|
|
||||||
// Act & Assert
|
// Act & Assert
|
||||||
// If this throws then our test case fails
|
// If this throws then our test case fails
|
||||||
var result = viewEngine.FindPartialView(_controllerTestContext, viewName);
|
var result = viewEngine.FindPartialView(context, viewName);
|
||||||
|
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
}
|
}
|
||||||
|
|
@ -67,10 +71,11 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var viewEngine = CreateSearchLocationViewEngineTester();
|
var viewEngine = CreateSearchLocationViewEngineTester();
|
||||||
|
var context = GetActionContext(_controllerTestContext);
|
||||||
|
|
||||||
// Act & Assert
|
// Act & Assert
|
||||||
Assert.Throws<InvalidOperationException>(() =>
|
Assert.Throws<InvalidOperationException>(() =>
|
||||||
viewEngine.FindPartialView(_controllerTestContext, partialViewName));
|
viewEngine.FindPartialView(context, partialViewName));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
|
|
@ -81,10 +86,11 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
var viewEngine = CreateSearchLocationViewEngineTester();
|
var viewEngine = CreateSearchLocationViewEngineTester();
|
||||||
// Append .cshtml so the viewname is no longer invalid
|
// Append .cshtml so the viewname is no longer invalid
|
||||||
partialViewName += ".cshtml";
|
partialViewName += ".cshtml";
|
||||||
|
var context = GetActionContext(_controllerTestContext);
|
||||||
|
|
||||||
// Act & Assert
|
// Act & Assert
|
||||||
// If this throws then our test case fails
|
// If this throws then our test case fails
|
||||||
var result = viewEngine.FindPartialView(_controllerTestContext, partialViewName);
|
var result = viewEngine.FindPartialView(context, partialViewName);
|
||||||
|
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
}
|
}
|
||||||
|
|
@ -95,15 +101,16 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
// Arrange
|
// Arrange
|
||||||
var searchedLocations = new List<string>();
|
var searchedLocations = new List<string>();
|
||||||
var viewEngine = CreateSearchLocationViewEngineTester();
|
var viewEngine = CreateSearchLocationViewEngineTester();
|
||||||
|
var context = GetActionContext(_areaTestContext);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = viewEngine.FindPartialView(_areaTestContext, "partial");
|
var result = viewEngine.FindPartialView(context, "partial");
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
Assert.Equal(new[] {
|
Assert.Equal(new[] {
|
||||||
"/Areas/foo/Views/bar/partial.cshtml",
|
"/Areas/foo/Views/bar/partial.cshtml",
|
||||||
"/Areas/foo/Views/Shared/partial.cshtml",
|
"/Areas/foo/Views/Shared/partial.cshtml",
|
||||||
"/Views/Shared/partial.cshtml",
|
"/Views/Shared/partial.cshtml",
|
||||||
}, result.SearchedLocations);
|
}, result.SearchedLocations);
|
||||||
}
|
}
|
||||||
|
|
@ -113,14 +120,15 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var viewEngine = CreateSearchLocationViewEngineTester();
|
var viewEngine = CreateSearchLocationViewEngineTester();
|
||||||
|
var context = GetActionContext(_controllerTestContext);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = viewEngine.FindPartialView(_controllerTestContext, "partialNoArea");
|
var result = viewEngine.FindPartialView(context, "partialNoArea");
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
Assert.Equal(new[] {
|
Assert.Equal(new[] {
|
||||||
"/Views/bar/partialNoArea.cshtml",
|
"/Views/bar/partialNoArea.cshtml",
|
||||||
"/Views/Shared/partialNoArea.cshtml",
|
"/Views/Shared/partialNoArea.cshtml",
|
||||||
}, result.SearchedLocations);
|
}, result.SearchedLocations);
|
||||||
}
|
}
|
||||||
|
|
@ -130,15 +138,16 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var viewEngine = CreateSearchLocationViewEngineTester();
|
var viewEngine = CreateSearchLocationViewEngineTester();
|
||||||
|
var context = GetActionContext(_areaTestContext);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = viewEngine.FindView(_areaTestContext, "full");
|
var result = viewEngine.FindView(context, "full");
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
Assert.Equal(new[] {
|
Assert.Equal(new[] {
|
||||||
"/Areas/foo/Views/bar/full.cshtml",
|
"/Areas/foo/Views/bar/full.cshtml",
|
||||||
"/Areas/foo/Views/Shared/full.cshtml",
|
"/Areas/foo/Views/Shared/full.cshtml",
|
||||||
"/Views/Shared/full.cshtml",
|
"/Views/Shared/full.cshtml",
|
||||||
}, result.SearchedLocations);
|
}, result.SearchedLocations);
|
||||||
}
|
}
|
||||||
|
|
@ -148,14 +157,15 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var viewEngine = CreateSearchLocationViewEngineTester();
|
var viewEngine = CreateSearchLocationViewEngineTester();
|
||||||
|
var context = GetActionContext(_controllerTestContext);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = viewEngine.FindView(_controllerTestContext, "fullNoArea");
|
var result = viewEngine.FindView(context, "fullNoArea");
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.False(result.Success);
|
Assert.False(result.Success);
|
||||||
Assert.Equal(new[] {
|
Assert.Equal(new[] {
|
||||||
"/Views/bar/fullNoArea.cshtml",
|
"/Views/bar/fullNoArea.cshtml",
|
||||||
"/Views/Shared/fullNoArea.cshtml",
|
"/Views/Shared/fullNoArea.cshtml",
|
||||||
}, result.SearchedLocations);
|
}, result.SearchedLocations);
|
||||||
}
|
}
|
||||||
|
|
@ -170,9 +180,10 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
var viewEngine = new RazorViewEngine(pageFactory.Object,
|
var viewEngine = new RazorViewEngine(pageFactory.Object,
|
||||||
Mock.Of<IRazorPageActivator>(),
|
Mock.Of<IRazorPageActivator>(),
|
||||||
Mock.Of<IViewStartProvider>());
|
Mock.Of<IViewStartProvider>());
|
||||||
|
var context = GetActionContext(_controllerTestContext);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var result = viewEngine.FindView(_controllerTestContext, "test-view");
|
var result = viewEngine.FindView(context, "test-view");
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.True(result.Success);
|
Assert.True(result.Success);
|
||||||
|
|
@ -192,5 +203,12 @@ namespace Microsoft.AspNet.Mvc.Razor.Test
|
||||||
|
|
||||||
return viewEngine;
|
return viewEngine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static ActionContext GetActionContext(IDictionary<string, object> routeValues)
|
||||||
|
{
|
||||||
|
var httpContext = Mock.Of<HttpContext>();
|
||||||
|
var routeData = new RouteData { Values = routeValues };
|
||||||
|
return new ActionContext(httpContext, routeData, new ActionDescriptor());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using Microsoft.AspNet.Mvc;
|
||||||
using Microsoft.AspNet.Mvc.Rendering;
|
using Microsoft.AspNet.Mvc.Rendering;
|
||||||
|
|
||||||
namespace CompositeViewEngine
|
namespace CompositeViewEngine
|
||||||
{
|
{
|
||||||
public class TestViewEngine : IViewEngine
|
public class TestViewEngine : IViewEngine
|
||||||
{
|
{
|
||||||
public ViewEngineResult FindPartialView(IDictionary<string, object> context, string partialViewName)
|
public ViewEngineResult FindPartialView(ActionContext context, string partialViewName)
|
||||||
{
|
{
|
||||||
if (string.Equals(partialViewName, "partial-test-view", StringComparison.Ordinal))
|
if (string.Equals(partialViewName, "partial-test-view", StringComparison.Ordinal))
|
||||||
{
|
{
|
||||||
|
|
@ -18,7 +18,7 @@ namespace CompositeViewEngine
|
||||||
return ViewEngineResult.NotFound(partialViewName, new[] { partialViewName });
|
return ViewEngineResult.NotFound(partialViewName, new[] { partialViewName });
|
||||||
}
|
}
|
||||||
|
|
||||||
public ViewEngineResult FindView(IDictionary<string, object> context, string viewName)
|
public ViewEngineResult FindView(ActionContext context, string viewName)
|
||||||
{
|
{
|
||||||
if (string.Equals(viewName, "test-view"))
|
if (string.Equals(viewName, "test-view"))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue