public function testReadEvents()
 {
     $eventStore = Yii::$app->eventStore;
     $events = [];
     for ($i = 0; $i < 5; $i++) {
         $events[] = new DomainEvent(['modelId' => 1, 'modelType' => 'Cat', 'payload' => new ModelEvent(['name' => 'beforeCat'])]);
     }
     $eventStore->appendEvents(new DomainEventStream($events));
     $events = [];
     for ($i = 0; $i < 5; $i++) {
         $events[] = new DomainEvent(['modelId' => 1, 'modelType' => 'Cat', 'payload' => new ModelEvent(['name' => 'beforeCat'])]);
     }
     $eventStore->appendEvents(new DomainEventStream($events));
     $events = [];
     for ($i = 0; $i < 5; $i++) {
         $events[] = new DomainEvent(['modelId' => 2, 'modelType' => 'Dog', 'payload' => new ModelEvent(['name' => 'beforeDog'])]);
     }
     $eventStore->appendEvents(new DomainEventStream($events));
     $catEvents = $eventStore->readEvents('Cat', 1);
     expect(count($catEvents))->equals(10);
     foreach ($catEvents as $event) {
         expect($event->name)->equals('beforeCat');
     }
     expect(EventRecord::find()->select('revision')->where(['model_type' => 'Cat'])->orderBy(['revision' => SORT_ASC])->distinct()->column())->equals([1, 2]);
     $dogEvents = $eventStore->readEvents('Dog', 2);
     expect(count($dogEvents))->equals(5);
     foreach ($dogEvents as $event) {
         expect($event->name)->equals('beforeDog');
     }
 }
 public function testCreate()
 {
     $model = new StandAloneModel();
     $model->trigger(StandAloneModel::EVENT_PROP1, new StandAloneEvent(['value' => 'v1']));
     expect($model->prop1)->equals('v1');
     $count0 = EventRecord::find()->count();
     $model->save(false);
     $count1 = EventRecord::find()->count();
     expect($count1)->equals($count0 + 1);
     return $model;
 }
 protected function tearDown()
 {
     EventRecord::deleteAll();
     Yii::$app->user->logout();
     parent::tearDown();
 }