public async Task Should_Call_In_Order()
            {
                // Given
                var viewModel1          = Substitute.For <IEverything>();
                var viewModel2          = Substitute.For <IEverything>();
                var subject             = new Subject <IViewModel>();
                var navigationParameter = Substitute.For <INavigationParameter>();
                var view = Substitute.For <IView>();

                view.When(x => x.PopPage())
                .Do(_ => subject.OnNext(viewModel2));
                view
                .PagePopped
                .Returns(subject.AsObservable());
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view);
                await sut.PushPage(viewModel1);

                await sut.PushPage(viewModel2);

                // When
                await sut.PopPage(navigationParameter);

                // Then
                Received.InOrder(() =>
                {
                    view.PopPage(Arg.Any <bool>());
                    viewModel2.WhenNavigatedFrom(Arg.Any <INavigationParameter>());
                    viewModel2.Destroy();
                });
            }
            public async Task Should_Throw_If_Parameter_Null()
            {
                // Given
                ParameterViewStackService sut = new ParameterViewStackServiceFixture();

                // When
                var result =
                    await Record.ExceptionAsync(async() => await sut.PopPage(null))
                    .ConfigureAwait(false);

                // Then
                result.Should().BeOfType <ArgumentNullException>().Which.ParamName.Should().Be("parameter");
            }
            public async Task Should_Not_Call_When_Navigating_To()
            {
                // Given
                var viewModel                 = Substitute.For <INavigable>();
                var navigationParameter       = Substitute.For <INavigationParameter>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithPushed(viewModel);

                // When
                await sut.PopPage(navigationParameter);

                // Then
                await viewModel.DidNotReceive().WhenNavigatingTo(navigationParameter);
            }
Exemplo n.º 4
0
            public async Task Should_Call_When_Navigated_From()
            {
                // Given
                var viewModel                 = Substitute.For <INavigable>();
                var navigationParameter       = Substitute.For <INavigationParameter>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithPushed(viewModel);

                // When
                await sut.PopPage(navigationParameter);

                // Then
                viewModel.Received().WhenNavigatedFrom(Arg.Any <INavigationParameter>());
            }
            public async Task Should_Call_View()
            {
                // Given
                var viewModel           = Substitute.For <INavigable>();
                var navigationParameter = Substitute.For <INavigationParameter>();
                var view = Substitute.For <IView>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view).WithPushed(viewModel);

                // When
                await sut.PopPage(navigationParameter);

                // Then
                await view.Received().PopPage(Arg.Any <bool>());
            }
            public async Task Should_Call_Destroy()
            {
                // Given
                var viewModel                 = Substitute.For <IEverything>();
                var navigationParameter       = Substitute.For <INavigationParameter>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(new NavigationViewMock());
                await sut.PushPage(viewModel);

                await sut.PushPage(viewModel);

                // When
                await sut.PopPage(navigationParameter);

                // Then
                viewModel.Received(1).Destroy();
            }
Exemplo n.º 7
0
            public async Task Should_Call_When_Page_Popped()
            {
                // Given
                var viewModel1 = Substitute.For <IDestructibleMock>();
                var viewModel2 = Substitute.For <IDestructibleMock>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(new NavigationViewMock());

                // When
                await sut.PushPage(viewModel1);

                await sut.PushPage(viewModel2);

                await sut.PopPage();

                // Then
                viewModel2.Received(1).Destroy();
            }
            public async Task Should_Not_Call_When_Navigated_To()
            {
                // Given
                var firstViewModel            = Substitute.For <INavigable>();
                var secondViewModel           = Substitute.For <INavigable>();
                var navigationParameter       = Substitute.For <INavigationParameter>();
                ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(new NavigationViewMock());

                // When
                await sut.PushPage(firstViewModel);

                await sut.PushPage(secondViewModel);

                await sut.PopPage(navigationParameter);

                // Then
                await secondViewModel.DidNotReceive().WhenNavigatedTo(navigationParameter);
            }