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_Call_View() { // Given var view = Substitute.For <IView>(); ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view); // When await sut.PushPage <NavigableViewModelMock>(); // Then await view.Received().PushPage(Arg.Any <NavigableViewModelMock>(), Arg.Any <string>(), Arg.Any <bool>(), Arg.Any <bool>()); }
public async Task Should_Not_Call_When_Navigated_From() { // Given var viewModel = Substitute.For <INavigable>(); var navigationParameter = Substitute.For <INavigationParameter>(); ParameterViewStackService sut = new ParameterViewStackServiceFixture(); // When await sut.PushModal(viewModel, navigationParameter); // Then await viewModel.DidNotReceive().WhenNavigatedFrom(navigationParameter); }
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_Call_When_Navigated_To() { // Given var viewModel = Substitute.For <INavigable>(); var navigationParameter = Substitute.For <INavigationParameter>(); ParameterViewStackService sut = new ParameterViewStackServiceFixture(); // When await sut.PushPage(viewModel, navigationParameter); // Then await viewModel.Received().WhenNavigatedTo(navigationParameter); }
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); }
public async Task Should_Throw_If_View_Model_Null() { // Given ParameterViewStackService sut = new ParameterViewStackServiceFixture(); // When var result = await Record.ExceptionAsync(async() => await sut.PushPage <NullViewModelMock>()) .ConfigureAwait(false); // Then result.Should().BeOfType <ArgumentNullException>().Which.ParamName.Should().Be("viewModel"); }
public async Task Should_Call_Destroy() { // Given var viewModel = Substitute.For <IEverything>(); var view = Substitute.For <IView>(); ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view).WithModal(viewModel); // When await sut.PopModal(); // Then viewModel.Received(1).Destroy(); }
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(string contract, bool withNavigation) { // Given var view = Substitute.For <IView>(); var navigationParameter = Substitute.For <INavigationParameter>(); ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view); // When await sut.PushModal <NavigableViewModelMock>(navigationParameter, contract, withNavigation); // Then await view.Received().PushModal(Arg.Any <NavigableViewModelMock>(), contract, withNavigation); }
public async Task Should_Throw_If_View_Model_Null() { // Given var navigationParameter = Substitute.For <INavigationParameter>(); ParameterViewStackService sut = new ParameterViewStackServiceFixture(); // When var result = await Record.ExceptionAsync(async() => await sut.PushModal <NullViewModelMock>(navigationParameter)) .ConfigureAwait(false); // Then result.Should().BeOfType <ArgumentNullException>().Which.ParamName.Should().Be("navigableModal"); }
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); // When await sut.PushModal(viewModel, navigationParameter); // Then view.Received().PushModal(viewModel, Arg.Any <string>()); }
public async Task Should_Throw_If_Parameter_Null() { // Given ParameterViewStackService sut = new ParameterViewStackServiceFixture(); // When var result = await Should .ThrowAsync <ArgumentNullException>(async() => await sut.PushModal <NavigableViewModelMock>(null)) .ConfigureAwait(false); // Then result.ParamName.ShouldBe("parameter"); }
public async Task Should_Call_View(string contract, bool reset, bool animate) { // Given var viewModel = Substitute.For <INavigable>(); var view = Substitute.For <IView>(); var navigationParameter = Substitute.For <INavigationParameter>(); ParameterViewStackService sut = new ParameterViewStackServiceFixture().WithView(view); // When await sut.PushPage(viewModel, navigationParameter, contract, reset, animate); // Then await view.Received().PushPage(viewModel, contract, reset, animate); }
public async Task Should_Throw_If_Parameter_Null() { // Given var viewModel = Substitute.For <INavigable>(); ParameterViewStackService sut = new ParameterViewStackServiceFixture(); // When var result = await Record.ExceptionAsync(async() => await sut.PushPage(viewModel, (INavigationParameter)null)) .ConfigureAwait(false); // Then result.Should().BeOfType <ArgumentNullException>().Which.ParamName.Should().Be("parameter"); }
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_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(null, navigationParameter)) .ConfigureAwait(false); // Then result.ParamName.ShouldBe("navigableViewModel"); }
public async Task Should_Call_ViewModel_Factory(string?contract) { // 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.PushModal <NavigableViewModelMock>(navigationParameter, contract); // Then factory.Received().Create <NavigableViewModelMock>(contract); }
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(); }
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); }
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>()); }); }
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(); }); }