private Guid DoTestUpdateSettings() { using (Fake.CreateScope()) { // PREPARE: // Indicate that settings are updated A.CallTo(() => m_WindowService.ShowDialog(m_SettingsViewModel)).Returns(true); A.CallTo(() => m_SettingsViewModel.Result).Returns(ViewModelStatus.Complete); // Indicate that the settings are valid A.CallTo(() => m_SettingsManager.ValidateCurrentSettings()).Returns(true); A.CallTo(() => m_SettingsManager.GetCurrentSetting(Setting.ApiKey)).Returns(""); A.CallTo(() => m_SettingsManager.GetCurrentSetting(Setting.RootUrl)).Returns(""); // Return a GUID for the subsequent initialisation operation Guid identifier = Guid.NewGuid(); A.CallTo(() => m_DataController.BeginInitialise(A <DataControllerConfig> ._)).Returns(identifier); // EXECUTE: // Open the settings dialog to update settings m_ViewModel.ToggleSettingsCommand.Execute(null); // Assert public state of view model Assert.AreEqual(Activity.Transitioning, m_ViewModel.CurrentActivity); Assert.IsFalse(m_ViewModel.IsTemplating); Assert.IsNull(m_ViewModel.Exception); Assert.AreEqual(INITIALISING_PROMPT_TEXT, m_ViewModel.PromptText); // Assert IWindowService interaction A.CallTo(() => m_WindowService.ShowDialog(m_SettingsViewModel)) .MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => m_WindowService.Show(m_SettingsViewModel)) .MustNotHaveHappened(); // Assert ISettingsViewModel interaction A.CallTo(() => m_SettingsViewModel.Refresh()).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => m_SettingsViewModel.Result).MustHaveHappened(Repeated.Exactly.Once); // Assert IDataController interaction A.CallTo(() => m_DataController.BeginInitialise(A <DataControllerConfig> ._)) .MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => m_DataController.BeginGetCapture(A <ScannerType> ._)) .MustNotHaveHappened(); A.CallTo(() => m_DataController.AbortRequest(A <Guid> ._)) .MustNotHaveHappened(); A.CallTo(() => m_DataController.BeginSaveTemplate(A <long> ._, A <byte[]> ._)) .MustNotHaveHappened(); // Assert that ViewModel made no calls to other fakes AssertNoCallsToTemplatingViewModel(); AssertNoCallsToDispatcherHelper(); return(identifier); } }
private void OpenSettings() { Log.Debug("OpenSettings() called."); // Refresh the view model with latest settings // TODO: Create a new SettingsViewModel (using a factory) rather than refresh m_SettingsViewModel.Refresh(); // Present opportunity to change settings m_WindowService.ShowDialog(m_SettingsViewModel); if (m_SettingsViewModel.Result == ViewModelStatus.Complete) { Log.Debug("Settings were updated, re-initialising..."); // Settings were updated, we must re-initialise the DataController lock (m_StateLock) { m_StateMgr.TransitionTo(typeof(Initialising)); } } else { Log.Debug("Settings were not updated"); } }