public void RemovedSectionGetsNotificationOnRemovalAndDoesNotGetFurtherNotifications() { ConfigurationChangeSqlWatcher.SetDefaultPollDelayInMilliseconds(100); SqlConfigurationSourceImplementation implementation = new SqlConfigurationSourceImplementation(this.data, false); object section1 = implementation.GetSection(localSection); Assert.IsNotNull(section1); object section2 = implementation.GetSection(localSection2); Assert.IsNotNull(section2); implementation.AddSectionChangeHandler(localSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.AddSectionChangeHandler(localSection2, new ConfigurationChangedEventHandler(OnConfigurationChanged)); System.Configuration.Configuration rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Save(ConfigurationSaveMode.Minimal, true); // config source changed notifies both sections implementation.ConfigSourceChanged(externalSectionSource); Assert.AreEqual(1, updatedSectionsTally[localSection]); Assert.AreEqual(1, updatedSectionsTally[localSection2]); rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); implementation.RemoveSection(localSection2); //since localsection2 is removed, localsection2 only gets initial notification Assert.AreEqual(2, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); implementation.ConfigSourceChanged(externalSectionSource); Assert.AreEqual(3, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); }
public void Setup() { string connectString = @"server=(local)\SQLExpress;database=Northwind;Integrated Security=true"; string getStoredProc = @"EntLib_GetConfig"; string setStoredProc = @"EntLib_SetConfig"; string refreshStoredProc = @"UpdateSectionDate"; string removeStoredProc = @"EntLib_RemoveSection"; this.data = new SqlConfigurationData(connectString, getStoredProc, setStoredProc, refreshStoredProc, removeStoredProc); SqlConfigurationSource.ResetImplementation(data, false); System.Configuration.Configuration rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); DummySection rwSection; rwConfiguration.Sections.Remove(localSection); rwConfiguration.Sections.Add(localSection, rwSection = new DummySection()); rwSection.Name = localSection; rwSection.Value = 10; SqlConfigurationSourceImplementation configSourceImpl = new SqlConfigurationSourceImplementation(this.data, false); configSourceImpl.SaveSection(rwSection.Name, rwSection); rwConfiguration.Sections.Remove(externalSection); rwConfiguration.Sections.Add(externalSection, rwSection = new DummySection()); rwSection.Name = externalSection; rwSection.Value = 20; configSourceImpl.SaveSection(rwSection.Name, rwSection); rwConfiguration.Sections.Remove(localSection2); rwConfiguration.Sections.Add(localSection2, rwSection = new DummySection()); rwSection.Name = localSection2; rwSection.Value = 30; configSourceImpl.SaveSection(rwSection.Name, rwSection); rwConfiguration.Save(); SqlConfigurationManager.RefreshSection(localSection, this.data); SqlConfigurationManager.RefreshSection(localSection2, this.data); SqlConfigurationManager.RefreshSection(externalSection, this.data); ConfigurationChangeSqlWatcher.ResetDefaultPollDelay(); updatedSectionsTally = new Dictionary <string, int>(0); }