From ccaee8fdb62ec1bc88dee7282425a563d9c0fdb3 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 8 May 2020 12:03:46 +0200 Subject: [PATCH] Fix manual trigger handlers. --- .../Rules/EnrichedEvents/EnrichedManualEvent.cs | 2 +- .../Rules/ManualTriggerHandler.cs | 3 +++ .../Rules/RuleDomainObject.cs | 2 ++ .../Rules/ManualTriggerHandlerTests.cs | 13 +++++++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Rules/EnrichedEvents/EnrichedManualEvent.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Rules/EnrichedEvents/EnrichedManualEvent.cs index 1165a253e..9a40dea10 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Rules/EnrichedEvents/EnrichedManualEvent.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Rules/EnrichedEvents/EnrichedManualEvent.cs @@ -7,7 +7,7 @@ namespace Squidex.Domain.Apps.Core.Rules.EnrichedEvents { - public sealed class EnrichedManualEvent : EnrichedEvent + public sealed class EnrichedManualEvent : EnrichedUserEventBase { public override long Partition { diff --git a/backend/src/Squidex.Domain.Apps.Entities/Rules/ManualTriggerHandler.cs b/backend/src/Squidex.Domain.Apps.Entities/Rules/ManualTriggerHandler.cs index 618cacb32..3a6245d2b 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Rules/ManualTriggerHandler.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Rules/ManualTriggerHandler.cs @@ -11,6 +11,7 @@ using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; using Squidex.Domain.Apps.Core.Rules.Triggers; using Squidex.Domain.Apps.Events.Rules; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.Reflection; namespace Squidex.Domain.Apps.Entities.Rules { @@ -23,6 +24,8 @@ namespace Squidex.Domain.Apps.Entities.Rules Name = "Manual" }; + SimpleMapper.Map(@event.Payload, result); + return Task.FromResult(result); } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleDomainObject.cs b/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleDomainObject.cs index 709d36abc..1bf1afc38 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleDomainObject.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Rules/RuleDomainObject.cs @@ -95,6 +95,8 @@ namespace Squidex.Domain.Apps.Entities.Rules private async Task Trigger(TriggerRule command) { + await EnsureLoadedAsync(); + var @event = SimpleMapper.Map(command, new RuleManuallyTriggered { RuleId = Snapshot.Id, AppId = Snapshot.AppId }); await ruleEnqueuer.Enqueue(Snapshot.RuleDef, Snapshot.Id, Envelope.Create(@event)); diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/ManualTriggerHandlerTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/ManualTriggerHandlerTests.cs index 700680a6e..30d0cfb7e 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/ManualTriggerHandlerTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/ManualTriggerHandlerTests.cs @@ -12,6 +12,7 @@ using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; using Squidex.Domain.Apps.Core.Rules.Triggers; using Squidex.Domain.Apps.Events; using Squidex.Domain.Apps.Events.Rules; +using Squidex.Infrastructure; using Squidex.Infrastructure.EventSourcing; using Xunit; @@ -31,6 +32,18 @@ namespace Squidex.Domain.Apps.Entities.Rules Assert.Equal("Manual", result.Single().Name); } + [Fact] + public async Task Should_create_event_with_actor() + { + var actor = new RefToken(RefTokenType.Subject, "me"); + + var envelope = Envelope.Create(new RuleManuallyTriggered { Actor = actor }); + + var result = await sut.CreateEnrichedEventsAsync(envelope); + + Assert.Equal(actor, ((EnrichedUserEventBase)result.Single()).Actor); + } + [Fact] public void Should_always_trigger() {