public void LocatesAllServiceRouteMappers() { var assemblyLocator = new Mock<IAssemblyLocator>(); //including the assembly with object ensures that the assignabliity is done correctly var assembliesToReflect = new IAssembly[2]; assembliesToReflect[0] = new AssemblyWrapper(GetType().Assembly); assembliesToReflect[1] = new AssemblyWrapper(typeof (Object).Assembly); assemblyLocator.Setup(x => x.Assemblies).Returns(assembliesToReflect); var locator = new TypeLocator {AssemblyLocator = assemblyLocator.Object}; List<Type> types = locator.GetAllMatchingTypes(ServicesRoutingManager.IsValidServiceRouteMapper).ToList(); //if new ServiceRouteMapper classes are added to the assembly they willl likely need to be added here CollectionAssert.AreEquivalent( new[] { typeof (FakeServiceRouteMapper), typeof (ReflectedServiceRouteMappers.EmbeddedServiceRouteMapper), typeof (ExceptionOnCreateInstanceServiceRouteMapper), typeof (ExceptionOnRegisterServiceRouteMapper) }, types); }
public void LocateAllMatchingTypes() { var assembly = new Mock<IAssembly>(); assembly.Setup(x => x.GetTypes()).Returns(new[] {typeof(TypeLocatorTests), typeof(ServiceRoutingManagerTests)}); var assemblyLocator = new Mock<IAssemblyLocator>(); assemblyLocator.Setup(x => x.Assemblies).Returns(new[] {assembly.Object}); var typeLocator = new TypeLocator {AssemblyLocator = assemblyLocator.Object}; var types = typeLocator.GetAllMatchingTypes(x => true).ToList(); CollectionAssert.AreEquivalent(new[]{typeof(TypeLocatorTests), typeof(ServiceRoutingManagerTests)}, types); assembly.Verify(x => x.GetTypes(), Times.Once()); assemblyLocator.Verify(x => x.Assemblies, Times.Once()); }
public void RegisterRoutesIsCalledOnAllServiceRouteMappersEvenWhenSomeThrowExceptions() { FakeServiceRouteMapper.RegistrationCalls = 0; var assembly = new Mock<IAssembly>(); assembly.Setup(x => x.GetTypes()).Returns(new[] { typeof (ExceptionOnRegisterServiceRouteMapper), typeof (ExceptionOnCreateInstanceServiceRouteMapper), typeof (FakeServiceRouteMapper) }); var al = new Mock<IAssemblyLocator>(); al.Setup(x => x.Assemblies).Returns(new[] {assembly.Object}); var tl = new TypeLocator {AssemblyLocator = al.Object}; var srm = new ServicesRoutingManager(new RouteCollection()) {TypeLocator = tl}; srm.RegisterRoutes(); Assert.AreEqual(1, FakeServiceRouteMapper.RegistrationCalls); }