Example #1
0
            public async Task Should_Throw_If_View_Model_Null()
            {
                // Given
                var navigationParameter       = Substitute.For <INavigationParameter>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture();

                // When
                var result =
                    await Should
                    .ThrowAsync <ArgumentNullException>(async() => await sut.PushPage <NullViewModelMock>(navigationParameter))
                    .ConfigureAwait(false);

                // Then
                result.ParamName.ShouldBe("navigableViewModel");
            }
            public async Task Should_Call_Destroy()
            {
                // Given
                var viewModel1 = Substitute.For <IEverything>();
                var viewModel2 = Substitute.For <IEverything>();
                var viewModel3 = Substitute.For <IEverything>();
                var view       = Substitute.For <IView>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view);
                await sut.PushPage(viewModel1);

                await sut.PushPage(viewModel2);

                await sut.PushPage(viewModel3);

                // When
                await sut.PopToRootPage();

                // Then
                Received.InOrder(() =>
                {
                    viewModel3.Destroy();
                    viewModel2.Destroy();
                });
            }
            public async Task Should_Call_ViewModel_Factory()
            {
                // Given
                var factory = Substitute.For <IViewModelFactory>();

                factory.Create <NavigableViewModelMock>(Arg.Any <string?>()).Returns(new NavigableViewModelMock());
                var navigationParameter       = Substitute.For <INavigationParameter>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithFactory(factory);

                // When
                await sut.PushPage <NavigableViewModelMock>(navigationParameter);

                // Then
                factory.Received().Create <NavigableViewModelMock>();
            }
            public async Task Should_Throw_If_Parameter_Null()
            {
                // Given
                var viewModel = Substitute.For <INavigable>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture();

                // When
                var result =
                    await Should
                    .ThrowAsync <ArgumentNullException>(async() => await sut.PushPage(viewModel, (INavigationParameter)null))
                    .ConfigureAwait(false);

                // Then
                result.ParamName.ShouldBe("parameter");
            }
            public async Task Should_Call_In_Order()
            {
                // Given
                var view                      = Substitute.For <IView>();
                var viewModel                 = Substitute.For <INavigable>();
                var navigationParameter       = Substitute.For <INavigationParameter>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view);

                // When
                await sut.PushPage(viewModel, navigationParameter);

                // Then
                Received.InOrder(() =>
                {
                    viewModel.WhenNavigatingTo(Arg.Any <INavigationParameter>());
                    view.PushPage(Arg.Any <IViewModel>(), null, Arg.Any <bool>(), Arg.Any <bool>());
                    viewModel.WhenNavigatedTo(Arg.Any <INavigationParameter>());
                });
            }