private static void SetupRoutesUsingTestClasses() { RouteTableBuilder.ClearRoutes(); var allTestControllerActions = SitkaController.GetAllControllerActionMethods(typeof(MyAbstractBaseController)); RouteTableBuilder.Build(allTestControllerActions, null, new Dictionary <string, string>()); }
public static void Build(IEnumerable <MethodInfo> allActions, List <SitkaRouteTableEntry> defaultRoutes, Dictionary <string, string> areasDictionary) { if (!_hasRouteTableBeenBuiltYet) { var builder = new RouteTableBuilder(RouteTable.Routes, defaultRoutes, areasDictionary); builder.SetupRouteTable(allActions); _hasRouteTableBeenBuiltYet = true; } }
public void TestRouteBuilder() { List <MethodInfo> methods = SitkaController.FindControllerActions(typeof(RouteTableBuilderTestController)); Assert.That(methods.Count, Is.EqualTo(6)); List <SitkaRouteTableEntry> routeEntries = RouteTableBuilder.SetupRouteTableImpl(methods); Assert.That(routeEntries.Count, Is.EqualTo(11 + GetDefaultRouteCount())); }
public void CanDetectOptionalParameters() { Assert.IsTrue(RouteTableBuilder.IsOptionalRouteType(typeof(int?))); Assert.IsTrue(RouteTableBuilder.IsOptionalRouteType(typeof(string))); Assert.IsFalse(RouteTableBuilder.IsOptionalRouteType(typeof(int))); Assert.IsFalse(RouteTableBuilder.IsOptionalRouteType(typeof(MyStructParameter))); Assert.IsTrue(RouteTableBuilder.IsOptionalRouteType(typeof(MyStructParameter?))); Assert.IsFalse(RouteTableBuilder.IsOptionalRouteType(typeof(MyClassParamter)), "Classes can't be optional - we use them for getting into objects directly"); Assert.IsFalse(RouteTableBuilder.IsOptionalRouteType(typeof(MyTest2Controller.MyEnum))); Assert.IsTrue(RouteTableBuilder.IsOptionalRouteType(typeof(MyTest2Controller.MyEnum?))); }
public static void Build(IEnumerable <MethodInfo> allActions, List <SitkaRouteTableEntry> defaultRoutes, Dictionary <string, string> areasDictionary, bool forceReload = false) { if (!_hasRouteTableBeenBuiltYet || forceReload) { // If we've loaded before, and we are forcibly reloading.. if (_hasRouteTableBeenBuiltYet && forceReload) { // Clear prior routes first. ClearRoutes(); } var builder = new RouteTableBuilder(RouteTable.Routes, defaultRoutes, areasDictionary); builder.SetupRouteTable(allActions); _hasRouteTableBeenBuiltYet = true; } }
public void RoutesShouldNotCollide() { List <MethodInfo> allTestControllerActions = SitkaController.FindControllerActions(typeof(MyAbstractBaseController)); List <SitkaRouteTableEntry> routeEntries = RouteTableBuilder.SetupRouteTableImpl(allTestControllerActions); Assert.That(routeEntries.All(re => re != null)); List <IGrouping <string, SitkaRouteTableEntry> > duplicateRouteNames = routeEntries.ToLookup(x => x.RouteName).Where(grp => grp.Count() > 1).ToList(); Assert.That(duplicateRouteNames, Is.Empty, "All route names should be unique but there are duplicates"); List <IGrouping <string, SitkaRouteTableEntry> > duplicateRouteUrls = routeEntries.ToLookup(x => x.RouteUrl).Where(grp => grp.Count() > 1).ToList(); Assert.That(duplicateRouteUrls, Is.Empty, "All route urls should be unique but there are duplicates"); }
private static void TestRouteParameterOptionality(int expectedCountOfRoutes, Type type, bool shouldThrow) { List <MethodInfo> methods = SitkaController.FindControllerActions(type); Assert.That(methods, Is.Not.Empty, $"Test Precondition: the test type {type} should have a controller action on it"); if (shouldThrow) { Assert.Throws <PreconditionException>(() => RouteTableBuilder.SetupRouteTableImpl(methods), $"An illegal route was allowed into the route table! {type.Name}"); } else { var routeEntries = new List <SitkaRouteTableEntry>(); Assert.DoesNotThrow(() => routeEntries = RouteTableBuilder.SetupRouteTableImpl(methods), $"A legal route was not allowed into the route table! {type.Name}"); Assert.That(routeEntries.Count, Is.EqualTo(expectedCountOfRoutes), $"Route count is not what was expected. {type.Name}"); } }
private static int GetDefaultRouteCount() { List <SitkaRouteTableEntry> routeEntries = RouteTableBuilder.SetupRouteTableImpl(new MethodInfo[] {}); return(routeEntries.Count); }
// Restore RouteTableBuilder to normal state private static void RestoreRouteTableBuilderToNormalState() { RouteTableBuilder.Build(FirmaBaseController.AllControllerActionMethods, null, Global.AreasDictionary, true); }
public void RunAfterTests() { // We want to put the RouteTable back to something sensible after we are done testing RouteTableBuilder.ClearRoutes(); RouteTableBuilder.Build(FirmaBaseController.AllControllerActionMethods, null, Global.AreasDictionary); }