public void ViewModel_VerifyPropertyChangeErrorTestCase() { string text = "error"; GivenInitViewModel() .AndAsync("navigate page", async viewModel => await NavigateAndWaitLoadPageAsync <SetPropertyPage, SetPropertyViewModel>(viewModel)) .And("Subscribe to event", page => { var viewModel = page.DataContext.HasTypeAndGetValue <SetPropertyViewModel>(); viewModel.VerifyPropertyChange += (sender, e) => e.AddError(new MvvmFrameErrorDetail { Code = "InvalidData" }); return(page); }) .When("Change text", page => { page.tbViewModel.Text = text; return(page.DataContext.HasTypeAndGetValue <SetPropertyViewModel>()); }) .Then("Check result", viewModel => { Assert.IsNull(viewModel.TextTest, "text must be null"); Assert.AreEqual(1, viewModel.OnErrorsCallCounter, $"method '{nameof(SetPropertyModel.OnErrors)}' should be called"); Assert.IsNotNull(viewModel.Details, "collection should not be empty"); Assert.AreEqual(1, viewModel.Details.Count, "there must be one item in the collection"); MvvmFrameErrorDetail detail = viewModel.Details[0]; Assert.AreEqual("InvalidData", detail.Code, "the error code must be different"); }) .RunWindow(Timeouts.Second.Five); }
/// <summary> /// Remove error /// </summary> /// <param name="detail"></param> public void RemoveError(MvvmFrameErrorDetail detail) => _errors.Remove(detail);
/// <summary> /// Add error /// </summary> /// <param name="detail"></param> public void AddError(MvvmFrameErrorDetail detail) => _errors.Add(detail);