public function testModelBinding(IntegrationTester $I)
{
$dispatcher = new Dispatcher();
$dispatcher->setModelBinding(true);
$dispatcher->setDI(Di::getDefault());
$I->assertInstanceOf('Phalcon\\Di', $dispatcher->getDI());
$I->haveServiceInDi('dispatcher', $dispatcher);
// Model to test with
$model = People::findFirst();
$dispatcher->setControllerName('test10');
$dispatcher->setActionName('view');
$dispatcher->setParams([$model->cedula]);
$dispatcher->dispatch();
$I->assertInstanceOf('Phalcon\\Test\\Models\\People', $dispatcher->getReturnedValue());
$I->assertEquals($model->cedula, $dispatcher->getReturnedValue()->cedula);
// Reset dispatcher
$dispatcher = new Dispatcher();
$dispatcher->setDI(Di::getDefault());
$I->assertInstanceOf('Phalcon\\Di', $dispatcher->getDI());
$I->haveServiceInDi('dispatcher', $dispatcher);
$dispatcher->setControllerName('test9');
$dispatcher->setActionName('view');
$dispatcher->setParams([$model->cedula]);
try {
$dispatcher->dispatch();
$I->assertTrue(false, 'Here must be the exception about passing non model to the controller action');
} catch (\Exception $e) {
// PHP 5.x
$I->assertEquals('Argument 1 passed to Test9Controller::viewAction() must be an instance of Phalcon\\Mvc\\Model, string given', $e->getMessage());
} catch (\TypeError $e) {
// PHP 7.x
$I->assertEquals('Argument 1 passed to Test9Controller::viewAction() must be an instance of Phalcon\\Mvc\\Model, string given', $e->getMessage());
}
$dispatcher->setModelBinding(true);
$dispatcher->dispatch();
$I->assertInstanceOf('Phalcon\\Test\\Models\\People', $dispatcher->getReturnedValue());
$I->assertEquals($dispatcher->getReturnedValue()->cedula, $model->cedula);
}