forked from NancyFx/Nancy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestingViewFactory.cs
More file actions
65 lines (59 loc) · 2.84 KB
/
Copy pathTestingViewFactory.cs
File metadata and controls
65 lines (59 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
namespace Nancy.Testing
{
using Nancy.ViewEngines;
/// <summary>
/// A view factory decorator, aimed for test,
/// that exposes some interesting properties about the generated view
/// </summary>
public class TestingViewFactory : IViewFactory
{
private readonly DefaultViewFactory decoratedViewFactory;
/// <summary>
/// Creates the view based on the view factory sent to the constructor
/// </summary>
/// <param name="viewFactory">the view factory that is decorated</param>
public TestingViewFactory(DefaultViewFactory viewFactory)
{
this.decoratedViewFactory = viewFactory;
}
/// <summary>
/// Renders the view and then call into the viewfactory
/// that the TestingViewFactory is decorating
/// </summary>
/// <param name="viewName">The name of the view to render.</param>
/// <param name="model">The module path of the module that is rendering the view.</param>
/// <param name="viewLocationContext">A <see cref="ViewLocationContext"/> instance, containing information about the context for which the view is being rendered.</param>
/// <returns>A response.</returns>
public Response RenderView(string viewName, dynamic model, ViewLocationContext viewLocationContext)
{
// Intercept and store interesting stuff
viewLocationContext.Context.Items[TestingViewContextKeys.VIEWMODEL] = model;
viewLocationContext.Context.Items[TestingViewContextKeys.VIEWNAME] = viewName;
viewLocationContext.Context.Items[TestingViewContextKeys.MODULENAME] = viewLocationContext.ModuleName;
viewLocationContext.Context.Items[TestingViewContextKeys.MODULEPATH] = viewLocationContext.ModulePath;
return this.decoratedViewFactory.RenderView(viewName, model, viewLocationContext);
}
}
/// <summary>
/// The key names for where the testing view context data is stored
/// </summary>
public static class TestingViewContextKeys
{
/// <summary>
/// The key in ViewLocationContext.Item for the view model
/// </summary>
public const string VIEWMODEL = "__Nancy_Testing_ViewModel";
/// <summary>
/// The key in ViewLocationContext.Item for the view name
/// </summary>
public const string VIEWNAME = "__Nancy_Testing_ViewName";
/// <summary>
/// The key in ViewLocationContext.Item for the model name
/// </summary>
public const string MODULENAME = "__Nancy_Testing_ModuleName";
/// <summary>
/// The key in ViewLocationContext.Item for the module path
/// </summary>
public const string MODULEPATH = "__Nancy_Testing_ModulePath";
}
}