public void Model_VerifyPropertyChangeErrorTestCase() { string text = "error"; GivenInitViewModel() .AndAsync("navigate page", async viewModel => await NavigateAndWaitLoadPageAsync <SetPropertyPage, SetPropertyViewModel>(viewModel)) .And("Subscribe to event", page => { SetPropertyModel model = page.DataContext.HasTypeAndGetValue <SetPropertyViewModel>().Model; model.VerifyPropertyChange += (sender, e) => e.AddError(new MvvmFrameErrorDetail { Code = "InvalidData" }); return(page); }) .When("Change text", page => { page.tbModel.Text = text; return(page.DataContext.HasTypeAndGetValue <SetPropertyViewModel>().Model); }) .Then("Check result", model => { Assert.IsNull(model.TextTest, "text must be null"); Assert.AreEqual(1, model.OnErrorsCallCounter, $"method '{nameof(SetPropertyModel.OnErrors)}' should be called"); Assert.IsNotNull(model.Details, "collection should not be empty"); Assert.AreEqual(1, model.Details.Count, "there must be one item in the collection"); MvvmFrameErrorDetail detail = model.Details[0]; Assert.AreEqual("InvalidData", detail.Code, "the error code must be different"); }) .RunWindow(Timeouts.Second.Five); }
public void Model_VerifyPropertyChangeDisableTestCase() { string text = "Is model text"; int eventCallCounter = 0; GivenInitViewModel() .AndAsync("navigate page", async viewModel => await NavigateAndWaitLoadPageAsync <SetPropertyPage, SetPropertyViewModel>(viewModel)) .And("Subscribe to event", page => { SetPropertyModel model = page.DataContext.HasTypeAndGetValue <SetPropertyViewModel>().Model; model.VerifyPropertyChange += (sender, e) => eventCallCounter++; return(page); }) .When("Change text", page => { SetPropertyModel model = page.DataContext.HasTypeAndGetValue <SetPropertyViewModel>().Model; model.ModelOptions.UseVerifyPropertyChange = false; page.tbModel.Text = text; return(model); }) .Then("Check result", model => { Assert.AreEqual(text, model.TextTest, "texts must match"); Assert.AreEqual(0, eventCallCounter, $"method '{nameof(SetPropertyModel.VerifyPropertyChange)}' not should be called"); }) .RunWindow(Timeouts.Second.Five); }