public async Task NavigationService_StrategyExecuted_beforePush_GoToAsync_Should_HaveTheSameOrder()
        {
            // Arrange
            var strategy = new RecordingStrategy(ServiceLocator.Get <IPageLocator>());
            var service  = new NavigationService(ServiceLocator.Get <INavigation>(), ServiceLocator.Get <IPageLocator>(), beforePushStrategy: strategy);

            var pages = new List <ApplicationPage>
            {
                ApplicationPage.MainMenuPage,
                ApplicationPage.ListViewPage,
                ApplicationPage.LoginPage,
                ApplicationPage.ListViewPage,
            };

            // Act
            await service.GoToAsync(pages);

            // Assert
            strategy.Events.Should().Be(string.Join(string.Empty, pages.Select(p => $"PUSH{p}")));
        }
        public async Task NavigationService_StrategyExecuted_PopPageAndGoToAsync_Should_HaveTheSameOrderWith_Amount()
        {
            // Arrange
            var strategy = new RecordingStrategy(ServiceLocator.Get <IPageLocator>());
            var service  = new NavigationService(ServiceLocator.Get <INavigation>(), ServiceLocator.Get <IPageLocator>(), strategy, strategy);
            await service.GoToAsync(ApplicationPage.SideBar);

            strategy.Reset();

            var pages = new List <ApplicationPage>
            {
                ApplicationPage.MainMenuPage,
                ApplicationPage.ListViewPage,
                ApplicationPage.LoginPage,
                ApplicationPage.ListViewPage,
            };

            // Act
            await service.PopPageAndGoToAsync(2, pages);

            // Assert
            strategy.Events.Should().Be($"POPMainMenuPagePOPSideBar{string.Join(string.Empty, pages.Select(p => $"PUSH{p}"))}");
        }