示例#1
0
        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"));
        }