public void UntypedAccessDemo() { //todo: refactor, break out into setup and 3 different tests for each assert var settings = new SettingsBuilder() .UseSettingsDictionary(new SettingsDictionary() { ["CoffeeRefillInterval"] = "00:05:00" }) .Build(); var key = "CoffeeRefillInterval"; //Notice how the return type is derived from the default callback var refillInterval = settings.Get(key, () => TimeSpan.FromMinutes(20)); //Expect he value from the dictionary, not the default Assert.AreEqual(TimeSpan.FromMinutes(5), refillInterval); //no key, no default. BOOM! Assert.Throws <KeyNotFoundException>( () => refillInterval = settings.Get <TimeSpan>(key + "ouch")); //key missing, default kicks in var defaultTimespan = TimeSpan.FromSeconds(42); refillInterval = settings.Get <TimeSpan>(key + "ouch", () => defaultTimespan); Assert.AreEqual(defaultTimespan, refillInterval); }
public void EnvironmentIsRespected() { var settings = new SettingsBuilder() .UseSettingsDictionary(_settingsDictionary) .Build(); //No Configuration, should return unqualified setting Assert.AreEqual("Key", settings.Get <string>("Key")); settings.SetEnvironment("prod"); Assert.AreEqual("PROD", settings.Get <string>("Key")); settings.SetEnvironment("test"); Assert.AreEqual("TEST", settings.Get <string>("Key")); }
public void CanGetArrayFromJsonArrayProperty() { var settings = new SettingsBuilder() .UseSettingsDictionary(_settingsDictionary) .Build <AppSettings>(prefix: ""); var servers = settings.Get <string[]>("Servers"); Assert.AreEqual(2, servers.Length); Assert.AreEqual(new string[] { "10.0.0.1", "10.0.0.2" }, servers); var serversCommaSeperated = settings.Get <string>("Servers"); Assert.AreEqual("10.0.0.1,10.0.0.2", serversCommaSeperated); }
public void CanLoadRequiredFile() { var settings = new SettingsBuilder() .UseAppSettingsJson("appsettings.json", required: true) .Build(); Assert.DoesNotThrow(() => settings.Get("AllowedHosts")); }
public void CanLoadRequiredFileWithVariableExpansion() { Environment.SetEnvironmentVariable("ENV", "TEST"); var settings = new SettingsBuilder() .UseEnvironmentVariables() .UseAppSettingsJson("appsettings.${ENV}.json", required: true) .Build(); Assert.DoesNotThrow(() => settings.Get("AllowedHosts")); }
public void SettingsBuilderUseSqlNoOpenConnectionProvidedCorrect() { var settings = new SettingsBuilder() .UseAppSettingsJson(Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json"), true) .UseSql <SQLiteConnection>("ConnectionStrings.SQLiteConnection", "SELECT Key, Value FROM Settings") .Build(); foreach (var kvp in _defaultSettingValues) { Assert.AreEqual(kvp.Value, settings.Get <string>(kvp.Key)); } }
public void SettingsBuilderUseSqlOpenConnectionProvidedWithXmlCorrect() { using (var con = GetPrefilledMemoryDatabase()) { var settings = new SettingsBuilder() .UseAppSettingsXml() .UseSql(con, query: "SELECT Key, Value FROM Settings") .Build(); foreach (var kvp in _defaultSettingValues) { Assert.AreEqual(kvp.Value, settings.Get <string>(kvp.Key)); } } }
public void SettingsBuilderUseSqlOpenConnectionProvidedWithJsonCorrect() { using (var con = GetPrefilledMemoryDatabase()) { var settings = new SettingsBuilder() .UseAppSettingsJson(Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json"), true) .UseSql(con, query: "SELECT Key, Value FROM Settings") .Build(); foreach (var kvp in _defaultSettingValues) { Assert.AreEqual(kvp.Value, settings.Get <string>(kvp.Key)); } } }