//public static IServiceCollection RegisterLexicala(this IServiceCollection services, IConfiguration configuration)
        //{
        //    var config = configuration.GetSection("Lexicala").Get<LexicalaConfig>();
        //    return RegisterLexicala(services, config);
        //}

        //public static IServiceCollection RegisterLexicala(this IServiceCollection services, LexicalaConfig config)
        //{
        //    services.AddHttpClient<ILexicalaClient, LexicalaClient>(client =>
        //    {
        //        client.BaseAddress = LexicalaConfig.BaseAddress;
        //        client.DefaultRequestHeaders.Authorization = config.CreateAuthenticationHeader();
        //    });

        //    services.AddMemoryCache();
        //    services.AddTransient<ILexicalaSearchParser, LexicalaSearchParser>();

        //    return services;
        //}
        public static IContainer RegisterLexixala(LexicalaConfig config)
        {
            var builder = new ContainerBuilder();

            var httpClient = config.CreateHttpClient();

            builder.RegisterInstance(httpClient)
            .SingleInstance();

            var lexicalaClient = new LexicalaClient(httpClient);

            builder.RegisterInstance(lexicalaClient)
            .As <ILexicalaClient>();

            // register options since MemoryCache depends on it
            builder.RegisterGeneric(typeof(OptionsManager <>)).As(typeof(IOptions <>)).SingleInstance();
            builder.RegisterGeneric(typeof(OptionsManager <>)).As(typeof(IOptionsSnapshot <>)).InstancePerLifetimeScope();
            builder.RegisterGeneric(typeof(OptionsMonitor <>)).As(typeof(IOptionsMonitor <>)).SingleInstance();
            builder.RegisterGeneric(typeof(OptionsFactory <>)).As(typeof(IOptionsFactory <>));
            builder.RegisterGeneric(typeof(OptionsCache <>)).As(typeof(IOptionsMonitorCache <>)).SingleInstance();

            builder.RegisterType <MemoryCache>()
            .As <IMemoryCache>()
            .SingleInstance();

            builder.RegisterType <LexicalaSearchParser>()
            .As <ILexicalaSearchParser>()
            .SingleInstance();

            return(builder.Build());
        }
        public void Initialize()
        {
            _handlerMock = new Mock <HttpMessageHandler>();
            var httpClient = new HttpClient(_handlerMock.Object)
            {
                BaseAddress = new Uri("http://www.tempuri.org")
            };

            var mocker = new AutoMocker(MockBehavior.Loose);

            mocker.Use(httpClient);

            _client = mocker.CreateInstance <LexicalaClient>();
        }