Exemple #1
0
        public void Should_return_default_accept_types(LambdaExpression expression,
                                                       Type modelType, string accept, string contentType,
                                                       Encoding encoding, string[] names)
        {
            var requestGraph     = RequestGraph.CreateFor(expression);
            var actionDescriptor = requestGraph.GetActionDescriptor();
            var viewSource       = new TestViewSource(_configuration,
                                                      new ViewDescriptor("fark", () => "farker"));
            var context = new ViewSourceContext(actionDescriptor, null);
            var results = viewSource.GetViews(context);

            viewSource.Context.ShouldEqual(context);
            viewSource.Encoding.ShouldEqual(encoding);
            viewSource.ViewNames.ShouldOnlyContain(names);

            results.Length.ShouldEqual(1);

            var view = results.First();

            view.Action.ShouldEqual(actionDescriptor);
            view.AcceptTypes.ShouldOnlyContain(accept);
            view.ContentType.ShouldEqual(contentType);
            view.Encoding.ShouldEqual(encoding);
            view.Hash.ShouldEqual("farker".Hash());
            view.ModelType.Type.ShouldEqual(modelType);
            view.Source.ShouldEqual("farker");
            view.Type.ShouldEqual("fark");
        }
Exemple #2
0
 protected override ViewDescriptor[] GetViewDescriptors(
     ViewSourceContext context, string[] viewNames, Encoding encoding)
 {
     Context   = context;
     ViewNames = viewNames;
     Encoding  = encoding;
     return(_viewDescriptors);
 }
Exemple #3
0
        public void Should_return_default_view_names()
        {
            var requestGraph = RequestGraph.CreateFor <Handler>(x => x.Default());
            var context      = new ViewSourceContext(requestGraph.GetActionDescriptor(), null);

            ViewSourceBase.DefaultViewNameConvention(context)
            .ShouldOnlyContain(
                "ViewSourceBaseTests.DefaultModel",
                "ViewSourceBaseTests.Handler");
        }
        public virtual void Decorate(ActionDecoratorContext context)
        {
            var engines = _viewEngines
                          .ThatApplyTo(context.ActionDescriptor, _configuration,
                                       _viewConfiguration, _httpConfiguration)
                          .SelectMany(x => x
                                      .SupportedViewTypes.Select(t => new
            {
                Engine = x,
                Type   = t
            })).ToList();

            var supportedTypes = engines.SelectMany(x =>
                                                    x.Engine.SupportedViewTypes).ToArray();
            var viewSourceContext = new ViewSourceContext(
                context.ActionDescriptor, supportedTypes);

            var result = _viewSources
                         .ThatApplyTo(supportedTypes, context.ActionDescriptor,
                                      _configuration, _viewConfiguration, _httpConfiguration)
                         .SelectMany(x => x.GetViews(viewSourceContext))
                         .Join(engines, x => x.Type, x => x.Type,
                               (v, e) => new
            {
                View = v,
                e.Engine
            })
                         .FirstOrDefault();

            if (result == null)
            {
                return;
            }

            result.Engine.PreCompile(result.View);

            context
            .ConfigureRegistry(x => x
                               .Register(new ViewContent(result.View, result.Engine))
                               .Register <IResponseWriter, ViewWriter>())
            .ConfigureResponseWriters(x =>
            {
                if (_viewConfiguration.ClearOtherWriters)
                {
                    x.Clear();
                }
                x.Append <ViewWriter>();
            });
        }