using Moq; using WpfViewModelFirst.Part1; using WpfViewModelFirst.Part2; namespace WpfViewModelFirst.Tests { public class MainWindowViewModelTests { [Fact] public void Part1WillSetPart1ViewModelToCurrentViewModel() { Part1ViewModel part1ViewModel = new(() => _ = true); Mock mockViewModelFactory = new Mock(); mockViewModelFactory.Setup(vmf => vmf.GetPart1ViewModel(It.IsAny())) .Returns(part1ViewModel); MainWindowViewModel main = new(mockViewModelFactory.Object); main.Part1(null); Assert.Equal(part1ViewModel, main.CurrentViewModel); } [Fact] public void Part1CallbackIsSuccessfull() { Mock mockViewModelFactory = new Mock(); mockViewModelFactory.Setup(vmf => vmf.GetPart1ViewModel(It.IsAny())) .Returns(() => new Part1ViewModel(() => Task.Delay(0))) .Callback(c => c.Invoke()); mockViewModelFactory.Setup(vmf => vmf.GetPart2ViewModel()) .Returns(() => new Part2ViewModel()); MainWindowViewModel main = new(mockViewModelFactory.Object); main.Part1(null); Assert.IsType(main.CurrentViewModel); } } }