private Func <TestMessage, Task <AppendResult> > CreateMessageStorerAndStartHandling(ConnectedProjection <TestDbContext> projection) { var eventMapping = new EventMapping(EventMapping.DiscoverEventNamesInAssembly(typeof(RunnerTests).Assembly)); var testRunner = new TestRunner( new EnvelopeFactory( eventMapping, new EventDeserializer(JsonConvert.DeserializeObject)), new Logger <TestRunner>(new LoggerFactory()), projection); var options = new DbContextOptionsBuilder <TestDbContext>() .UseInMemoryDatabase("testing") .Options; using (var testDbContext = new TestDbContext(options)) { testDbContext.Database.EnsureDeleted(); } var inMemoryStreamStore = new InMemoryStreamStore(() => DateTime.UtcNow); testRunner.Handle( inMemoryStreamStore, () => new Owned <TestDbContext>(new TestDbContext(options), this)); return(async message => await inMemoryStreamStore.AppendToStream(new StreamId("Bla"), ExpectedVersion.Any, new NewStreamMessage(Guid.NewGuid(), eventMapping.GetEventName(typeof(TestMessage)), JsonConvert.SerializeObject(message)))); }
private async Task Tick(CancellationToken cancellationToken) { var eventMapping = new EventMapping(EventMapping.DiscoverEventNamesInAssembly(typeof(ClockHasTicked).Assembly)); var clockStreamId = new StreamId(ClockStreamId); var lastClockHasTicked = await _streamStore.ReadStreamBackwards( streamId : clockStreamId, fromVersionInclusive : StreamVersion.End, maxCount : 1, prefetchJsonData : true, cancellationToken : cancellationToken); if (!lastClockHasTicked.Messages.Any()) { await AppendClockHasTicked(cancellationToken, clockStreamId, eventMapping); } else { var lastClockTickJsonData = await lastClockHasTicked.Messages[0].GetJsonData(cancellationToken); var lastClockTick = JsonConvert.DeserializeObject <ClockHasTicked>(lastClockTickJsonData); if (LocalDate.FromDateTime(lastClockTick.DateTime.Date) != _clockProvider.Today) { await AppendClockHasTicked(cancellationToken, clockStreamId, eventMapping); } } }
public async Task WhenMessageIsAppended() { var mapping = new EventMapping(EventMapping.DiscoverEventNamesInAssembly(typeof(RoadNetworkEvents).Assembly)); var settings = EventsJsonSerializerSettingsProvider.CreateSerializerSettings(); var archiveStream = new StreamName("archive-1"); var commandStream = new StreamName("road-network-commands"); var id = Guid.NewGuid(); var reaction = new ReactionScenarioBuilder() .Given(new RecordedEvent(archiveStream, new Messages.UploadRoadNetworkChangesArchive { ArchiveId = "123" }).WithMessageId(id)) .Then(new RecordedEvent(commandStream, new Messages.UploadRoadNetworkChangesArchive { ArchiveId = "123" }).WithMessageId(id).WithMetadata(new { Position = 1 })) .Build(); var sut = new Subscriber(_store, commandStream); using (sut) { sut.Start(); //Act foreach (var stream in reaction.Givens.GroupBy(given => given.Stream)) { await _store.AppendToStream( stream.Key, ExpectedVersion.NoStream, stream.Select((given, index) => new NewStreamMessage( Deterministic.Create(Deterministic.Namespaces.Events, $"{given.Stream}-{index}"), mapping.GetEventName(given.Event.GetType()), JsonConvert.SerializeObject(given.Event, settings), given.Metadata != null ? JsonConvert.SerializeObject(given.Metadata, settings) : null )).ToArray()); } //Await var page = await _store.ReadStreamForwards(commandStream, StreamVersion.Start, 1); while (page.Status == PageReadStatus.StreamNotFound) { page = await _store.ReadStreamForwards(commandStream, StreamVersion.Start, 1); } //Assert //Assert.Equal(_messageId, page.Messages[0].MessageId); } await sut.Disposed; }
public PublicServiceControllerTests() { var dbContextOptions = CreateDbContext(); _existingPublicServiceId = "DVR000000001"; var publicServiceListItem = new PublicServiceListItem { PublicServiceId = _existingPublicServiceId, Name = "Dienstverlening" }; _backofficeContext = new BackofficeContext(dbContextOptions); _backofficeContext.PublicServiceList.Add(publicServiceListItem); _backofficeContext.SaveChanges(); _eventMapping = new EventMapping(EventMapping.DiscoverEventNamesInAssembly(typeof(DomainAssemblyMarker).Assembly)); _eventDeserializer = new EventDeserializer(JsonConvert.DeserializeObject); }
public ClockTickingServiceTests() { _eventMapping = new EventMapping(EventMapping.DiscoverEventNamesInAssembly(typeof(ClockHasTicked).Assembly)); }
public EventHandlingModule(Assembly eventsAssembly, JsonSerializerSettings jsonSerializerSettingsForEvents) { _eventDeserializer = new EventDeserializer((eventData, eventType) => JsonConvert.DeserializeObject(eventData, eventType, jsonSerializerSettingsForEvents)); _eventSerializer = new EventSerializer(@event => JsonConvert.SerializeObject(@event, jsonSerializerSettingsForEvents)); _eventMapping = new EventMapping(EventMapping.DiscoverEventNamesInAssembly(eventsAssembly)); }