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

            RouteTableBuilder.Build(allTestControllerActions, null, new Dictionary <string, string>());
        }
Beispiel #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;
     }
 }
Beispiel #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()));
        }
Beispiel #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?)));
 }
Beispiel #5
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");
        }
Beispiel #6
0
        private static void TestRouteParameterOptionality(int expectedCountOfRoutes, Type type, bool shouldThrow)
        {
            List <MethodInfo> methods = SitkaController.FindControllerActions(type);

            Assert.That(methods, Is.Not.Empty, string.Format("Test Precondition: the test type {0} should have a controller action on it", type));

            if (shouldThrow)
            {
                Assert.Throws <PreconditionException>(() => RouteTableBuilder.SetupRouteTableImpl(methods), string.Format("An illegal route was allowed into the route table! {0}", type.Name));
            }
            else
            {
                var routeEntries = new List <SitkaRouteTableEntry>();
                Assert.DoesNotThrow(() => routeEntries = RouteTableBuilder.SetupRouteTableImpl(methods), string.Format("A legal route was not allowed into the route table! {0}", type.Name));
                Assert.That(routeEntries.Count, Is.EqualTo(expectedCountOfRoutes), string.Format("Route count is not what was expected. {0}", type.Name));
            }
        }
Beispiel #7
0
        private static int GetDefaultRouteCount()
        {
            List <SitkaRouteTableEntry> routeEntries = RouteTableBuilder.SetupRouteTableImpl(new MethodInfo[] {});

            return(routeEntries.Count);
        }