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); } }
private void DoTestCancelMinutia() { using (Fake.CreateScope()) { // PREPARE: m_Monitor.Reset(); // Copy the minutae before the operation IEnumerable <MinutiaRecord> minutae = m_ViewModel.Minutae.ToArray(); // Record the input minutia type before the operation MinutiaType inputType = m_ViewModel.InputMinutiaType; // EXECUTE: m_IViewModel.EscapeAction(); // ASSERT: Assert.AreEqual(CAPTURE_NO_TEMPLATE, m_ViewModel.Capture); Assert.AreEqual(inputType, m_ViewModel.InputMinutiaType); Assert.AreEqual(m_ViewModel.Minutae.Count() > 0, m_IViewModel.IsSaveTemplatePermitted); // Assert that the user is prompted to add a minutia IEnumerable <UserActionRequiredEventArgs> userActionEvents = m_Monitor.GetEventResponses <UserActionRequiredEventArgs>("UserActionRequired"); Assert.AreEqual(1, userActionEvents.Count()); Assert.AreEqual(INPUT_MINUTIA_PROMPT, userActionEvents.ElementAt(0).PromptText); Assert.AreEqual(0, m_Monitor.GetEventResponses <PropertyChangedEventArgs>("PropertyChanged").Count()); // Assert previous minuae are unchanged (note Equals has been overriden) Assert.AreEqual(minutae.Count() - 1, m_ViewModel.Minutae.Count()); CollectionAssert.AreEqual( minutae.Take(minutae.Count() - 1).ToArray(), m_ViewModel.Minutae.ToArray()); // Assert IDispatcherHelper interaction AssertNoCallsToDispatcherHelper(); } }