Example #1
0
 public RouteDictionaryFixture()
 {
     this.routes = new RouteDictionary(new FakeNancyModuleWithoutBasePath(), "GET");
     this.path = "/route/path";
     this.condition = () => { return true; };
     this.action = parameters => { return new Response(); };
 }
Example #2
0
        public void CallRedirectWithControllerNameAndNullActionName()
        {
            // Setup
            var values = new RouteDictionary();

            values["One"] = 1;
            values["Two"] = 2;

            // Execute
            var result = Redirect(a_actionName: null, a_controllerName: "Controller", a_values: values);
        }
Example #3
0
        public void Should_set_module_property_when_initialized()
        {
            // Given
            var module = new FakeNancyModuleWithBasePath();

            // When
            var rootBasedRoutes = new RouteDictionary(module, "GET");

            // Then
            rootBasedRoutes.Module.ShouldBeSameAs(module);
        }
Example #4
0
        public void NavigateToActionWithArguments()
        {
            // Setup
            var navigationCore = new NavigationCore(_mvcEngine);

            // Execute
            var routeDictionary = new RouteDictionary
            {
                { "id", 12 }
            };
            navigationCore.Navigate<TestController>("User", routeDictionary);
        }
Example #5
0
        public void NavigateToActionWithArgumentsOverload2()
        {
            // Setup
            var navigationCore = new NavigationCore(_mvcEngine);

            // Execute
            var routeDictionary = new RouteDictionary
            {
                { "username", "jsmunroe" },
                { "password", "password" }
            };
            navigationCore.Navigate<TestController>("User", routeDictionary);
        }
Example #6
0
        public void NavigateToActionWithArguments()
        {
            // Setup
            var navigationCore = new NavigationCore(_mvcEngine);

            // Execute
            var routeDictionary = new RouteDictionary
            {
                { "id", 12 }
            };

            navigationCore.Navigate <TestController>("User", routeDictionary);
        }
Example #7
0
        public void NavigateToActionWithTooFewArguments()
        {
            // Setup
            var navigationCore = new NavigationCore(_mvcEngine);

            // Execute
            var routeDictionary = new RouteDictionary
            {
                { "username", "jsmunroe" },
            };

            navigationCore.Navigate <TestController>("User", routeDictionary);
        }
Example #8
0
        public void NavigateToActionWithArgumentsOverload2()
        {
            // Setup
            var navigationCore = new NavigationCore(_mvcEngine);

            // Execute
            var routeDictionary = new RouteDictionary
            {
                { "username", "jsmunroe" },
                { "password", "password" }
            };

            navigationCore.Navigate <TestController>("User", routeDictionary);
        }
Example #9
0
        public void GivenPath_RootSegmentsContainFirstPartOfPath()
        {
            var routes = new List <RequestBuilder>
            {
                new RequestBuilder(HttpMethod.Get, "/api/foo/bar", null)
            };

            var dictionary = RouteDictionary.From(routes);

            dictionary
            .RootSegments
            .Should()
            .ContainKey("api");
        }
Example #10
0
        public void Should_store_route_combined_with_root_when_route_indexer_is_invoked_and_root_is_not_empty()
        {
            // Given
            var module = new FakeNancyModuleWithBasePath();
            var rootBasedRoutes = new RouteDictionary(module, "GET");
            rootBasedRoutes[this.path] = this.action;
            var moduleRelativePath = string.Concat(module.ModulePath, this.path);

            // When
            var description = rootBasedRoutes.GetRoute(moduleRelativePath);

            // Then
            description.Path.ShouldEqual(moduleRelativePath);
        }
Example #11
0
        /// <summary>
        /// Redirect to another action within this controller.
        /// </summary>
        /// <param name="a_actionName">Action name.</param>
        /// <param name="a_values">Route values.</param>
        /// <returns>Created redirect result.</returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="a_actionName"/> is null.</exception>
        protected RedirectResult Redirect(string a_actionName, RouteDictionary a_values = null)
        {
            #region Argument Validation

            if (a_actionName == null)
                throw new ArgumentNullException(nameof(a_actionName));

            #endregion

            return new RedirectResult
            {
                ActionName = a_actionName,
                Values = a_values ?? new RouteDictionary(),
            };
        }
