public void RefreshDoesNotThrowException()
        {
            // --- Arrange
            MsSqlConfigurationHandler.Reset(TimeSpan.FromMilliseconds(100));
            var handler = new MsSqlConfigurationHandler();

            // --- Act
            string value1;

            handler.GetConfigurationValue("Category1", "Key1", out value1);
            string value2;

            handler.GetConfigurationValue("Category1", "Key1", out value2);
            Thread.Sleep(100);

            ServiceManager.RemoveService(typeof(IConfigurationDataOperations));

            string value3;

            handler.GetConfigurationValue("Category1", "Key1", out value3);
            Thread.Sleep(100);

            // --- Assert
            MsSqlConfigurationHandler.LastRefreshException.ShouldBeOfType(typeof(AggregateException));
        }
        public void ParallelRefreshWorksAsExpected()
        {
            // --- Arrange
            MsSqlConfigurationHandler.Reset(TimeSpan.FromMilliseconds(100));
            var handler = new MsSqlConfigurationHandler();

            // --- Act
            var    refreshTime1 = MsSqlConfigurationHandler.LastRefreshTime;
            string value1;

            handler.GetConfigurationValue("Category1", "Key1", out value1);
            string value2;

            handler.SetConfigurationValue("Category1", "Key1", "New");
            handler.GetConfigurationValue("Category1", "Key1", out value2);
            var refreshTime2 = MsSqlConfigurationHandler.LastRefreshTime;

            Thread.Sleep(100);
            string value3;

            Parallel.Invoke(
                () => handler.GetConfigurationValue("Category1", "Key1", out value3),
                () => handler.GetConfigurationValue("Category1", "Key1", out value3));
            Thread.Sleep(100);
            handler.GetConfigurationValue("Category1", "Key1", out value3);
            var refreshTime3 = MsSqlConfigurationHandler.LastRefreshTime;

            // --- Assert
            refreshTime1.ShouldEqual(refreshTime2);
            value1.ShouldEqual(value2);
            refreshTime3.ShouldNotEqual(refreshTime2);
            value3.ShouldNotEqual(value2);
        }
        public void ConfigurationIsNotRefreshedAfterHold()
        {
            // --- Arrange
            MsSqlConfigurationHandler.Reset(TimeSpan.FromMilliseconds(100));
            var handler = new MsSqlConfigurationHandler();

            // --- Act
            var    refreshTime1 = MsSqlConfigurationHandler.LastRefreshTime;
            string value1;

            handler.GetConfigurationValue("Category1", "Key1", out value1);
            string value2;

            handler.SetConfigurationValue("Category1", "Key1", "New");

            MsSqlConfigurationHandler.Hold();

            handler.GetConfigurationValue("Category1", "Key1", out value2);
            var refreshTime2 = MsSqlConfigurationHandler.LastRefreshTime;

            Thread.Sleep(100);
            string value3;

            handler.GetConfigurationValue("Category1", "Key1", out value3);
            Thread.Sleep(100);
            handler.GetConfigurationValue("Category1", "Key1", out value3);
            var refreshTime3 = MsSqlConfigurationHandler.LastRefreshTime;

            // --- Assert
            refreshTime1.ShouldEqual(refreshTime2);
            value1.ShouldEqual(value2);
            refreshTime3.ShouldEqual(refreshTime2);
            value3.ShouldEqual(value2);
        }
        public void TestInitialize()
        {
            ServiceManager.SetRegistry(new DefaultServiceRegistry());
            ServiceManager.Register <IConfigurationDataOperations, ConfigurationDataOperations>(DB_CONN);
            DataAccessFactory.SetRegistry(ServiceManager.ServiceRegistry);

            SqlScriptHelper.RunScript("InitConfigurationValues.sql");
            MsSqlConfigurationHandler.Reset(TimeSpan.FromSeconds(10));
        }
        public void SetConfigurationValueWorksWithNullValue()
        {
            // --- Arrange
            var handler = new MsSqlConfigurationHandler();
            var ctx     = ServiceManager.GetService <IConfigurationDataOperations>();

            // --- Act
            handler.SetConfigurationValue("Category1", "Key1", null);

            // --- Assert
            var records = ctx.GetAllConfigurationValues();

            records.ShouldHaveCountOf(5);
        }
        public void SetConfigurationValueWorksWithUpdatedValue()
        {
            // --- Arrange
            var handler = new MsSqlConfigurationHandler();
            var ctx     = ServiceManager.GetService <IConfigurationDataOperations>();

            // --- Act
            handler.SetConfigurationValue("Category1", "Key1", "Update OK");

            // --- Assert
            var records = ctx.GetAllConfigurationValues();

            records.ShouldHaveCountOf(6);
            string value;
            var    found = handler.GetConfigurationValue("Category1", "Key1", out value);

            found.ShouldBeTrue();
            value.ShouldEqual("Update OK");
        }
        public void GetConfigurationValueWorksAsExpected()
        {
            // --- Arrange
            var handler = new MsSqlConfigurationHandler();

            // --- Act
            string value1;
            var    found1 = handler.GetConfigurationValue("NonExistingCategory", "key", out value1);
            string value2;
            var    found2 = handler.GetConfigurationValue("Category1", "NonExistingKey", out value2);
            string value3;
            var    found3 = handler.GetConfigurationValue("Category1", "Key1", out value3);

            // --- Assert
            found1.ShouldBeFalse();
            found2.ShouldBeFalse();
            found3.ShouldBeTrue();
            value3.ShouldEqual("123");
        }