CRUDlexTests\MySQLDataTest::testUpdateEvents PHP Method

testUpdateEvents() public method

public testUpdateEvents ( )
    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');
    }