// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using FakeItEasy; using Squidex.Domain.Apps.Core.Rules.EnrichedEvents; using Squidex.Domain.Apps.Core.Subscriptions; using Squidex.Domain.Apps.Events; using Squidex.Domain.Apps.Events.Apps; using Squidex.Infrastructure.EventSourcing; using Xunit; namespace Squidex.Domain.Apps.Core.Operations.Subscriptions { public class EventMessageWrapperTests { private readonly ISubscriptionEventCreator creator1 = A.Fake(); private readonly ISubscriptionEventCreator creator2 = A.Fake(); [Fact] public async Task Should_return_event_from_first_creator() { var enrichedEvent = new EnrichedContentEvent(); var envelope = Envelope.Create(new AppCreated()); A.CallTo(() => creator1.Handles(envelope.Payload)) .Returns(true); A.CallTo(() => creator1.CreateEnrichedEventsAsync(envelope, default)) .Returns(null!); A.CallTo(() => creator2.Handles(envelope.Payload)) .Returns(true); A.CallTo(() => creator2.CreateEnrichedEventsAsync(envelope, default)) .Returns(enrichedEvent); var sut = new EventMessageWrapper(envelope, new[] { creator1, creator2 }); var result = await sut.CreatePayloadAsync(); Assert.Same(enrichedEvent, result); } [Fact] public async Task Should_not_invoke_creator_if_it_does_not_handle_event() { var enrichedEvent = new EnrichedContentEvent(); var envelope = Envelope.Create(new AppCreated()); A.CallTo(() => creator1.Handles(envelope.Payload)) .Returns(false); var sut = new EventMessageWrapper(envelope, new[] { creator1 }); Assert.Null(await sut.CreatePayloadAsync()); A.CallTo(() => creator1.CreateEnrichedEventsAsync(A>._, A._)) .MustNotHaveHappened(); } } }