public void Load_TradeDataLoadersSectionSpecifiedButIncorrectClassName_ConfigurationErrorsException() { // arrange // all expected values that we gonna mock into further const int expectedPeriod = 5; string expectedDirectory = Environment.CurrentDirectory; var mockedConfigManager = A.Fake <IConfigurationManager>(); // mock System.Configuration.Manager #region mock fake values for AppSettings elements of app.config of System.Configuration.Manager var fakeAppSettings = new NameValueCollection { { "UpdatesMonitoringPeriodSeconds", expectedPeriod.ToString() }, { "MonitoringDirectoryPath", expectedDirectory } }; mockedConfigManager.CallsTo(cm => cm.AppSettings).Returns(fakeAppSettings); #endregion #region mock TradeDataLoadersSection of app.config of System.Configuration.Manager var appConfigSection = A.Fake <TradeDataLoadersSection>(); var fakeTradeDataLoaderElementCollection = new TradeDataLoaderElementCollection(); var tradeDataLoaderElement = new TradeDataLoaderElement { Assembly = "TradeDataMonitoring.dll", Class = "NOT-EXISTENT-TYPENAME###TradeDataMonitoring.TradeDataLoaders.CsvFileTradeDataLoader" // INCORRECT VALUE }; fakeTradeDataLoaderElementCollection.Add(tradeDataLoaderElement); appConfigSection.CallsTo(section => section.TradeDataLoaders).Returns(fakeTradeDataLoaderElementCollection); mockedConfigManager.CallsTo(cm => cm.GetSection("TradeDataLoadersSection")).Returns(appConfigSection); #endregion // act TradeDataMonitorAppSettings.Load(mockedConfigManager); // call Load with all the mocked stuff }
public void Load_TradeDataLoadersSectionIsNotSpecified_ConfigurationErrorsException() { // arrange // all expected values that we gonna mock into further const int expectedPeriod = 5; string expectedDirectory = Environment.CurrentDirectory; var mockedConfigManager = A.Fake <IConfigurationManager>(); // mock System.Configuration.Manager #region mock fake values for AppSettings elements of app.config of System.Configuration.Manager var fakeAppSettings = new NameValueCollection { { "UpdatesMonitoringPeriodSeconds", expectedPeriod.ToString() }, { "MonitoringDirectoryPath", expectedDirectory } }; mockedConfigManager.CallsTo(cm => cm.AppSettings).Returns(fakeAppSettings); #endregion #region mock TradeDataLoadersSection of app.config of System.Configuration.Manager TradeDataLoadersSection appConfigSection = null; // INCORRECT VALUE mockedConfigManager.CallsTo(cm => cm.GetSection("TradeDataLoadersSection")).Returns(appConfigSection); #endregion // act TradeDataMonitorAppSettings.Load(mockedConfigManager); // call Load with all the mocked stuff }
public void AllProperties_LoadedSettingsCorrect_NoException() { // arrange // all expected values that we gonna mock into further const int expectedPeriod = 5; string expectedDirectory = Environment.CurrentDirectory; var expectedLoaders = new List <ITradeDataLoader>() { new CsvFileTradeDataLoader() }; var mockedConfigManager = A.Fake <IConfigurationManager>(); // mock System.Configuration.Manager #region mock fake values for AppSettings elements of app.config of System.Configuration.Manager var fakeAppSettings = new NameValueCollection { { "UpdatesMonitoringPeriodSeconds", expectedPeriod.ToString() }, { "MonitoringDirectoryPath", expectedDirectory } }; mockedConfigManager.CallsTo(cm => cm.AppSettings).Returns(fakeAppSettings); #endregion #region mock TradeDataLoadersSection of app.config of System.Configuration.Manager var appConfigSection = A.Fake <TradeDataLoadersSection>(); var fakeTradeDataLoaderElementCollection = new TradeDataLoaderElementCollection(); var tradeDataLoaderElement = new TradeDataLoaderElement { Assembly = "TradeDataMonitoring.dll", Class = "TradeDataMonitoring.TradeDataLoaders.CsvFileTradeDataLoader" }; fakeTradeDataLoaderElementCollection.Add(tradeDataLoaderElement); appConfigSection.CallsTo(section => section.TradeDataLoaders).Returns(fakeTradeDataLoaderElementCollection); mockedConfigManager.CallsTo(cm => cm.GetSection("TradeDataLoadersSection")).Returns(appConfigSection); #endregion // call Load with all the mocked stuff TradeDataMonitorAppSettings.Load(mockedConfigManager); // act var tryReadPeriod = TradeDataMonitorAppSettings.MonitoringPeriodSeconds; var tryReadDirectory = TradeDataMonitorAppSettings.MonitoringDirectoryPath; var tryReadLoaders = TradeDataMonitorAppSettings.TradeDataLoaders; // assert Assert.AreEqual(expectedPeriod, tryReadPeriod); Assert.AreEqual(expectedDirectory, tryReadDirectory); Assert.IsTrue(expectedLoaders.Count == tryReadLoaders.Count && expectedLoaders.First().GetType() == tryReadLoaders.First().GetType()); }