public void ResolveThisClass()
        {
            var assembliesResolver = new Mock<IAssembliesResolver>();

            var typeBuilderStrategy = new Mock<ITypeBuilderStrategy>();

            typeBuilderStrategy.Setup(_ => _.ClassKey(It.IsAny<Type>())).Returns("KK");
            typeBuilderStrategy.Setup(_ => _.Configure(It.IsAny<ITypeBuilderContainer>()))
                .Callback((ITypeBuilderContainer c) => c.AddVisitor(new HypermediaApiControllerConfiguratorVisitor()));

            var typeBuilder = new TypeBuilder(typeof(ModelSample), typeBuilderStrategy.Object);

            typeBuilder.WithInterface(typeof (IHypermediaApiControllerConfigurator));

            var fakeType = typeBuilder.BuildType();

            assembliesResolver.Setup(_ => _.GetAssemblies()).Returns(new List<Assembly>() { new FakeAssembly(fakeType) });

            var resolver = new HypermediaInitializerTypeResolver();

            var collecton = resolver.GetControllerTypes(assembliesResolver.Object);

            Assume.That(collecton, Is.Not.Empty);
            Assume.That(collecton, Has.Member(fakeType));
        }
        public static void InitializeHypermedia(this HttpConfiguration configuration)
        {
            configuration.EnsureInitialized();

            IAssembliesResolver assembliesResolver = configuration.Services.GetAssembliesResolver();

            var initResolver = new HypermediaInitializerTypeResolver();

            var resolvedInitializers = initResolver.GetControllerTypes(assembliesResolver);

            resolvedInitializers.ToList().ForEach(t => ((IHypermediaApiControllerConfigurator)Activator.CreateInstance(t)).ConfigureHypermedia(configuration));
        }
        public void ResolveEmptyCollection()
        {
            var assembliesResolver = new Mock<IAssembliesResolver>();

            assembliesResolver.Setup(_ => _.GetAssemblies()).Returns(new List<Assembly>());

            var resolver = new HypermediaInitializerTypeResolver();

            var collecton = resolver.GetControllerTypes(assembliesResolver.Object);

            Assume.That(collecton, Is.Empty);
        }