public void CreateFromSource1_Always_CopiesMessageCorrelationData()
        {
            var integrationEvent = Fixtures.Pipelines.FakeCreatedIntegrationEvent();

            var signal = QueryModelChangedSignal.CreateFromSource(
                integrationEvent,
                Unified.NewCode(),
                FixtureUtils.Int(),
                typeof(int),
                FixtureUtils.FromEnum <QueryModelChangeOperation>());

            signal.Should().BeEquivalentTo(integrationEvent, options => options.ForMessage());
        }
        public void Constructor_Always_UpdatesProperties()
        {
            var queryModelId      = Unified.NewCode();
            var queryModelVersion = FixtureUtils.Int();
            var queryModelType    = typeof(int);
            var operation         = FixtureUtils.FromEnum <QueryModelChangeOperation>();

            var signal = new QueryModelChangedSignal(queryModelId, queryModelVersion, queryModelType, operation);

            signal.QueryModelId.Should().Be(queryModelId);
            signal.QueryModelVersion.Should().Be(queryModelVersion);
            signal.QueryModelType.Should().Be(queryModelType);
            signal.Operation.Should().Be(operation);
        }
        public void QueryModelChangedSignal_Always_SerializedCorrectly()
        {
            var signal = new QueryModelChangedSignal(Unified.NewCode(), FixtureUtils.Int(), typeof(int), FixtureUtils.FromEnum <QueryModelChangeOperation>())
            {
                CorrelationId   = Unified.NewCode(),
                AggregateRootId = Unified.NewCode(),
                Metadata        = { [MetadataKey.UserId] = Unified.NewCode() },
                Actor           = { IdentityId = Unified.NewCode(), UserId = Unified.NewCode(), IsProcessManager = true }
            };

            var json         = JsonConvert.SerializeObject(signal);
            var deserialized = JsonConvert.DeserializeObject <QueryModelChangedSignal>(json);

            deserialized.Should().BeEquivalentTo(signal);
        }