/// <summary> /// Initializes and returns an <see cref="IConfigManager"/> with the specified configs registered with initial state. /// </summary> /// <param name="configFileWriter">An action to set up the config file before config manager initializes.</param> /// <param name="envVarWriter">An action to set up the environments before config manager initializes.</param> /// <param name="config">Definitions of configs to be registered to the config manager.</param> /// <returns>A config manager with initial state, ready to use.</returns> internal IConfigManager GetConfigManager(InitSettings settings, params ConfigDefinition[] config) { var dataStore = settings?.DataStore ?? new MockDataStore(); var configPath = settings?.Path ?? Path.GetRandomFileName(); var environmentVariableProvider = settings?.EnvironmentVariableProvider ?? new MockEnvironmentVariableProvider(); ConfigInitializer ci = new ConfigInitializer(new List <string>() { configPath }) { DataStore = dataStore, EnvironmentVariableProvider = environmentVariableProvider }; IConfigManager icm = ci.GetConfigManager(); foreach (var configDefinition in config) { icm.RegisterConfig(configDefinition); } icm.BuildConfig(); return(icm); }
/// <summary> /// Initializes and returns an <see cref="IConfigManager"/> with the specified configs registered with initial state. /// </summary> /// <param name="configFileWriter">An action to set up the config file before config manager initializes.</param> /// <param name="envVarWriter">An action to set up the environments before config manager initializes.</param> /// <param name="config">Definitions of configs to be registered to the config manager.</param> /// <returns>A config manager with initial state, ready to use.</returns> protected IConfigManager GetConfigManagerWithInitState(Action <MockDataStore, string> configFileWriter, Action <MockEnvironmentVariableProvider> envVarWriter, params ConfigDefinition[] config) { if (configFileWriter == null) { configFileWriter = _noopFileWriter; } if (envVarWriter == null) { envVarWriter = _noopEnvVarWriter; } string configPath = Path.GetRandomFileName(); var mockDataStore = new MockDataStore(); configFileWriter(mockDataStore, configPath); var environmentVariables = new MockEnvironmentVariableProvider(); envVarWriter(environmentVariables); ConfigInitializer ci = new ConfigInitializer(new List <string>() { configPath }) { DataStore = mockDataStore, EnvironmentVariableProvider = environmentVariables }; IConfigManager icm = ci.GetConfigManager(); foreach (var configDefinition in config) { icm.RegisterConfig(configDefinition); } icm.BuildConfig(); return(icm); }