public async Task can_append_stream()
        {
            // PREPARE
            var personWasBorn = new PersonWasBorn
            {
                PersonId = Guid.NewGuid(),
                Date     = new DateTime(2019, 10, 2)
            };

            var personDied = new PersonDied
            {
                PersonId = Guid.NewGuid(),
                Date     = new DateTime(2020, 10, 2)
            };

            var fixture = await new Fixture(_fixture).Configure();
            await fixture.Sut.CreateStream("testStream", new List <object> {
                personWasBorn
            });

            // RUN
            await fixture.Sut.AppendStream("testStream", new List <object> {
                personDied
            }, 0);

            // ASSERT
            var events = new List <object>();

            await foreach (var @event in fixture.Sut.GetEventsFromStream("testStream"))
            {
                events.Add(@event);
            }

            events.Should().BeEquivalentTo(personWasBorn, personDied);
        }
        public void Handle(PersonDied message)
        {
            Person     person     = storage.Items <Person>().Where(p => p.Id == message.Id).Single();
            DeadPerson deadPerson = new DeadPerson
            {
                Id   = person.Id,
                Name = person.Name
            };

            storage.Remove(person);
            storage.Add(deadPerson);
        }
Пример #3
0
        public void Handle(PersonDied message)
        {
            Person person = storage.Load <Person>(message.Id);

            DeadPerson deadPerson = new DeadPerson(person.AggregateId)
            {
                Name = person.Name
            };

            storage.Remove(person);
            storage.Add(deadPerson);
        }
Пример #4
0
 internal void Kill(Person person)
 {
     Destroy(person.gameObject);
     if (person.IsContaminated)
     {
         noOfDead++;
     }
     persons.Remove(person);
     if (PersonDied != null)
     {
         PersonDied.Invoke(person);
     }
 }
 private void Apply(PersonDied @event)
 {
     this.isAlive = false;
 }