public virtual async Task SaveAndLoadContainsAllEventsForAnAggregate() { _logger.LogInformation("Running SaveAndLoadContainsAllEventsForAnAggregate"); await Task.Delay(0).ConfigureAwait(false); var store = CreateInstance(); { var @event = FakeEvent.Create(); await store.SaveEventsAsync <FakeAggregate>(@event.AggregateId, new IDomainEvent[] { @event }, 0).ConfigureAwait(false); var loaded = await store.GetEventsForAggregateAsync <FakeAggregate>(@event.AggregateId).ConfigureAwait(false); loaded.Should().Contain(x => x.EventData.Id == @event.Id); } { var save = FakeEvent.CreateList(155).ToArray(); await store.SaveEventsAsync <FakeAggregate>(save.First().AggregateId, save, 154).ConfigureAwait(false); var loaded = await store.GetEventsForAggregateAsync <FakeAggregate>(save.First().AggregateId).ConfigureAwait(false); foreach (var savedEvent in save) { loaded.Should().Contain(x => x.EventData.Id == savedEvent.Id); } } }
public async Task ProjectionReaderTest() { var setup = GetService <EventStoreSetup>(); var store = GetService <IEventStore>(); var proj = GetService <IProjectionReader>(); var name = $"tests{Guid.NewGuid().ToString().Replace("-", "")}"; var query = TestFiles.GetFileContent("FakeCounterProjection.js"); await setup.AddOpsUserToAdminsAsync(); if (!await setup.CheckProjectionIsRunningAsync("$by_category")) { await setup.EnableProjectionAsync("$by_category"); } (await setup.CheckProjectionIsRunningAsync("$by_category")).Should().BeTrue(); await setup.CreateContinousProjectionAsync(name, query); (await setup.CheckContinousProjectionIsCreatedAsync(name, query)).Should().BeTrue(); (await setup.CheckProjectionIsRunningAsync(name)).Should().BeTrue(); var save = FakeEvent.CreateList(155).ToArray(); store.SaveEventsAsync <FakeAggregate>(save.First().AggregateId, save, 154).Wait(); await Task.Delay(1500); var result = await proj.GetStateAsync <X1>(name, save.First().AggregateId.Replace("-", "")); result.Should().NotBeNull(); result.Ids.Length.Should().Be(save.Length); }
public void LoadThrowsExceptionOnWrongVersionAsync() { var events = FakeEvent.CreateList(10).ToArray(); var @event = events[0]; IList <EventDescriptor> list = new List <EventDescriptor>(); for (int i = 0; i < events.Length; i++) { list.Add(new EventDescriptor(events[i], i)); } var mockStore = new Mock <IEventStore>(); mockStore.Setup(x => x.GetEventsForAggregateAsync <FakeAggregate>(@event.AggregateId)) .ReturnsAsync(list); ServiceCollection .AddSingleton(mockStore.Object) .AddSingleton(Mock.Of <IMessagePublisher>()) ; var repo = CreateInstance(); Action act = () => repo.GetByIdAsync <FakeAggregate>(@event.AggregateId, 2).GetAwaiter().GetResult(); act.Should().Throw <ConcurrencyException>(); }
public async Task ProjectionReaderTest2() { var setup = GetService <EventStoreSetup>(); var store = GetService <IEventStore>(); var proj = GetService <IEventStoreReader>(); var prov = GetService <EventStoreConnectionProvider>(); await prov.InitializeAsync(CancellationToken.None); var name = $"tests{Guid.NewGuid().ToString().Replace("-", "")}"; var query = TestFiles.GetFileContent("FakeCounterProjection.js"); await setup.AddOpsUserToAdminsAsync(); if (!await setup.CheckProjectionIsRunningAsync("$by_category")) { await setup.EnableProjectionAsync("$by_category"); } (await setup.CheckProjectionIsRunningAsync("$by_category")).Should().BeTrue(); await setup.CreateContinousProjectionAsync(name, query); (await setup.CheckContinousProjectionIsCreatedAsync(name, query)).Should().BeTrue(); (await setup.CheckProjectionIsRunningAsync(name)).Should().BeTrue(); var save = FakeEvent.CreateList(155).ToArray(); await store.SaveEventsAsync <FakeAggregate>(save.First().AggregateId, save, 154); await Task.Delay(1500); var definition = new { Ids = new string[0] }; var result = await proj.GetProjectionStateAsyncAnonymousType(name, definition, save.First().AggregateId.Replace("-", "")); result.Should().NotBeNull(); result.Ids.Length.Should().Be(save.Length); }