public function testOverrideStaticCache()
 {
     require 'unit-tests/config.db.php';
     if (empty($configMysql)) {
         $this->markTestSkipped('Test skipped');
         return;
     }
     Phalcon\DI::reset();
     $di = new Phalcon\DI();
     $di['db'] = function () {
         require 'unit-tests/config.db.php';
         return new Phalcon\Db\Adapter\Pdo\Mysql($configMysql);
     };
     $di['modelsManager'] = function () {
         return new Phalcon\Mvc\Model\Manager();
     };
     $di['modelsMetadata'] = function () {
         return new Phalcon\Mvc\Model\Metadata\Memory();
     };
     $di->set('modelsQuery', 'Phalcon\\Mvc\\Model\\Query');
     $di->set('modelsQueryBuilder', 'Phalcon\\Mvc\\Model\\Query\\Builder');
     $di->set('modelsCriteria', 'Phalcon\\Mvc\\Model\\Criteria');
     $di['modelsCache'] = function () {
         $frontCache = new Phalcon\Cache\Frontend\Data();
         return new Phalcon\Cache\Backend\File($frontCache, array('cacheDir' => 'unit-tests/cache/'));
     };
     $robot = Cacheable\Robots::findFirst(2);
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(2);
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(array('id = 2'));
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(array('id = 2'));
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(array('order' => 'id DESC'));
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(array('order' => 'id DESC'));
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(1);
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robotParts = $robot->getRobotsParts();
     $this->assertEquals(get_class($robotParts), 'Phalcon\\Mvc\\Model\\Resultset\\Simple');
     $robotParts = $robot->getRobotsParts();
     $this->assertEquals(get_class($robotParts), 'Phalcon\\Mvc\\Model\\Resultset\\Simple');
     $part = $robotParts[0]->getParts();
     $this->assertEquals(get_class($part), 'Cacheable\\Parts');
     $part = $robotParts[0]->getParts();
     $this->assertEquals(get_class($part), 'Cacheable\\Parts');
     $robot = $robotParts[0]->getRobots();
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = $robotParts[0]->getRobots();
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
 }
 public function testOverrideStaticCache()
 {
     Phalcon\DI::reset();
     $di = new Phalcon\DI();
     $di['db'] = function () {
         require __DIR__ . '/config.db.php';
         return new Phalcon\Db\Adapter\Pdo\Mysql($configMysql);
     };
     $di['modelsManager'] = function () {
         return new Phalcon\Mvc\Model\Manager();
     };
     $di['modelsMetadata'] = function () {
         return new Phalcon\Mvc\Model\Metadata\Memory();
     };
     $di['modelsCache'] = function () {
         $frontCache = new Phalcon\Cache\Frontend\Data();
         return new Phalcon\Cache\Backend\File($frontCache, array('cacheDir' => __DIR__ . '/cache/'));
     };
     $robot = Cacheable\Robots::findFirst(2);
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(2);
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(array('id = 2'));
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(array('id = 2'));
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(array('order' => 'id DESC'));
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(array('order' => 'id DESC'));
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = Cacheable\Robots::findFirst(1);
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robotParts = $robot->getRobotsParts();
     $this->assertEquals(get_class($robotParts), 'Phalcon\\Mvc\\Model\\Resultset\\Simple');
     $robotParts = $robot->getRobotsParts();
     $this->assertEquals(get_class($robotParts), 'Phalcon\\Mvc\\Model\\Resultset\\Simple');
     $part = $robotParts[0]->getParts();
     $this->assertEquals(get_class($part), 'Cacheable\\Parts');
     $part = $robotParts[0]->getParts();
     $this->assertEquals(get_class($part), 'Cacheable\\Parts');
     $robot = $robotParts[0]->getRobots();
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
     $robot = $robotParts[0]->getRobots();
     $this->assertEquals(get_class($robot), 'Cacheable\\Robots');
 }