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); }
public async Task ShouldReturnNewEventInstanceAsync() { var eventStore = new MemoryEventStore(); var eventToBeSaved = new TestEvent { Property1 = "test" }; var storedEvent = await eventStore.Save(eventToBeSaved); Assert.AreNotSame(eventToBeSaved, storedEvent); }
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); }
public async Task ShouldSaveEventsAsync() { var eventStore = new MemoryEventStore(); var eventToBeSaved = new TestEvent { Property1 = "test" }; var storedEvent = await eventStore.Save(eventToBeSaved); Assert.IsNotNull(storedEvent); }
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)); }
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)); }
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)); }
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()); }
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"); }