Example #12
0
        public void HandleRedirectResultWithNullResulte()
        {
            // Setup
            var mvc     = new MvcEngine();
            var handler = new RedirectHandler(_mockNavigator.Object);
            var values  = new RouteDictionary();
            var result  = new RedirectResult
            {
                ControllerName = "Test",
                ActionName     = "Index",
                Values         = new RouteDictionary(),
            };

            // Execute
            handler.Handle(a_mvc: mvc, a_controllerName: "AnotherTest", a_result: null);
        }
Example #13
0
        public void GivenRouteWithParameterAndQueryStringWithoutSeparatorX_RequestBuilderIsReturned()
        {
            var routes = new List <RequestBuilder>
            {
                new RequestBuilder(HttpMethod.Get, "/api/foos/{id}?blah=baz", null),
                new RequestBuilder(HttpMethod.Get, "/api/foos/{id}?blah=qux", null)
            };

            var dictionary = RouteDictionary.From(routes);

            dictionary
            .Match(
                HttpMethod.Get,
                "/api/foos/1234?blah=qux")
            .Should()
            .Be(routes[1]);
        }
Example #14
0
        public void GivenPathForSingleDocumentAtRoot_RootSegmentContainsRequestBuilder()
        {
            var requestBuilder = new RequestBuilder(HttpMethod.Post, "/index.php", null);

            var routes = new List <RequestBuilder>
            {
                requestBuilder
            };

            var dictionary = RouteDictionary.From(routes);

            dictionary
            .RootSegments["index.php"]
            .RequestBuilders[HttpMethod.Post]
            .Should()
            .Be(requestBuilder);
        }
Example #15
0
        public void GivenRouteWithParameterAndQueryString_RequestBuilderIsReturned()
        {
            var requestBuilder = new RequestBuilder(HttpMethod.Get, "/api/foos/{id}/?blah=baz", null);

            var routes = new List <RequestBuilder>
            {
                requestBuilder
            };

            var dictionary = RouteDictionary.From(routes);

            dictionary
            .Match(
                HttpMethod.Get,
                "/api/foos/1234/?blah=baz")
            .Should()
            .Be(requestBuilder);
        }
Example #16
0
        public void HandleRedirectResultWithNullMvcEngine()
        {
            // Setup
            var handler = new RedirectHandler(_mockNavigator.Object);
            var values  = new RouteDictionary();
            var result  = new RedirectResult
            {
                ControllerName = "Test",
                ActionName     = "Index",
                Values         = new RouteDictionary(),
            };

            // Execute
            handler.Handle(a_mvc: null, a_controllerName: "AnotherTest", a_result: result);

            // Assert
            _mockNavigator.Verify(i => i.Navigate("Test", "Index", values), Times.Once);
        }
Example #17
0
        public void GivenNonConfigured_NoResultIsReturned()
        {
            var requestBuilder = new RequestBuilder(HttpMethod.Get, "/api/foo/bar?blah=blurb", null);

            var routes = new List <RequestBuilder>
            {
                requestBuilder
            };

            var dictionary = RouteDictionary.From(routes);

            dictionary
            .Match(
                HttpMethod.Get,
                "/api/baz")
            .Should()
            .BeNull();
        }
Example #18
0
        public void GivenPathWithQueryParameters_ReturnedRequestBuilderMatches()
        {
            var requestBuilder = new RequestBuilder(HttpMethod.Get, "/api/foo/bar?blah=blurb", null);

            var routes = new List <RequestBuilder>
            {
                requestBuilder
            };

            var dictionary = RouteDictionary.From(routes);

            dictionary
            .Match(
                HttpMethod.Get,
                "/api/foo/bar?blah=blurb")
            .Should()
            .Be(requestBuilder);
        }
