public void WhenSummaryRequestOperationisCompleted_ThenUpdatesCurrentSummaryAndStatusChangesToNormal() { var questionnaireRepositoryMock = new Mock<IQuestionnaireRepository>(); Action<IOperationResult<QuestionnaireTemplateSummary>> summaryCallback = null; var summary = new QuestionnaireTemplateSummary(); questionnaireRepositoryMock .Setup(qs => qs.GetQuestionnaireTemplateSummaryAsync(It.IsAny<QuestionnaireTemplate>(), It.IsAny<Action<IOperationResult<QuestionnaireTemplateSummary>>>())) .Callback<QuestionnaireTemplate, Action<IOperationResult<QuestionnaireTemplateSummary>>>((qt, ac) => summaryCallback = ac); var viewModel = new QuestionnaireTemplateSummaryViewModel(questionnaireRepositoryMock.Object); viewModel.CurrentlySelectedQuestionnaireTemplate = new QuestionnaireTemplate(); var summaryResult = new Mock<IOperationResult<QuestionnaireTemplateSummary>>(); summaryResult.SetupGet(r => r.Result).Returns(summary); var tracker = new PropertyChangeTracker(viewModel); summaryCallback(summaryResult.Object); Assert.AreEqual("Normal", viewModel.CurrentState); Assert.AreSame(summary, viewModel.QuestionnaireTemplateSummary); CollectionAssert.Contains(tracker.ChangedProperties, "CurrentState"); CollectionAssert.Contains(tracker.ChangedProperties, "QuestionnaireTemplateSummary"); }
public void WhenViewModelIsCreated_ThenItHasNoSummaryOrSelectedTemplate() { var questionnaireRepositoryMock = new Mock<IQuestionnaireRepository>(); var viewModel = new QuestionnaireTemplateSummaryViewModel(questionnaireRepositoryMock.Object); Assert.IsNull(viewModel.CurrentlySelectedQuestionnaireTemplate); Assert.IsNull(viewModel.QuestionnaireTemplateSummary); }
public void WhenSelectedTemplateIsSetToNull_ThenSummaryIsCleared() { var questionnaireRepositoryMock = new Mock<IQuestionnaireRepository>(MockBehavior.Strict); var viewModel = new QuestionnaireTemplateSummaryViewModel(questionnaireRepositoryMock.Object); viewModel.CurrentlySelectedQuestionnaireTemplate = null; Assert.IsNull(viewModel.QuestionnaireTemplateSummary); Assert.AreEqual("Normal", viewModel.CurrentState); questionnaireRepositoryMock.VerifyAll(); }
public void WhenSelectedTemplateIsSetToNonNull_ThenSummaryIsRequestedAndStatusChangesToUpdatingSummary() { var questionnaireRepositoryMock = new Mock<IQuestionnaireRepository>(); var requestedSummary = false; questionnaireRepositoryMock .Setup(qs => qs.GetQuestionnaireTemplateSummaryAsync(It.IsAny<QuestionnaireTemplate>(), It.IsAny<Action<IOperationResult<QuestionnaireTemplateSummary>>>())) .Callback<QuestionnaireTemplate, Action<IOperationResult<QuestionnaireTemplateSummary>>>((qt, ac) => { requestedSummary = true; }); var viewModel = new QuestionnaireTemplateSummaryViewModel(questionnaireRepositoryMock.Object); var tracker = new PropertyChangeTracker(viewModel); viewModel.CurrentlySelectedQuestionnaireTemplate = new QuestionnaireTemplate(); Assert.IsTrue(requestedSummary); Assert.IsNull(viewModel.QuestionnaireTemplateSummary); Assert.AreEqual("RequestingSummary", viewModel.CurrentState); CollectionAssert.Contains(tracker.ChangedProperties, "CurrentState"); }
public void WhenCurrentlySelectedTemplateChangesToNullBeforePreviousSummaryRequestOperationisCompleted_ThenStatusIsSetToNormalAndOriginalRequestOperationCompletionDoesNotCauseAnUpdate() { var questionnaireRepositoryMock = new Mock<IQuestionnaireRepository>(); Action<IOperationResult<QuestionnaireTemplateSummary>> summaryCallback = null; var summary = new QuestionnaireTemplateSummary(); questionnaireRepositoryMock .Setup(qs => qs.GetQuestionnaireTemplateSummaryAsync(It.IsAny<QuestionnaireTemplate>(), It.IsAny<Action<IOperationResult<QuestionnaireTemplateSummary>>>())) .Callback<QuestionnaireTemplate, Action<IOperationResult<QuestionnaireTemplateSummary>>>((qt, ac) => summaryCallback = ac); var viewModel = new QuestionnaireTemplateSummaryViewModel(questionnaireRepositoryMock.Object); viewModel.CurrentlySelectedQuestionnaireTemplate = new QuestionnaireTemplate(); var originalSummaryCallback = summaryCallback; var summaryResult = new Mock<IOperationResult<QuestionnaireTemplateSummary>>(); summaryResult.SetupGet(r => r.Result).Returns(summary); viewModel.CurrentlySelectedQuestionnaireTemplate = null; Assert.AreEqual("Normal", viewModel.CurrentState); Assert.IsNull(viewModel.QuestionnaireTemplateSummary); originalSummaryCallback(summaryResult.Object); Assert.AreEqual("Normal", viewModel.CurrentState); Assert.IsNull(viewModel.QuestionnaireTemplateSummary); }