Blame | Last modification | View Log | RSS feed
<?php/*** DataSourceTest file** CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)** Licensed under The MIT License* For full copyright and license information, please see the LICENSE.txt* Redistributions of files must retain the above copyright notice.** @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)* @link http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests* @package Cake.Test.Case.Model.Datasource* @since CakePHP(tm) v 1.2.0.4206* @license http://www.opensource.org/licenses/mit-license.php MIT License*/App::uses('Model', 'Model');App::uses('DataSource', 'Model/Datasource');/*** TestSource** @package Cake.Test.Case.Model.Datasource*/class TestSource extends DataSource {/*** _schema* @var type*/protected $_schema = array('id' => array('type' => 'integer','null' => false,'key' => 'primary','length' => 11,),'text' => array('type' => 'string','null' => true,'length' => 140,),'status' => array('type' => 'string','null' => true,'length' => 140,),'customField' => array('type' => 'string','null' => true,'length' => 255,),);/*** listSources** @return boolean*/public function listSources() {return null;}/*** Returns the schema for the datasource to enable create/update** @param object $Model* @return array*/public function describe(Model $Model) {return $this->_schema;}/*** Just return $func to pass to read() to figure out the COUNT* Required for delete/update to work** @param Model $Model* @param type $func* @param type $params* @return array*/public function calculate(Model $Model, $func, $params = array()) {return $func;}}/*** DataSourceTest class** @package Cake.Test.Case.Model.Datasource*/class DataSourceTest extends CakeTestCase {/*** Name of test source** @var string*/public $sourceName = 'myapitest';/*** setUp method** @return void*/public function setUp() {parent::setUp();$this->Source = $this->getMock('TestSource',array('create', 'read', 'update', 'delete'));ConnectionManager::create($this->sourceName, array('datasource' => get_class($this->Source),'apiKey' => '1234abcd',));$this->Model = $this->getMock('Model',array('getDataSource'),array(array('ds' => $this->sourceName)));$this->Model->expects($this->any())->method('getDataSource')->will($this->returnValue($this->Source));}/*** tearDown method** @return void*/public function tearDown() {parent::tearDown();unset($this->Model, $this->Source);ConnectionManager::drop($this->sourceName);}/*** testCreate** @return void*/public function testCreate() {$data = array($this->Model->alias => array('text' => 'This is a test','status' => 'Test status','customField' => array('array', 'field', 'type','for', 'custom', 'datasources',),),);$this->Source->expects($this->once())->method('create')->with($this->equalTo($this->Model),$this->equalTo(array_keys($data[$this->Model->alias])),$this->equalTo(array_values($data[$this->Model->alias])));$this->Model->save($data);}/*** testRead** @return void*/public function testRead() {$expected = array('conditions' => array('status' => 'test'),'fields' => null,'joins' => array(),'limit' => 10,'offset' => null,'order' => array(array('status')),'page' => 1,'group' => null,'callbacks' => true,);$this->Source->expects($this->once())->method('read')->with($this->anything(),$this->equalTo($expected));$this->Model->find('all', array('conditions' => array('status' => 'test'),'limit' => 10,'order' => array('status'),));}/*** testUpdate** @return void*/public function testUpdate() {$data = array($this->Model->alias => array('id' => 1,'text' => 'This is a test','status' => 'Test status','customField' => array('array', 'field', 'type','for', 'custom', 'datasources',),),);$this->Source->expects($this->any())->method('read')->will($this->returnValue(array(array($this->Model->alias => array('count' => 1)))));$this->Source->expects($this->once())->method('update')->with($this->equalTo($this->Model),$this->equalTo(array_keys($data[$this->Model->alias])),$this->equalTo(array_values($data[$this->Model->alias])));$this->Model->save($data);}/*** testDelete** @return void*/public function testDelete() {$this->Source->expects($this->any())->method('read')->will($this->returnValue(array(array($this->Model->alias => array('count' => 1)))));$this->Source->expects($this->once())->method('delete')->with($this->equalTo($this->Model),$this->equalTo(array($this->Model->alias . '.id' => 1)));$this->Model->delete(1);}}