Beispiel #1
0
 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
 })));
Beispiel #2
0
        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>());
            });
        }
Beispiel #4
0
 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());
Beispiel #5
0
 public static IEvent[] ToEnvelopes <T>(this T[] eventRecords, Func <T, string> sourceId)
     where T : EventRecord
 => eventRecords.Select(r => EventEnvelope.Create(sourceId(r), r)).ToArray();
Beispiel #6
0
 public static IEvent[] ToEnvelopes(this EventRecord[] eventRecords, string sourceId)
 => eventRecords.Select(r => EventEnvelope.Create(sourceId, r)).ToArray();