public function testUpdateEvents()
{
$entity = $this->dataLibrary->createEmpty();
$entity->set('name', 'nameUpdate');
$this->dataLibrary->create($entity);
$beforeCalled = false;
$beforeEvent = function (Entity $entity) use(&$beforeCalled) {
$beforeCalled = true;
return true;
};
$this->dataLibrary->pushEvent('before', 'update', $beforeEvent);
$afterCalled = false;
$afterEvent = function (Entity $entity) use(&$afterCalled) {
$afterCalled = true;
return true;
};
$this->dataLibrary->pushEvent('after', 'update', $afterEvent);
$entity->set('name', 'newName');
$this->dataLibrary->update($entity);
$dbEntity = $this->dataLibrary->get($entity->get('id'));
$read = $dbEntity->get('name');
$expected = 'newName';
$this->assertSame($read, $expected);
$this->assertTrue($beforeCalled);
$this->assertTrue($afterCalled);
$beforeEvent = function (Entity $entity) {
return false;
};
$this->dataLibrary->pushEvent('before', 'update', $beforeEvent);
$entity->set('name', 'newName2');
$this->dataLibrary->update($entity);
$dbEntity = $this->dataLibrary->get($entity->get('id'));
$read = $dbEntity->get('name');
$expected = 'newName';
$this->assertSame($read, $expected);
$this->dataLibrary->popEvent('before', 'update');
$this->dataLibrary->popEvent('before', 'update');
$this->dataLibrary->popEvent('after', 'update');
}