예제 #1
0
        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);
        }
예제 #2
0
 /// <summary>
 /// Remove error
 /// </summary>
 /// <param name="detail"></param>
 public void RemoveError(MvvmFrameErrorDetail detail) => _errors.Remove(detail);
예제 #3
0
 /// <summary>
 /// Add error
 /// </summary>
 /// <param name="detail"></param>
 public void AddError(MvvmFrameErrorDetail detail) => _errors.Add(detail);