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 CanFindActionsInheritedFromBaseClass() { var controllerActionMethods = SitkaController.FindControllerActions(typeof(MyTest1Controller)); var methodNames = controllerActionMethods.Select(x => String.Format("{0}.{1}", x.ReflectedType.Name, x.Name)).ToList(); var expected = new[] { "MyTest1Controller.MyAction1", "MyTest1Controller.ActionWithNoParameters", "MyTest1Controller.ActionWithOneParameter", "MyTest1Controller.BaseAction" }; Assert.That(methodNames, Is.EquivalentTo(expected), "Should find both base declared actions and derived actions"); var abstractBaseControllerActionMethods = SitkaController.FindControllerActions(typeof(MyAbstractBaseController)); Assert.That(abstractBaseControllerActionMethods, Is.Empty, "Should not find any in abstract base classes - they don't count for routes"); }
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, 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)); } }