public void show_nothing_for_the_route_if_there_is_nothing()
        {
            var chain = new BehaviorChain();

            var visualization = new ChainVisualization {
                Chain = chain
            };

            visualization.RouteTag.Render().ShouldBeFalse();
        }
        public void Title_if_there_is_a_route()
        {
            var chain = new BehaviorChain {
                Route = new RouteDefinition("some/pattern")
            };
            var visualization = new ChainVisualization()
            {
                Report = new RouteReport(chain, null, null),
                Chain  = chain
            };

            visualization.Title.ShouldEqual("some/pattern");
        }
        public void show_route_description_in_collapsed_body_for_a_route()
        {
            var chain = new BehaviorChain
            {
                Route = new RouteDefinition("something")
            };

            var visualization = new ChainVisualization
            {
                Chain = chain
            };

            var tag = visualization.RouteTag.As <CollapsibleTag>();

            tag.Render().ShouldBeTrue();
            tag.ToString().ShouldContain(new DescriptionBodyTag(Description.For(chain.Route)).ToString());
        }
        public RequestLog BuildForCurrentRequest()
        {
            var report = new ValueReport();

            _requestData.WriteReport(report);

            var chainId = _currentChain.OriginatingChain == null ? Guid.Empty :
                          _currentChain.OriginatingChain.UniqueId;
            var log = new RequestLog {
                ChainId     = chainId,
                Time        = _systemTime.UtcNow(),
                RequestData = report,
                ChainUrl    = _urls.UrlFor(new ChainRequest {
                    Id = chainId
                }),
                DetailsUrl = _urls.UrlFor(new ChainDetailsRequest {
                    Id = chainId
                })
            };

            if (_currentChain.OriginatingChain.Route != null)
            {
                log.HttpMethod = _request.HttpMethod();
                log.Endpoint   = _request.RelativeUrl();
            }
            else if (_currentChain.OriginatingChain.InputType() != null)
            {
                log.Endpoint   = _currentChain.OriginatingChain.InputType().FullName;
                log.HttpMethod = "n/a";
            }
            else
            {
                log.Endpoint   = ChainVisualization.TitleForChain(_currentChain.OriginatingChain);
                log.HttpMethod = "n/a";
            }

            log.ReportUrl = _urls.UrlFor(log);

            return(log);
        }