Example #1
0
        public async Task ResolveNamedWithArguments()
        {
            var containerMock = new Mock <IMvvmContainer>();
            var viewName      = "FakeView";
            var view          = new ContentPage();
            var expectedName  = "pippo";

            containerMock.Setup(m => m.ResolveNamed(viewName, It.IsAny <TypedParameter>()))
            .Returns(view);

            var fakeViewModel = new Mock <FakeViewModelWithArgs>(expectedName);

            containerMock.Setup(m => m.Resolve <FakeViewModelWithArgs>())
            .Returns(fakeViewModel.Object);
            var navigationMock = new Mock <INavigation>();

            var impl = new ViewModelNavigationImpl(containerMock.Object);

            navigationMock.Setup(m => m.PushAsync(view)).Returns(Task.FromResult(0));

            //---------------

            await impl.Navigate <FakeViewModelWithArgs>(navigationMock.Object,
                                                        new NamedParameter("name", expectedName));

            //---------------

            navigationMock.Verify(m => m.PushAsync(view), Times.Once);
            containerMock.Verify(m => m.ResolveNamed(viewName, It.Is <IParameter[]>(parameters =>
                                                                                    parameters.Count(p => ((TypedParameter)p).Value == fakeViewModel.Object) == 1)), Times.Once);

            fakeViewModel.Verify(m => m.Initialize(It.Is <IParameter[]>(parameters =>
                                                                        parameters.Count(p => ((NamedParameter)p).Value == expectedName) == 1)));
        }
Example #2
0
        public async Task ResolveNamedNotFound()
        {
            var containerMock = new Mock <IMvvmContainer>();
            var viewName      = "FakeView";
            var view          = new ContentPage();

            containerMock.Setup(m => m.ResolveNamed(viewName, It.IsAny <TypedParameter>()))
            .Returns(view);

            var navigationMock = new Mock <INavigation>();

            var impl = new ViewModelNavigationImpl(containerMock.Object);

            navigationMock.Setup(m => m.PushAsync(view)).Returns(Task.FromResult(0));
            await ThrowsAsync <NullReferenceException>(() =>
                                                       impl.Navigate <FakeViewModel>(navigationMock.Object));
        }
Example #3
0
        public async Task ResolveNamed()
        {
            var containerMock = new Mock <IMvvmContainer>();
            var viewName      = "FakeView";
            var view          = new ContentPage();

            containerMock.Setup(m => m.ResolveNamed(viewName, It.IsAny <TypedParameter>()))
            .Returns(view);
            var fakeViewModel = new FakeViewModel();

            containerMock.Setup(m => m.Resolve <FakeViewModel>())
            .Returns(fakeViewModel);
            var navigationMock = new Mock <INavigation>();

            var impl = new ViewModelNavigationImpl(containerMock.Object);

            navigationMock.Setup(m => m.PushAsync(view)).Returns(Task.FromResult(0));

            await impl.Navigate <FakeViewModel>(navigationMock.Object);

            navigationMock.Verify(m => m.PushAsync(view), Times.Once);
            containerMock.Verify(m => m.ResolveNamed(viewName, It.Is <IParameter[]>(parameters =>
                                                                                    parameters.Count(p => ((TypedParameter)p).Value == fakeViewModel) == 1)), Times.Once);
        }