예제 #1
0
        public async Task Should_not_invoke_enricher_for_other_result()
        {
            var command = CreateCommand(new MyCommand());
            var context = CreateContextForCommand(command);

            context.Complete(12);

            await sut.HandleAsync(context);

            A.CallTo(() => contentEnricher.EnrichAsync(A <IEnrichedContentEntity> .Ignored, User))
            .MustNotHaveHappened();
        }
        public async Task Should_not_invoke_enricher_for_other_result()
        {
            var context =
                CreateCommandContext(
                    new MyCommand());

            context.Complete(12);

            await sut.HandleAsync(context);

            A.CallTo(() => contentEnricher.EnrichAsync(A <IEnrichedContentEntity> ._, A <bool> ._, requestContext))
            .MustNotHaveHappened();
        }
예제 #3
0
 private async Task <IReadOnlyList <IEnrichedContentEntity> > TransformCoreAsync(Context context, IEnumerable <IContentEntity> contents)
 {
     using (Profiler.TraceMethod <ContentQueryService>())
     {
         return(await contentEnricher.EnrichAsync(contents, context));
     }
 }
        private async Task <IReadOnlyList <IEnrichedContentEntity> > TransformCoreAsync(Context context, ISchemaEntity schema, IEnumerable <IContentEntity> contents)
        {
            using (Profiler.TraceMethod <ContentQueryService>())
            {
                var results = new List <IEnrichedContentEntity>();

                var script    = schema.SchemaDef.Scripts.Query;
                var scripting = !string.IsNullOrWhiteSpace(script);

                var enriched = await contentEnricher.EnrichAsync(contents, context);

                foreach (var content in enriched)
                {
                    var result = SimpleMapper.Map(content, new ContentEntity());

                    if (result.Data != null && !context.IsFrontendClient && scripting)
                    {
                        var ctx = new ScriptContext {
                            User = context.User, Data = content.Data, ContentId = content.Id
                        };

                        result.Data = scriptEngine.Transform(ctx, script);
                    }

                    results.Add(result);
                }

                return(results);
            }
        }
예제 #5
0
 private async Task <IReadOnlyList <IEnrichedContentEntity> > TransformCoreAsync(Context context, IEnumerable <IContentEntity> contents,
                                                                                 CancellationToken ct)
 {
     using (Telemetry.Activities.StartActivity("ContentQueryService/TransformCoreAsync"))
     {
         return(await contentEnricher.EnrichAsync(contents, context, ct));
     }
 }
예제 #6
0
        private void SetupEnricher()
        {
            A.CallTo(() => contentEnricher.EnrichAsync(A <IEnumerable <IContentEntity> > .Ignored))
            .ReturnsLazily(x =>
            {
                var input = (IEnumerable <IContentEntity>)x.Arguments[0];

                return(Task.FromResult <IReadOnlyList <IEnrichedContentEntity> >(input.Select(c => SimpleMapper.Map(c, new ContentEntity())).ToList()));
            });
        }
예제 #7
0
        private void SetupEnricher()
        {
            A.CallTo(() => contentEnricher.EnrichAsync(A <IEnumerable <IContentEntity> > ._, A <Context> ._, ct))
            .ReturnsLazily(x =>
            {
                var input = x.GetArgument <IEnumerable <IContentEntity> >(0) !;

                return(Task.FromResult <IReadOnlyList <IEnrichedContentEntity> >(input.Select(c => SimpleMapper.Map(c, new ContentEntity())).ToList()));
            });
        }
        protected override async Task <object> EnrichResultAsync(CommandContext context, CommandResult result)
        {
            var payload = await base.EnrichResultAsync(context, result);

            if (payload is IContentEntity content && payload is not IEnrichedContentEntity)
            {
                payload = await contentEnricher.EnrichAsync(content, true, contextProvider.Context);
            }

            return(payload);
        }
        public override async Task HandleAsync(CommandContext context, Func <Task> next)
        {
            await base.HandleAsync(context, next);

            if (context.PlainResult is IContentEntity content && NotEnriched(context))
            {
                var enriched = await contentEnricher.EnrichAsync(content, contextProvider.Context);

                context.Complete(enriched);
            }
        }
예제 #10
0
        private async Task <IReadOnlyList <IEnrichedContentEntity> > TransformCoreAsync(Context context, ISchemaEntity schema, IEnumerable <IContentEntity> contents)
        {
            using (Profiler.TraceMethod <ContentQueryService>())
            {
                var results = new List <IEnrichedContentEntity>();

                var converters = GenerateConverters(context).ToArray();

                var scriptText = schema.SchemaDef.Scripts.Query;
                var scripting  = !string.IsNullOrWhiteSpace(scriptText);

                var enriched = await contentEnricher.EnrichAsync(contents, context);

                foreach (var content in enriched)
                {
                    var result = SimpleMapper.Map(content, new ContentEntity());

                    if (result.Data != null)
                    {
                        if (!context.IsFrontendClient && scripting)
                        {
                            var ctx = new ScriptContext {
                                User = context.User, Data = content.Data, ContentId = content.Id
                            };

                            result.Data = scriptEngine.Transform(ctx, scriptText);
                        }

                        result.Data = result.Data.ConvertName2Name(schema.SchemaDef, converters);
                    }

                    if (result.DataDraft != null && (context.IsUnpublished() || context.IsFrontendClient))
                    {
                        result.DataDraft = result.DataDraft.ConvertName2Name(schema.SchemaDef, converters);
                    }
                    else
                    {
                        result.DataDraft = null;
                    }

                    results.Add(result);
                }

                return(results);
            }
        }