private static NavigatorTestingDetails <TNavigator> GetNavigatorToTest <TNavigator>(
            UrlPathDetails initialUrl,
            Assert assert,
            Func <IDispatcher, TNavigator> navigatorGenerator)
            where TNavigator : Navigator
        {
            if (initialUrl == null)
            {
                throw new ArgumentNullException("initialUrl");
            }
            if (assert == null)
            {
                throw new ArgumentNullException("assert");
            }
            if (navigatorGenerator == null)
            {
                throw new ArgumentNullException("navigatorGenerator");
            }

            var dispatcher     = new AppDispatcher();
            var historyHandler = new MockHistoryHandler(initialUrl: new UrlDetails(NonNullList <NonBlankTrimmedString> .Empty, Optional <QueryString> .Missing));
            var navigator      = navigatorGenerator(dispatcher);

            RouteCombiner.StartListening(historyHandler, navigator.Routes, dispatcher);

            var navigatorTestingDetails = new NavigatorTestingDetails <TNavigator>(navigator, historyHandler, dispatcher, assert);

            historyHandler.RaiseNavigateToForCurrentLocation();
            return(navigatorTestingDetails);
        }
 public void NavigateTo(UrlPathDetails url)
 {
     if (url == null)
     {
         throw new ArgumentNullException("url");
     }
     _historyHandler.NavigateTo(url.ToUrlDetails(Optional <QueryString> .Missing));
 }
예제 #3
0
        public static void RouteMatched(this Assert assert, RouteBuilder routeInfo, UrlPathDetails url)
        {
            var routeMatched = false;
            var route        = routeInfo.ToRoute(() => routeMatched = true);

            route.ExecuteCallbackIfUrlMatches(url);
            assert.Ok(routeMatched);
        }
예제 #4
0
        public static void RouteNotMatched <TValues>(
            this Assert assert,
            RouteBuilder.IBuildRoutesWithVariablesToMatch <TValues> routeInfo,
            UrlPathDetails url)
        {
            var routeWasMatched = false;
            var route           = routeInfo.ToRoute(extractedValue => routeWasMatched = true);

            route.ExecuteCallbackIfUrlMatches(url);
            assert.NotOk(routeWasMatched);
        }
예제 #5
0
        public static void RouteMatched <TValues>(
            this Assert assert,
            RouteBuilder.IBuildRoutesWithVariablesToMatch <TValues> routeInfo,
            UrlPathDetails url,
            TValues expectedValue,
            ResultComparer <TValues> comparer)
        {
            var routeMatched = false;
            var route        = routeInfo.ToRoute(extractedValue => routeMatched = comparer(extractedValue, expectedValue));

            route.ExecuteCallbackIfUrlMatches(url);
            assert.Ok(routeMatched);
        }
예제 #6
0
        private Link GetLink(string text, UrlPathDetails url, Optional <ClassName> className = new Optional <ClassName>())
        {
            if (string.IsNullOrWhiteSpace(text))
            {
                throw new ArgumentException("Null/blank text specified");
            }
            if (url == null)
            {
                throw new ArgumentNullException("url");
            }

            return(new Link(
                       url: url.ToUrlDetails(Optional <QueryString> .Missing),
                       text: new NonBlankTrimmedString(text),
                       caseSensitiveUrlMatching: false,
                       name: Optional <NonBlankTrimmedString> .Missing,
                       target: Optional <NonBlankTrimmedString> .Missing,
                       className: className,
                       ancestorClassName: new ClassName("ancestor"),
                       selectedClassName: new ClassName("selected")
                       ));
        }
예제 #7
0
 public InvalidRoute(UrlPathDetails url)
 {
     Url = Url;
 }