Esempio n. 1
0
 /**
  * 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);
 }
Esempio n. 3
0
 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]);
 }
Esempio n. 7
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);
 }
Esempio n. 8
0
 /**
  * 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();
 }
Esempio n. 11
0
 /**
  * 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);
 }