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);
        }