diff --git a/WpfViewModelFirst.Tests/MainWindowViewModelTests.cs b/WpfViewModelFirst.Tests/MainWindowViewModelTests.cs index 9acbe67..8d88df0 100644 --- a/WpfViewModelFirst.Tests/MainWindowViewModelTests.cs +++ b/WpfViewModelFirst.Tests/MainWindowViewModelTests.cs @@ -42,6 +42,35 @@ namespace WpfViewModelFirst.Tests // Assert.Single(main.Strings); //} [Fact] + public async Task Part1CallBackExample() + { + Mock mockViewModelFactory = new(); + mockViewModelFactory.Setup(vmf => vmf.GetPart2ViewModel()) + .Returns(() => new Part2ViewModel()); + MainWindowViewModel main = new(mockViewModelFactory.Object); + TaskCompletionSource taskCompletionSource = new(); + main.ItHappened += () => taskCompletionSource.SetResult(true); + mockViewModelFactory.Setup(vmf => vmf.GetPart1ViewModel(It.IsAny>())) + .Callback>(c => + { + Task.Run(() => + { + DispatcherFrame frame = new(); + frame.Dispatcher.Invoke( + DispatcherPriority.Normal, () => + { + c.Invoke(); + frame.Continue = true; + }); + Dispatcher.PushFrame(frame); + }); + }); + main.Part1(null); + await taskCompletionSource.Task.WaitAsync(CancellationToken.None); + Assert.IsType(main.CurrentViewModel); + Assert.Single(main.Strings); + } + [Fact] public async Task Part1ActionWillSetCurrentViewModel() { Mock mockViewModelFactory = new();