예제 #1
0
        public IActionResult WithdrawMoney(WithdrawMoneyRequest request)
        {
            Account account = new Account(_eventStore.GetEvents());
            var     result  = account.WithdrawMoney(request.Amount);

            if (result.IsFailure)
            {
                return(BadRequest(result.Error.ErrorMessage));
            }

            _eventStore.AddEvents(account.Changes);
            return(Ok(result.Value));
        }
예제 #2
0
        public void PlayTick(TickNumber tick)
        {
            // Retrieve external events
            List <IEvent> events = EventEmitter.Events;

            EventStore.AddEvents(tick + 2, events);
            EventEmitter.Retrieved();

            RunTick(tick);
        }
예제 #3
0
        public void EventStore_AddEventsToExistingListAppendsThem()
        {
            var guid  = Guid.NewGuid();
            var store = new EventStore();

            store.AddEvents(guid, new List <IEvent> {
                new TestEvent("1"), new TestEvent("2")
            });
            store.AddEvents(guid, new List <IEvent> {
                new TestEvent("3")
            });

            var events = store.GetEvents(guid);

            Assert.Equal(3, events.Count());

            Assert.Equal("1", ((TestEvent)events.ElementAt(0)).Text);
            Assert.Equal("2", ((TestEvent)events.ElementAt(1)).Text);
            Assert.Equal("3", ((TestEvent)events.ElementAt(2)).Text);
        }
예제 #4
0
        public void EventStore_AddEventsToEmptyListInitialisesIt()
        {
            var guid  = Guid.NewGuid();
            var store = new EventStore();

            store.AddEvents(guid, new List <IEvent>
            {
                new TestEvent(),
                new TestEvent(),
            });

            var events = store.GetEvents(guid);

            Assert.Equal(2, events.Count());
        }
예제 #5
0
        public async Task AddEvents()
        {
            var eventStore = new EventStore();
            var testEvent1 = new TestEvent {
                StreamId = "1", Data = "Initial"
            };
            var testEvent2 = new AnotherTestEvent {
                StreamId = "1", Data = "Updated"
            };
            await eventStore.AddEvents("1", new EventStoreEvent[] { testEvent1, testEvent2 });

            var eventStream = await eventStore.GetEvents("1");

            eventStream.Count().Should().Be(2, "should retrieve all events in the stream");
        }
예제 #6
0
        public async Task GetEventsBySequence()
        {
            var eventStore = new EventStore();
            var testEvent1 = new TestEvent {
                StreamId = "1", Data = "Initial"
            };
            var testEvent2 = new AnotherTestEvent {
                StreamId = "1", Data = "Updated"
            };
            var testEvent3 = new AnotherTestEvent {
                StreamId = "1", Data = "Updated 2"
            };
            var testEvent4 = new AnotherTestEvent {
                StreamId = "1", Data = "Updated 3"
            };
            await eventStore.AddEvents("1", new EventStoreEvent[] { testEvent1, testEvent2, testEvent3, testEvent4 });

            var eventStream = (await eventStore.GetEvents("1", 2)).ToArray();

            eventStream.Count().Should().Be(2, "should retrieve only events >= sequence");
            eventStream.First().Sequence.Should().Be(2, "should return the event with sequence == 2");
            eventStream.Skip(1).First().Sequence.Should().Be(3, "should return the event with sequence == 3");
        }
 public void SayThereIsNoSpoon()
 => EventStore.AddEvents(new IEvent[]
 {
     new ThereIsNoSpoonEvent()
 });
 public void SayMerryChristmas()
 => EventStore.AddEvents(new IEvent[]
 {
     new MerryChristmasDomainEvent(),
     new MerryChristmasIntegrationEvent()
 });
 public void SayHello()
 => EventStore.AddEvents(new IEvent[]
 {
     new HelloWorldDomainEvent(),
     new HelloWorldIntegrationEvent(),
 });