public void AfterSubmittingQuestionnaire_ThenChangeDataRelatedNotificationsAreFired() { Action<IOperationResult<Questionnaire>> callback = null; Action<IOperationResult> submitCallback = null; var repository = new Mock<IQuestionnaireRepository>(); repository.Setup(r => r.GetQuestionnaireAsync(It.IsAny<Action<IOperationResult<Questionnaire>>>())) .Callback<Action<IOperationResult<Questionnaire>>>(c => callback = c); repository.Setup(r => r.SubmitQuestionnaireAsync(It.IsAny<Questionnaire>(), It.IsAny<Action<IOperationResult>>())) .Callback<Questionnaire, Action<IOperationResult>>( (q, sc) => submitCallback = sc); var viewModel = new QuestionnaireViewModel(repository.Object); callback(CreateQuestionnaireResult()); var tracker = new PropertyChangeTracker(viewModel); viewModel.Questionnaire.Name = "TestName"; viewModel.Questionnaire.Age = 25; AnswerAllQuestions(viewModel); viewModel.Submit(); submitCallback(new Mock<IOperationResult>().Object); callback(CreateQuestionnaireResult()); Assert.IsTrue(tracker.ChangedProperties.Contains("Questionnaire")); }
public void WhenServiceIsDoneSubmitting_ThenStateIsSetToNormal() { Action<IOperationResult<Questionnaire>> callback = null; Action<IOperationResult> submitCallback = null; var repository = new Mock<IQuestionnaireRepository>(); repository.Setup(r => r.GetQuestionnaireAsync(It.IsAny<Action<IOperationResult<Questionnaire>>>())) .Callback<Action<IOperationResult<Questionnaire>>>(c => callback = c); repository.Setup(r => r.SubmitQuestionnaireAsync(It.IsAny<Questionnaire>(), It.IsAny<Action<IOperationResult>>())) .Callback<Questionnaire, Action<IOperationResult>>( (q, sc) => submitCallback = sc); var viewModel = new QuestionnaireViewModel(repository.Object); callback(CreateQuestionnaireResult()); viewModel.Submit(); Assert.AreEqual("Submitting", viewModel.CurrentState); var tracker = new PropertyChangeTracker(viewModel); // Responds as the service would. submitCallback(new Mock<IOperationResult>().Object); callback(CreateQuestionnaireResult()); Assert.AreEqual("Normal", viewModel.CurrentState); CollectionAssert.Contains(tracker.ChangedProperties, "CanSubmit"); }
public void AfterSubmitting_ANewQuestionnaireIsCreated() { QuestionViewModel[] originalQuestions = null; Action<IOperationResult<Questionnaire>> callback = null; Action<IOperationResult> submitCallback = null; var repository = new Mock<IQuestionnaireRepository>(); repository.Setup(r => r.GetQuestionnaireAsync(It.IsAny<Action<IOperationResult<Questionnaire>>>())) .Callback<Action<IOperationResult<Questionnaire>>>(c => callback = c); repository.Setup(r => r.SubmitQuestionnaireAsync(It.IsAny<Questionnaire>(), It.IsAny<Action<IOperationResult>>())) .Callback<Questionnaire, Action<IOperationResult>>( (q, sc) => submitCallback = sc); var viewModel = new QuestionnaireViewModel(repository.Object); callback(CreateQuestionnaireResult()); originalQuestions = viewModel.Questions.ToArray(); viewModel.Questionnaire.Name = "TestName"; viewModel.Questionnaire.Age = 14; AnswerAllQuestions(viewModel); viewModel.Submit(); submitCallback(new Mock<IOperationResult>().Object); callback(CreateQuestionnaireResult()); CollectionAssert.AreNotEquivalent(originalQuestions, viewModel.Questions.ToArray()); }
public void WhenQuestionnaireIsSubmitted_ThenSubmitsToService() { Action<IOperationResult<Questionnaire>> callback = null; var repository = new Mock<IQuestionnaireRepository>(); repository.Setup(r => r.GetQuestionnaireAsync(It.IsAny<Action<IOperationResult<Questionnaire>>>())) .Callback<Action<IOperationResult<Questionnaire>>>(c => callback = c); repository.Setup(r => r.SubmitQuestionnaireAsync(It.IsAny<Questionnaire>(), It.IsAny<Action<IOperationResult>>())) .Verifiable("SubmitQuestionnaireAsync not called"); var viewModel = new QuestionnaireViewModel(repository.Object); callback(CreateQuestionnaireResult()); viewModel.Questionnaire.Name = "Name"; viewModel.Questionnaire.Age = 21; AnswerAllQuestions(viewModel); viewModel.Submit(); repository.Verify(); }