Example #19
0
        public void ConstructWithDynamicObject()
        {
            // Setup
            dynamic values = new
            {
                Key = "key",
                Value = "value",
            };

            // Execute
            var dict = new RouteDictionary(values);

            // Assert
            Assert.IsTrue(dict.ContainsKey("Key"));
            Assert.AreEqual("key", dict["Key"]);

            Assert.IsTrue(dict.ContainsKey("Value"));
            Assert.AreEqual("value", dict["Value"]);
        }
Example #20
0
        public void HandleRedirectResultWithNoControllerName()
        {
            // Setup
            var mvc = new MvcEngine();
            var handler = new RedirectHandler(_mockNavigator.Object);
            var values = new RouteDictionary();
            var result = new RedirectResult
            {
                ControllerName = null,
                ActionName = "Index",
                Values = new RouteDictionary(),
            };

            // Execute
            handler.Handle(mvc, "AnotherTest", result);

            // Assert
            _mockNavigator.Verify(i => i.Navigate("AnotherTest", "Index", values), Times.Once);
        }
Example #21
0
        public void ConstructWithDynamicObject()
        {
            // Setup
            dynamic values = new
            {
                Key   = "key",
                Value = "value",
            };

            // Execute
            var dict = new RouteDictionary(values);

            // Assert
            Assert.IsTrue(dict.ContainsKey("Key"));
            Assert.AreEqual("key", dict["Key"]);

            Assert.IsTrue(dict.ContainsKey("Value"));
            Assert.AreEqual("value", dict["Value"]);
        }
Example #22
0
        public void GivenPathWithQueryParameters_TailSegmentContainsRequestBuilder()
        {
            var requestBuilder = new RequestBuilder(HttpMethod.Get, "/api/foo/bar?blah=blurb", null);

            var routes = new List <RequestBuilder>
            {
                requestBuilder
            };

            var dictionary = RouteDictionary.From(routes);

            dictionary
            .RootSegments["api"]
            .Segments["foo"]
            .Segments["bar?blah=blurb"]
            .RequestBuilders[HttpMethod.Get]
            .Should()
            .Be(requestBuilder);
        }
Example #23
0
        public void CallRedirect()
        {
            // Setup
            var values = new RouteDictionary();

            values["One"] = 1;
            values["Two"] = 2;

            // Execute
            var result = Redirect("ActionName", values);

            // Assert
            Assert.IsNull(result.ControllerName);
            Assert.AreEqual("ActionName", result.ActionName);

            Assert.IsNotNull(result.Values);
            Assert.IsTrue(result.Values.ContainsKey("One"));
            Assert.AreEqual(1, result.Values["One"]);
            Assert.IsTrue(result.Values.ContainsKey("Two"));
            Assert.AreEqual(2, result.Values["Two"]);
        }
Example #24
0
 static RouteTable()
 {
     Routes = new RouteDictionary();
 }
Example #25
0
        public void HandleRedirectResultWithNullControllerName()
        {
            // Setup
            var mvc = new MvcEngine();
            var handler = new RedirectHandler(_mockNavigator.Object);
            var values = new RouteDictionary();
            var result = new RedirectResult
            {
                ControllerName = "Test",
                ActionName = "Index",
                Values = new RouteDictionary(),
            };

            // Execute
            handler.Handle(a_mvc: mvc, a_controllerName:null, a_result:result);
        }
Example #26
0
 static RouteTable()
 {
     Routes = new RouteDictionary();
 }
Example #27
0
        public void NavigateToActionWithTooFewArguments()
        {
            // Setup
            var navigationCore = new NavigationCore(_mvcEngine);

            // Execute
            var routeDictionary = new RouteDictionary
            {
                { "username", "jsmunroe" },
            };
            navigationCore.Navigate<TestController>("User", routeDictionary);
        }