/** * test that explain query returns arrays of query information. * * @return void */ public function testExplainQuery() { $Post = new CakeTestModel(array('table' => 'posts', 'alias' => 'Post')); $db = $Post->getDataSource(); $sql = 'SELECT * FROM ' . $db->fullTableName('posts') . ';'; $result = $this->Model->explainQuery($Post->useDbConfig, $sql); $this->assertTrue(is_array($result)); $this->assertFalse(empty($result)); }
public function find($conditions = null, $fields = array(), $order = null, $recursive = null) { if ($this->throwException) { throw new Exception('Model tried to query database.'); } return parent::find($conditions, $fields, $order, $recursive); }
function find($command, $options = array()) { if ($command == 'last') { $options = am(array('order' => 'id DESC'), $options); return parent::find('first', $options); } else { return parent::find($command, $options); } }
/** * find method * * @param mixed $type * @param array $options * @return void */ public function find($conditions = null, $fields = array(), $order = null, $recursive = null) { if ($conditions === 'popular') { $conditions = array($this->name . '.' . $this->primaryKey . ' > ' => '1'); $options = Hash::merge($fields, compact('conditions')); return parent::find('all', $options); } return parent::find($conditions, $fields); }
/** * Test the alterSchema capabilities of postgres * * @return void */ public function testAlterSchema() { $Old = new CakeSchema(array('connection' => 'test', 'name' => 'AlterPosts', 'alter_posts' => array('id' => array('type' => 'integer', 'key' => 'primary'), 'author_id' => array('type' => 'integer', 'null' => false), 'title' => array('type' => 'string', 'null' => true), 'body' => array('type' => 'text'), 'published' => array('type' => 'string', 'length' => 1, 'default' => 'N'), 'created' => array('type' => 'datetime'), 'updated' => array('type' => 'datetime')))); $this->Dbo->query($this->Dbo->createSchema($Old)); $New = new CakeSchema(array('connection' => 'test', 'name' => 'AlterPosts', 'alter_posts' => array('id' => array('type' => 'integer', 'key' => 'primary'), 'author_id' => array('type' => 'integer', 'null' => true), 'title' => array('type' => 'string', 'null' => false, 'default' => 'my title'), 'body' => array('type' => 'string', 'length' => 500), 'status' => array('type' => 'integer', 'length' => 3, 'default' => 1), 'created' => array('type' => 'datetime'), 'updated' => array('type' => 'datetime')))); $this->Dbo->query($this->Dbo->alterSchema($New->compare($Old), 'alter_posts')); $model = new CakeTestModel(array('table' => 'alter_posts', 'ds' => 'test')); $result = $model->schema(); $this->assertTrue(isset($result['status'])); $this->assertFalse(isset($result['published'])); $this->assertEquals('string', $result['body']['type']); $this->assertEquals(1, $result['status']['default']); $this->assertEquals(true, $result['author_id']['null']); $this->assertEquals(false, $result['title']['null']); $this->Dbo->query($this->Dbo->dropSchema($New)); $New = new CakeSchema(array('connection' => 'test_suite', 'name' => 'AlterPosts', 'alter_posts' => array('id' => array('type' => 'string', 'length' => 36, 'key' => 'primary'), 'author_id' => array('type' => 'integer', 'null' => false), 'title' => array('type' => 'string', 'null' => true), 'body' => array('type' => 'text'), 'published' => array('type' => 'string', 'length' => 1, 'default' => 'N'), 'created' => array('type' => 'datetime'), 'updated' => array('type' => 'datetime')))); $result = $this->Dbo->alterSchema($New->compare($Old), 'alter_posts'); $this->assertNotRegExp('/varchar\\(36\\) NOT NULL/i', $result); }
/** * ensure that getQueryLogs works and writes to the cache so the history panel will * work. * * @return void */ public function testGetQueryLogs() { $model = new CakeTestModel(array('table' => 'posts', 'alias' => 'Post')); $model->find('all'); $model->find('first'); $result = $this->Toolbar->getQueryLogs($model->useDbConfig, array('cache' => false)); $this->assertTrue(is_array($result)); $this->assertTrue(count($result) >= 2, 'Should be more than 2 queries in the log %s'); $this->assertTrue(isset($result['queries'][0]['actions'])); $model->find('first'); Cache::delete('debug_kit_toolbar_test_case', 'default'); $result = $this->Toolbar->getQueryLogs($model->useDbConfig, array('cache' => true)); $cached = $this->Toolbar->readCache('sql_log'); $this->assertTrue(isset($cached[$model->useDbConfig])); $this->assertEquals($cached[$model->useDbConfig]['queries'][0], $result['queries'][0]); }
/** * find method * * @param mixed $type * @param array $options * @access public * @return void */ function find($type, $options = array()) { if ($type == 'popular') { $conditions = array($this->name . '.' . $this->primaryKey . ' > ' => '1'); $options = Set::merge($options, compact('conditions')); return parent::find('all', $options); } return parent::find($type, $options); }
/** * Test the alterSchema capabilities of postgres * * @access public * @return void */ function testAlterSchema() { $Old =& new CakeSchema(array('connection' => 'test_suite', 'name' => 'AlterPosts', 'alter_posts' => array('id' => array('type' => 'integer', 'key' => 'primary'), 'author_id' => array('type' => 'integer', 'null' => false), 'title' => array('type' => 'string', 'null' => false), 'body' => array('type' => 'text'), 'published' => array('type' => 'string', 'length' => 1, 'default' => 'N'), 'created' => array('type' => 'datetime'), 'updated' => array('type' => 'datetime')))); $this->db->query($this->db->createSchema($Old)); $New =& new CakeSchema(array('connection' => 'test_suite', 'name' => 'AlterPosts', 'alter_posts' => array('id' => array('type' => 'integer', 'key' => 'primary'), 'author_id' => array('type' => 'integer', 'null' => false), 'title' => array('type' => 'string', 'null' => false), 'body' => array('type' => 'string', 'length' => 500), 'status' => array('type' => 'integer', 'length' => 3), 'created' => array('type' => 'datetime'), 'updated' => array('type' => 'datetime')))); $this->db->query($this->db->alterSchema($New->compare($Old), 'alter_posts')); $model = new CakeTestModel(array('table' => 'alter_posts', 'ds' => 'test_suite')); $result = $model->schema(); $this->assertTrue(isset($result['status'])); $this->assertFalse(isset($result['published'])); $this->assertEqual($result['body']['type'], 'string'); $this->db->query($this->db->dropSchema($New)); }
/** * test saving and retrieval of blobs * * @return void */ public function testBlobSaving() { $this->loadFixtures('BinaryTest'); $this->Dbo->cacheSources = false; $data = file_get_contents(CAKE . 'Test' . DS . 'test_app' . DS . 'webroot' . DS . 'img' . DS . 'cake.power.gif'); $model = new CakeTestModel(array('name' => 'BinaryTest', 'ds' => 'test')); $model->save(compact('data')); $result = $model->find('first'); $this->assertEquals($data, $result['BinaryTest']['data']); }
public function beforeValidate($options = array()) { parent::beforeValidate($options); $this->setValidationPatterns(); }
/** * test saving and retrieval of blobs * * @return void */ public function testBlobSaving() { $this->loadFixtures('BinaryTest'); $this->Dbo->cacheSources = false; $data = "GIF87ab\n\t\tÒ4A¿¿¿ˇˇˇ,b\n\t\t¢îè©ÀÌ#¥⁄ã≥fi:¯Ü‚Héá¶jV∂ÓúÎL≥çÀóËıÎ…>ï≈ vFE%ÒâLFI<†µw˝±≈£7˘ç^H“≤«\f>Éâ*∑ÇnÖA•Ù|flêèj£:=ÿ6óUàµ5'∂®àA¬ñ∆ˆGE(gt’≈àÚyÁó«7\t‚VìöÇ√˙Ç™\n\t\tk”:;kÀAõ{*¡€Î˚˚[;;"; $model = new CakeTestModel(array('name' => 'BinaryTest', 'ds' => 'test')); $model->save(compact('data')); $result = $model->find('first'); $this->assertEqual($result['BinaryTest']['data'], $data); }