public async Task QuestPartyAggregate() { using (var session = _documentStore.OpenSession()) { var questId = Guid.NewGuid(); var events = new Object[] { new QuestStarted { Id = questId, Name = "test quest 1" }, new MembersJoined { QuestId = questId, Day = 0, Location = "ildrasil", Members = new string[] { "jalvar", "rei" } }, new MembersDeparted { Id = questId, Day = 1, Location = "ironforge", Members = new string[] { "rei" } } }; session.Events.Append(questId, events); session.SaveChanges(); var eventsFromStream = (await session.Events.FetchStreamAsync(questId)).Select(@event => @event.Data).ToList(); var questParty = QuestPartyF.Aggregate(eventsFromStream.ToList()); Assert.Equal("test quest 1", questParty.Name); Assert.True(questParty.Members.Contains("jalvar")); Assert.False(questParty.Members.Contains("rei")); } }
public async Task <IActionResult> GetFunctional(Guid id) { using (var session = _store.OpenSession()) { var events = (await session.Events.FetchStreamAsync(id)).Select(@event => @event.Data).ToList(); return(Ok(new { Quest = QuestPartyF.Aggregate(events), Monsters = MonstersSlayedF.Aggregate(events) })); } }
public void QuestPartyAggregateTest() { var questId = Guid.NewGuid(); var events = new Object[] { new QuestStarted { Id = questId, Name = "test quest 1" }, new MembersJoined { QuestId = questId, Day = 0, Location = "ildrasil", Members = new string[] { "jalvar", "rei" } }, new MembersDeparted { Id = questId, Day = 1, Location = "ironforge", Members = new string[] { "rei" } } }; var questParty = QuestPartyF.Aggregate(events.ToList()); Assert.AreEqual("test quest 1", questParty.Name); Assert.IsTrue(questParty.Members.Contains("jalvar")); Assert.IsFalse(questParty.Members.Contains("rei")); }