Пример #1
0
        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);
        }
Пример #2
0
        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"));
        }
Пример #3
0
        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);
        }
Пример #4
0
        public void CanLoadRequiredFile()
        {
            var settings = new SettingsBuilder()
                           .UseAppSettingsJson("appsettings.json", required: true)
                           .Build();

            Assert.DoesNotThrow(() => settings.Get("AllowedHosts"));
        }
Пример #5
0
        public void CanLoadRequiredFileWithVariableExpansion()
        {
            Environment.SetEnvironmentVariable("ENV", "TEST");
            var settings = new SettingsBuilder()
                           .UseEnvironmentVariables()
                           .UseAppSettingsJson("appsettings.${ENV}.json", required: true)
                           .Build();

            Assert.DoesNotThrow(() => settings.Get("AllowedHosts"));
        }
Пример #6
0
        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));
            }
        }
Пример #7
0
        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));
                }
            }
        }
Пример #8
0
        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));
                }
            }
        }