예제 #1
0
 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)
         }));
     }
 }
예제 #2
0
        public void MonstersSlayedAggregateTest()
        {
            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 PigSlayed(questId),
                new PigSlayed(questId),
                new BossSlayed(questId, "Lich King"),
                new PigSlayed(questId),
            };

            var monstersSlayed = MonstersSlayedF.Aggregate(events.ToList());

            Assert.AreEqual(3, monstersSlayed.PigsKilled);
            Assert.IsTrue(monstersSlayed.BossNames.Contains("Lich King"));
        }