public function testCreateEvents()
{
$beforeCalled = false;
$beforeEvent = function (Entity $entity) use(&$beforeCalled) {
$beforeCalled = true;
return true;
};
$this->dataLibrary->pushEvent('before', 'create', $beforeEvent);
$afterCalled = false;
$afterEvent = function (Entity $entity) use(&$afterCalled) {
$afterCalled = true;
return true;
};
$this->dataLibrary->pushEvent('after', 'create', $afterEvent);
$entity = $this->dataLibrary->createEmpty();
$entity->set('name', 'name');
$this->dataLibrary->create($entity);
$this->assertNotNull($entity->get('id'));
$this->assertTrue($beforeCalled);
$this->assertTrue($afterCalled);
$beforeEvent = function (Entity $entity) {
return false;
};
$this->dataLibrary->pushEvent('before', 'create', $beforeEvent);
$entity = $this->dataLibrary->createEmpty();
$entity->set('name', 'name');
$this->dataLibrary->create($entity);
$id = $entity->get('id');
$this->assertNull($id);
$this->dataLibrary->popEvent('before', 'create');
$this->dataLibrary->popEvent('before', 'create');
$this->dataLibrary->popEvent('after', 'create');
}