public static IEvent ToEvent(this global::CosmoStore.EventRead <JToken, long> eventRead, Func <string, Type> typeResolver) => typeResolver(eventRead.Name) .Pipe(t => ((EventRecord)eventRead.Data.ToObject(t)) .Pipe(e => EventEnvelope.Create(eventRead.Id.ToString(), e)) .Tap(e => e.Meta = eventRead.Metadata.Value.ToObject <Dictionary <string, string> >()) .Tap(e => e.Meta.AddStoreMetaData(new EventStoreMetaData { EventPosition = eventRead.Version, EventVersion = eventRead.Version })));
public static IEvent ToEvent(this CloudEvent cloudEvent, Func <string, Type> typeResolver) { var eventType = typeResolver(cloudEvent.Type); var stringContent = cloudEvent.Data as string; if (stringContent == null) { throw new ArgumentException("expected cloud event data to by of type string"); } var @event = JsonSerializer.Deserialize(stringContent, eventType) as EventRecord; var envelope = EventEnvelope.Create(cloudEvent.Id, @event); envelope.Meta.AddMetaData(cloudEvent.Extension <EventMetaDataExtension>().MetaData); return(envelope); }
public async Task JoinGameAsync() { var host = await hostBuilder.StartAsync(); var client = host.GetTestClient(); //Given var gameId = Guid.NewGuid(); context.Given( EventEnvelope.Create( gameId.ToString(), new GameCreated(GameId: gameId, PlayerId: "*****@*****.**", Rounds: 1, Title: "test game", Created: DateTime.UtcNow)) .AddTestMetaData <GameState>(new AggregateId(gameId))); //When await context.WhenAsync(async() => { var cmd = new JoinGame { GameId = gameId, PlayerId = "*****@*****.**" }; var response = await client.PostAsync($"/games/{gameId}/join", new FormUrlEncodedContent( new[] { KeyValuePair.Create(nameof(cmd.GameId), cmd.GameId.ToString()), KeyValuePair.Create(nameof(cmd.PlayerId), cmd.PlayerId), } ), CancellationToken.None); Assert.Equal(System.Net.HttpStatusCode.Found, response.StatusCode); }); //Then context.Then((events, visual) => { this.helper.WriteLine(visual); Assert.True(events.AsEnvelopes().Happened <GameStarted>()); Assert.True(events.AsEnvelopes().Happened <RoundStarted>()); }); }
public static void Given <TState>(this ITestContext context, IAggregateId id, params EventRecord[] events) => context.Given(events.Select(e => EventEnvelope.Create(id.Id, e).AddTestMetaData <TState>(id)).ToArray());
public static IEvent[] ToEnvelopes <T>(this T[] eventRecords, Func <T, string> sourceId) where T : EventRecord => eventRecords.Select(r => EventEnvelope.Create(sourceId(r), r)).ToArray();
public static IEvent[] ToEnvelopes(this EventRecord[] eventRecords, string sourceId) => eventRecords.Select(r => EventEnvelope.Create(sourceId, r)).ToArray();