Advertisement
Guest User

Untitled

a guest
Sep 1st, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.59 KB | None | 0 0
  1. public static class ControllerTestExtensions
  2.     {
  3.         public static T StubControllerDependencies<T>(this T controller) where T : Controller
  4.         {
  5.             return StubControllerDependencies(controller, null);
  6.         }
  7.  
  8.         public static T StubControllerDependencies<T>(this T controller, IList<Stream> requestFiles) where T : Controller
  9.         {
  10.             RouteTable.Routes.Clear();
  11.             var routes = RouteTester.RegisterTestRoutes();
  12.             var requestContext = new RequestContext(GetMockHttpContext(requestFiles), new RouteData());
  13.             controller.Url = new UrlHelper(requestContext, routes);
  14.             controller.ControllerContext = new ControllerContext(requestContext, controller);
  15.  
  16.             return controller;
  17.         }
  18.  
  19.         public static T GetModel<T>(this ActionResult ar) where T : class
  20.         {
  21.             var result = ar as ViewResult;
  22.             if (result == null)
  23.             {
  24.                 throw new Exception("Can't get view from ActionResult because it isn't a ViewResult");
  25.             }
  26.  
  27.             return result.Model as T;
  28.         }
  29.  
  30.         public static FormActionResult GetFormActionResult(this ActionResult ar)
  31.         {
  32.             var result = ar as FormActionResult;
  33.             if (result == null)
  34.             {
  35.                 throw new Exception("Can't get result from ActionResult because it isn't a FormActionResult");
  36.             }
  37.  
  38.             return result;
  39.         }
  40.  
  41.         private static HttpContextBase GetMockHttpContext(IList<Stream> requestFiles)
  42.         {
  43.             var context = new Mock<HttpContextBase>();
  44.             var request = new Mock<HttpRequestBase>();
  45.             var response = new Mock<HttpResponseBase>();
  46.             var session = new Mock<HttpSessionStateBase>();
  47.             var server = new Mock<HttpServerUtilityBase>();
  48.  
  49.             request.Setup(r => r.AppRelativeCurrentExecutionFilePath).Returns("/");
  50.             request.Setup(r => r.ApplicationPath).Returns("/");
  51.  
  52.             if (requestFiles != null)
  53.             {
  54.                 var fakedFileCollection = new Mock<HttpFileCollectionBase>();
  55.                 fakedFileCollection.SetupGet(x => x.Count).Returns(requestFiles.Count);
  56.                 int i = 0;
  57.                 foreach (var file in requestFiles)
  58.                 {
  59.                     var fakedFile = new Mock<HttpPostedFileBase>();
  60.                     fakedFile.SetupGet(x => x.InputStream).Returns(file);
  61.                     fakedFile.SetupGet(x => x.ContentLength).Returns((int)file.Length);
  62.                     fakedFileCollection.SetupGet(x => x[i]).Returns(fakedFile.Object);
  63.                 }
  64.  
  65.                 request.SetupGet(x => x.Files).Returns(fakedFileCollection.Object);
  66.             }
  67.  
  68.             response.Setup(s => s.ApplyAppPathModifier(It.IsAny<string>())).Returns<string>(s => s);
  69.             response.SetupProperty(res => res.StatusCode, (int)System.Net.HttpStatusCode.OK);
  70.  
  71.             context.Setup(h => h.Request).Returns(request.Object);
  72.             context.Setup(h => h.Response).Returns(response.Object);
  73.  
  74.             context.Setup(ctx => ctx.Request).Returns(request.Object);
  75.             context.Setup(ctx => ctx.Response).Returns(response.Object);
  76.             context.Setup(ctx => ctx.Session).Returns(session.Object);
  77.             context.Setup(ctx => ctx.Server).Returns(server.Object);
  78.  
  79.             return context.Object;
  80.         }
  81.  
  82.         private class TestHttpCollection : HttpFileCollectionBase
  83.         {
  84.             public TestHttpCollection() : base()
  85.             {
  86.                
  87.             }
  88.         }
  89.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement