예제 #1
0
            public void Can_Resolve_Home_Page_With_Default_Action(string path)
            {
                // Given

                //var store = this.SetupContext();
                var routeResolverTrie = A.Fake <IRouteResolverTrie>();
                //var mapper = A.Fake<IControllerMapper>();



                //A.CallTo(() => mapper.GetControllerName(typeof (FakeController))).Returns("FakeController");
                //A.CallTo(() => mapper.ControllerHasAction("FakeController", "index")).Returns(true);

                // When

                ResolveResult data;

                using (var store = this.SetupContext())
                {
                    using (var session = store.OpenSession())
                    {
                        var node = new TrieNode
                        {
                            PageId = "pages/1"
                        };

                        var page = new FakePage {
                            Id = "pages/1"
                        };
                        var structureInfo = new Trie
                        {
                            Id       = DefaultBrickPileBootstrapper.TrieId,
                            RootNode = node
                        };
                        session.Store(structureInfo);
                        session.Store(page);
                        session.SaveChanges();

                        var resolver = new DefaultRouteResolver(routeResolverTrie);

                        A.CallTo(() => routeResolverTrie.LoadTrie()).Returns(structureInfo);

                        data = resolver.Resolve(path);
                    }

                    //Then

                    Assert.NotNull(data);
                    Assert.Equal(data.TrieNode.PageId, "pages/1");
                    Assert.Equal("index", data.Action);
                }
            }
예제 #2
0
        public void Should_return_route_whos_filter_returns_true_when_there_is_also_a_matching_route_with_a_failing_filter()
        {
            // Given
            var moduleCatalog    = new FakeModuleCatalog();
            var routeCache       = new RouteCache(moduleCatalog, new FakeModuleKeyGenerator(), A.Fake <INancyContextFactory>());
            var specificResolver = new DefaultRouteResolver(moduleCatalog, this.matcher, this.moduleBuilder);
            var request          = new FakeRequest("GET", "/filt");
            var context          = new NancyContext {
                Request = request
            };

            // When
            var route = specificResolver.Resolve(context, routeCache).Item1;

            // Then
            route.Description.Condition(context).ShouldBeTrue();
        }
예제 #3
0
        public void Should_return_a_route_if_matching_and_the_filter_returns_true()
        {
            // Given
            var moduleCatalog    = new FakeModuleCatalog();
            var routeCache       = new RouteCache(moduleCatalog, new FakeModuleKeyGenerator(), A.Fake <INancyContextFactory>());
            var specificResolver = new DefaultRouteResolver(moduleCatalog, this.matcher, this.moduleBuilder);
            var request          = new FakeRequest("GET", "/notfiltered");
            var context          = new NancyContext {
                Request = request
            };

            // When
            var route = specificResolver.Resolve(context, routeCache).Item1;

            // Then
            route.ShouldBeOfType(typeof(Route));
        }
예제 #4
0
        public void Should_not_return_a_route_if_matching_and_the_filter_returns_false()
        {
            // Given
            var moduleCatalog    = new FakeModuleCatalog();
            var routeCache       = new RouteCache(moduleCatalog, new FakeModuleKeyGenerator(), A.Fake <INancyContextFactory>(), A.Fake <IRouteSegmentExtractor>(), this.routeDescriptionProvider);
            var specificResolver = new DefaultRouteResolver(moduleCatalog, this.matcher, this.moduleBuilder, routeCache, null);
            var request          = new FakeRequest("GET", "/filtered");
            var context          = new NancyContext {
                Request = request
            };

            // When
            var route = specificResolver.Resolve(context).Item1;

            // Then
            route.ShouldBeOfType(typeof(NotFoundRoute));
        }
예제 #5
0
        public void Should_return_prereq_and_postreq_from_module()
        {
            // Given
            var moduleCatalog = A.Fake <INancyModuleCatalog>();

            A.CallTo(() => moduleCatalog.GetAllModules(A <NancyContext> .Ignored)).Returns(new[] { new FakeNancyModuleWithPreAndPostHooks() });
            A.CallTo(() => moduleCatalog.GetModuleByKey(A <string> .Ignored, A <NancyContext> .Ignored)).Returns(
                new FakeNancyModuleWithPreAndPostHooks());

            var routeCache       = new RouteCache(moduleCatalog, new FakeModuleKeyGenerator(), A.Fake <INancyContextFactory>());
            var specificResolver = new DefaultRouteResolver(moduleCatalog, this.matcher, this.moduleBuilder);
            var request          = new FakeRequest("GET", "/PrePost");
            var context          = new NancyContext {
                Request = request
            };

            // When
            var result = specificResolver.Resolve(context, routeCache);

            // Then
            result.Item3.ShouldNotBeNull();
            result.Item4.ShouldNotBeNull();
        }