Ejemplo n.º 1
0
        private static void SetupRoutesUsingTestClasses()
        {
            RouteTableBuilder.ClearRoutes();
            var allTestControllerActions = SitkaController.GetAllControllerActionMethods(typeof(MyAbstractBaseController));

            RouteTableBuilder.Build(allTestControllerActions, null, new Dictionary <string, string>());
        }
Ejemplo n.º 2
0
 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;
     }
 }
Ejemplo n.º 3
0
        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()));
        }
Ejemplo n.º 4
0
 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?)));
 }
Ejemplo n.º 5
0
 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;
     }
 }
Ejemplo n.º 6
0
        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");
        }
Ejemplo n.º 7
0
        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}");
            }
        }
Ejemplo n.º 8
0
        private static int GetDefaultRouteCount()
        {
            List <SitkaRouteTableEntry> routeEntries = RouteTableBuilder.SetupRouteTableImpl(new MethodInfo[] {});

            return(routeEntries.Count);
        }
Ejemplo n.º 9
0
 // Restore RouteTableBuilder to normal state
 private static void RestoreRouteTableBuilderToNormalState()
 {
     RouteTableBuilder.Build(FirmaBaseController.AllControllerActionMethods, null, Global.AreasDictionary, true);
 }
Ejemplo n.º 10
0
 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);
 }