コード例 #1
0
        public async Task ShouldMapOlderEventFormatsToNewEventTypesAsync()
        {
            var eventWithVersion1 = new VersionedEvent1 {
                Property1 = "property1"
            };
            var eventWithVersion2 = new VersionedEvent2 {
                Property1 = "property1", Property2 = "property2"
            };
            var eventWithVersion3 = new VersionedEvent {
                Property3 = "test"
            };

            var eventStore  = new MemoryEventStore();
            var savedEvent1 = await eventStore.Save(eventWithVersion1);

            var savedEvent2 = await eventStore.Save(eventWithVersion2);

            var savedEvent3 = await eventStore.Save(eventWithVersion3);

            var ids = new List <Guid> {
                savedEvent1.Id, savedEvent2.Id, savedEvent3.Id
            };
            var events = await eventStore.Get(ids);

            var eventTypeCount = events
                                 .Select(e => e.GetType())
                                 .Where(e => e.Name == "VersionedEvent")
                                 .Count();

            Assert.AreEqual(3, eventTypeCount);
        }
コード例 #2
0
            public async Task ShouldReturnNewEventInstanceAsync()
            {
                var eventStore     = new MemoryEventStore();
                var eventToBeSaved = new TestEvent {
                    Property1 = "test"
                };

                var storedEvent = await eventStore.Save(eventToBeSaved);

                Assert.AreNotSame(eventToBeSaved, storedEvent);
            }
コード例 #3
0
            public async Task ShouldPopulateTheIdFieldAsync()
            {
                var eventStore     = new MemoryEventStore();
                var eventToBeSaved = new TestEvent {
                    Property1 = "test"
                };

                var storedEvent = await eventStore.Save(eventToBeSaved);

                Assert.AreNotEqual(Guid.Empty, storedEvent.Id);
            }
コード例 #4
0
            public async Task ShouldSaveEventsAsync()
            {
                var eventStore     = new MemoryEventStore();
                var eventToBeSaved = new TestEvent {
                    Property1 = "test"
                };

                var storedEvent = await eventStore.Save(eventToBeSaved);

                Assert.IsNotNull(storedEvent);
            }
コード例 #5
0
            public async Task ShouldNotAffectOriginalInstanceDuringSaveAsync()
            {
                var eventStore     = new MemoryEventStore();
                var eventToBeSaved = new TestEvent {
                    Property1 = "test"
                };
                var originalEventSerialized = JsonConvert.SerializeObject(eventToBeSaved);

                var storedEvent = await eventStore.Save(eventToBeSaved);

                Assert.AreEqual(originalEventSerialized, JsonConvert.SerializeObject(eventToBeSaved));
            }
コード例 #6
0
            public async Task ShouldGetByIdAsync()
            {
                var eventStore     = new MemoryEventStore();
                var eventToBeSaved = new TestEvent {
                    Property1 = "test"
                };

                var storedEvent = await eventStore.Save(eventToBeSaved);

                var retreivedEvent = await eventStore.Get <TestEvent>(storedEvent.Id);

                Assert.AreEqual(JsonConvert.SerializeObject(storedEvent), JsonConvert.SerializeObject(retreivedEvent));
            }
コード例 #7
0
            public async Task ShouldGetByIdsAsync()
            {
                var eventStore      = new MemoryEventStore();
                var eventToBeSaved1 = new TestEvent {
                    Property1 = "test"
                };
                var eventToBeSaved2 = new TestEvent2 {
                    Property1 = "property1", Property2 = "property2"
                };

                var storedEvent1 = await eventStore.Save(eventToBeSaved1);

                var storedEvent2 = await eventStore.Save(eventToBeSaved2);

                var expectedEvents = new List <Event> {
                    storedEvent1, storedEvent2
                };
                var retreivedEvents = await eventStore.Get(new List <Guid> {
                    storedEvent1.Id, storedEvent2.Id
                });

                Assert.AreEqual(JsonConvert.SerializeObject(expectedEvents), JsonConvert.SerializeObject(retreivedEvents));
            }
コード例 #8
0
            public async Task ShouldRetrieveEventFromIndexAsync()
            {
                var unsavedEvent1 = new TestEvent {
                    Property1 = "test"
                };
                var unsavedEvent2 = new TestEvent2 {
                    Property1 = "test", Property2 = "test2"
                };
                var eventStore = new MemoryEventStore();

                var savedEvent1 = await eventStore.Save(unsavedEvent1);

                var savedEvent2 = await eventStore.Save(unsavedEvent2);

                object indexKey  = new { Property1 = "" };
                var    indexName = "indexName";
                await eventStore.Index(savedEvent1, indexName, indexKey);

                await eventStore.Index(savedEvent2, indexName, indexKey);

                var indexedEvents = await eventStore.GetFromIndex(indexName, new { Property1 = "test" });

                Assert.AreEqual(2, indexedEvents.Count());
            }
コード例 #9
0
ファイル: Sample.cs プロジェクト: netfx/extensions
		public void WhenEventPersisted_ThenCanObserveIt()
		{
			var store = new MemoryEventStore<int>();
			var product = new Product(5, "DevStore");
			product.Publish(1);
			product.Publish(2);
			product.Publish(3);
			product.GetChanges().ToList()
				.ForEach(e => store.Save(product, e));

			product = new Product(6, "WoVS");
			product.Publish(1);
			product.Publish(2);
			product.GetChanges().ToList()
				.ForEach(e => store.Save(product, e));

			var product2 = new Product();
			product2.Load(store.Query().For<Product>(6));

			Assert.Equal(product.Id, product2.Id);
			Assert.Equal(product.Version, product2.Version);

			var events = store.Query().For<Product>(5).OfType<Product.PublishedEvent>();
			Assert.Equal(3, events.Count());

			Console.WriteLine("For product 5, of type published:");
			foreach (var e in events)
			{
				Console.WriteLine("\t" + e);
			}

			events = store.Query().For<Product>().OfType<Product.PublishedEvent>();
			Assert.Equal(5, events.Count());

			Console.WriteLine();
			Console.WriteLine("For all products, of type published:");
			foreach (var e in events)
			{
				Console.WriteLine("\t" + e);
			}

			events = store.Query().For<Product>();
			Assert.Equal(7, events.Count());
			
			Console.WriteLine();
			Console.WriteLine("For all products, all event types:");
			foreach (var e in events)
			{
				Console.WriteLine("\t" + e);
			}

			events = store.Query().OfType<Product.CreatedEvent>();
			Assert.Equal(2, events.Count());

			Console.WriteLine();
			Console.WriteLine("Products created events:");
			foreach (var e in events)
			{
				Console.WriteLine("\t" + e);
			}

			//product.Load(store.Events.For<Product>(23));

			//var player = new DomainEventPlayer(store);
			//player.Observe<ProductPublishedEvent>();

			//player.Replay(from: null, to: null);
			//store.Events.Where(
			//store.Events.Where(x => x.AggregateType == "Product" &&
			//    x.EventType == "Published");
		}