Пример #1
0
        public void SimpleCQRSScenarioTest1()
        {
            var serviceCollection = new ServiceCollection();
            var messageHandlerExecutionContext = new ServiceProviderMessageHandlerExecutionContext(serviceCollection);

            var changedName      = string.Empty;
            var eventStore       = new DictionaryEventStore();
            var eventBus         = new SimpleEventBus(new MessageJsonSerializer(), messageHandlerExecutionContext);
            var snapshotProvider = new SuppressedSnapshotProvider();

            eventBus.MessageReceived += (s, e) =>
            {
                if (e.Message is NameChangedEvent)
                {
                    changedName = (e.Message as NameChangedEvent).Name;
                }
            };

            var domainRepository = new EventSourcingDomainRepository(eventStore, eventBus, snapshotProvider);

            var id    = Guid.NewGuid();
            var model = new Employee(id);

            model.ChangeName("daxnet");
            domainRepository.Save <Guid, Employee>(model);

            Assert.Equal("daxnet", changedName);
        }
Пример #2
0
        public void SaveEventsTest1()
        {
            var aggregateRootId = Guid.NewGuid();
            var employee        = new Employee {
                Id = aggregateRootId
            };

            var event1 = new NameChangedEvent("daxnet");
            var event2 = new TitleChangedEvent("title");
            var event3 = new RegisteredEvent();

            event1.AttachTo(employee);
            event2.AttachTo(employee);
            event3.AttachTo(employee);

            var store = new DictionaryEventStore();

            store.Save(new List <DomainEvent>
            {
                event1,
                event2,
                event3
            });

            var events = store.Load <Guid, IDomainEvent>(typeof(Employee).AssemblyQualifiedName, aggregateRootId);

            Assert.Equal(3, events.Count());
            Assert.NotEqual(Guid.Empty, event1.Id);
            Assert.NotEqual(Guid.Empty, event2.Id);
            Assert.NotEqual(Guid.Empty, event3.Id);
        }
        public void SimpleCQRSScenarioTest1()
        {
            var changedName = string.Empty;
            var eventStore  = new DictionaryEventStore();
            var eventBus    = new EventBus();

            eventBus.MessageReceived += (s, e) =>
            {
                if (e.Message is NameChangedEvent)
                {
                    changedName = (e.Message as NameChangedEvent).Name;
                }
            };
            eventBus.Subscribe();
            var domainRepository = new EventSourcingDomainRepository(eventStore, eventBus);

            var id    = Guid.NewGuid();
            var model = new Employee {
                Id = id
            };

            model.ChangeName("daxnet");
            domainRepository.Save <Guid, Employee>(model);

            Assert.Equal("daxnet", changedName);
        }