Example #1
0
        public void ShouldAppendEventToPpenddingEventsQueue()
        {
            var expectedAggregatedId = Guid.NewGuid().ToString();
            var fisrtEvent           = new FakeCelebrityWasCreatedEvent(expectedAggregatedId, new { Id = expectedAggregatedId, Foo = "Bar", Bar = "Foo" });
            var events = new Queue <ICelebrityEvent>();

            events.Enqueue(fisrtEvent);

            var state  = new FooBar(expectedAggregatedId);
            var fooBar = events.Reduce <FooBar>(state, (a, b) =>
            {
                a.Foo = b.Data.Foo;
                a.Bar = b.Data.Bar;
                return(state);
            });

            fooBar.RevertPropertyValues();

            var pendingEvent = fooBar.PendingEvents.Should().HaveCount(1).And.Subject.First();

            pendingEvent.AggregatedId.Should().Be(expectedAggregatedId);

            var data = (object)pendingEvent.Data;

            data.Should().Be(new { Id = expectedAggregatedId, Foo = "Foo", Bar = "Bar" });
        }
Example #2
0
        public void ShouldGetStateFromEvent()
        {
            var @event = new FakeCelebrityWasCreatedEvent(Guid.NewGuid().ToString(), new { Foo = "Foo", Bar = "Bar" });

            var state = @event.Data.GetState <FooBar>();

            state.Foo.Should().Be("Foo");
            state.Bar.Should().Be("Bar");
        }
Example #3
0
        public void ShouldAppendEventToPpenddingEventsQueueA()
        {
            var expectedAggregatedId = Guid.NewGuid().ToString();
            var fisrtEvent           = new FakeCelebrityWasCreatedEvent(expectedAggregatedId, new { Id = expectedAggregatedId, Foo = "Bar", Bar = "Foo", Zoo = "Zoo" });
            var events = new Queue <ICelebrityEvent>();

            events.Enqueue(fisrtEvent);

            var exception = Assert.Throws <InvalidOperationException>(() => events.Reduce <FooBar>());

            exception.Message.Should().Be($"The property \"Zoo\" can not be readable and writable");
        }
        public void ShouldReduceEventsToEntityInYourLastStateWhenExistCommitedEvents()
        {
            var expectedAggregatedId = Guid.NewGuid().ToString();
            var events      = new Queue <ICelebrityEvent>();
            var fisrtEvent  = new FakeCelebrityWasCreatedEvent(expectedAggregatedId, new { Foo = "Bar", Bar = "Foo" });
            var secondEvent = new FakeCelebrityWasCreatedEvent(expectedAggregatedId, new { Foo = "Foo", Bar = "Bar" });

            events.Enqueue(fisrtEvent);
            events.Enqueue(secondEvent);

            var reduced = events.Reduce <FooBar>();

            reduced.Should().NotBeEquivalentTo(fisrtEvent.Data);
            reduced.Should().BeEquivalentTo(secondEvent.Data);
        }