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);
            }
        }
Exemplo n.º 2
0
        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();
            }
        }