using System; using System.Collections.Generic; using AgileConfig.Server.Data.Abstraction; using AgileConfig.Server.Data.Mongodb; using AgileConfig.Server.Data.Repository.Mongodb; using AgileConfig.Server.IService; using AgileConfig.Server.Service; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Moq; namespace AgileConfig.Server.ServiceTests.mongodb; public abstract class Basic { private static readonly Dictionary ConfigurationData = new Dictionary { { "db:provider", "mongodb" }, { "db:conn", "mongodb://localhost:27017;localhost:37017/AgileConfig" } }; private static void InitServices(IServiceCollection sc, string connectionString) { sc.AddTransient>(_ => _ => new MongodbUow()); sc.AddScoped>( _ => _ => new ConfigPublishedRepository(connectionString)); sc.AddScoped>(_ => _ => new ConfigRepository(connectionString)); sc.AddScoped>(_ => _ => new PublishDetailRepository(connectionString)); sc.AddScoped>( _ => _ => new PublishTimelineRepository(connectionString)); } private readonly ServiceProvider _serviceProvider; protected Basic() { var config = new ConfigurationBuilder() .AddInMemoryCollection(ConfigurationData) .Build(); var cache = new Mock(); IServiceCollection services = new ServiceCollection(); services.AddScoped(_ => cache.Object); services.AddSingleton(config); InitServices(services, ConfigurationData["db:conn"]); services.AddMongodbRepository(); services.AddBusinessServices(); _serviceProvider = services.BuildServiceProvider(); Console.WriteLine("TestInitialize"); } protected T GetService() { return _serviceProvider.GetService(); } protected IConfigRepository ConfigRepository => _serviceProvider.GetService(); protected IAppRepository AppRepository => _serviceProvider.GetService(); protected IAppInheritancedRepository AppInheritancedRepository => _serviceProvider.GetService(); protected ISysLogRepository SysLogRepository => _serviceProvider.GetService(); }