private Guid DoTestBeginInitialise()
        {
            using (Fake.CreateScope())
            {
                // PREPARE:
                // 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 valid identifier for asynchronous connection operation
                Guid identifier = Guid.NewGuid();
                A.CallTo(() => m_DataController.BeginInitialise(A <DataControllerConfig> ._)).Returns(identifier);

                // EXECUTE:
                // First start the initialisation
                ((IMainWindowViewModel)m_ViewModel).BeginInitialise();

                // ASSERT:
                // Assert public state of ViewModel
                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 IDataController interaction
                // TODO: Check DataControllerConfig value
                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 ITemplatingViewModel interaction
                A.CallTo(() => m_TemplatingViewModel.BeginInitialise()).MustHaveHappened(Repeated.Exactly.Once);
                A.CallTo(() => m_TemplatingViewModel.BeginTemplating(A <CaptureInfo> ._)).MustNotHaveHappened();
                A.CallTo(() => m_TemplatingViewModel.EscapeAction()).MustNotHaveHappened();
                A.CallTo(() => m_TemplatingViewModel.FinaliseTemplate()).MustNotHaveHappened();
                A.CallTo(() => m_TemplatingViewModel.QuitTemplating()).MustNotHaveHappened();
                A.CallTo(m_TemplatingViewModel)
                .Where(x => x.Method.Name.Equals("set_InputMinutiaType"))
                .WhenArgumentsMatch(x => x.Get <MinutiaType>(0).Equals(DEFAULT_MINUTIA_TYPE))
                .MustNotHaveHappened();

                // Assert ISettingsValidator interaction
                AssertSettingsChecked();

                // Assert that view model made no calls to other fake objects
                AssertNoCallsToSettingsViewModel();
                AssertNoCallsToWindowService();
                AssertNoCallsToDispatcherHelper();

                // Return the identifier so that the operation can be completed later
                return(identifier);
            }
        }