public void ReleaseViewModel_ShouldReturnCorrectValue(
            [Frozen] Mock <IViewModelFactory> innerFactory,
            AddMvvmVisitorsViewModelFactory sut,
            IViewModel expected)
        {
            //arrange

            //act
            sut.ReleaseViewModel(expected);

            //assert
            innerFactory.Verify(f => f.ReleaseViewModel(expected));
        }
        public void ResolveViewModel_ShouldReturnCorrectValue(
            [Frozen] Mock <IViewModelFactory> innerFactory,
            AddMvvmVisitorsViewModelFactory sut,
            IViewModel expected,
            object request)
        {
            //arrange
            innerFactory.Setup(f => f.ResolveViewModel(request)).Returns(expected);

            //act
            var actual = sut.ResolveViewModel(request);

            //assert
            actual.Should().Be(expected);
        }
        public void ResolveViewModel_ShouldAddOvmVisitors(
            [Frozen] Mock <IViewModelFactory> innerFactory,
            [Frozen] IEnumerable <IObservableViewModelVisitor> visitors,
            AddMvvmVisitorsViewModelFactory sut,
            Mock <IViewModel> viewModel,
            Mock <IObservableViewModelBuilderProvider> ovmBuilderProvider,
            object request)
        {
            //arrange
            innerFactory.Setup(f => f.ResolveViewModel(request)).Returns(() => viewModel.Object);
            viewModel.Setup(vm => vm.OvmBuilderProvider).Returns(() => ovmBuilderProvider.Object);
            foreach (var ovmVisitor in visitors)
            {
                var visitor = ovmVisitor;
                ovmBuilderProvider.Setup(provider => provider.AddVisitor(visitor))
                .Verifiable();
            }

            //act
            sut.ResolveViewModel(request);

            //assert
            ovmBuilderProvider.Verify();
        }
 public void Sut_IsViewModelFactory(
     AddMvvmVisitorsViewModelFactory sut)
 {
     sut.Should().BeAssignableTo <IViewModelFactory>();
 }