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);
            }
        }
示例#2
0
        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");
            }
        }