⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbo_source.test.php

📁 Cake Framwork , Excellent
💻 PHP
📖 第 1 页 / 共 5 页
字号:
			eval("class DboTest extends $class {				var \$simulated = array();/** * execute method * * @param \$sql * @access protected * @return void */				function _execute(\$sql) {					\$this->simulated[] = \$sql;					return null;				}/** * getLastQuery method * * @access public * @return void */				function getLastQuery() {					return \$this->simulated[count(\$this->simulated) - 1];				}			}");		}		$this->testDb =& new DboTest($this->__config);		Configure::write('debug', 1);		$this->debug = Configure::read('debug');		$this->Model =& new TestModel();	}/** * endTest method * * @access public * @return void */	function endTest() {		unset($this->Model);		Configure::write('debug', $this->debug);		unset($this->debug);	}/** * testFieldDoubleEscaping method * * @access public * @return void */	function testFieldDoubleEscaping() {		$config = array_merge($this->__config, array('driver' => 'test'));		$test =& ConnectionManager::create('quoteTest', $config);		$this->Model =& new Article2(array('name' => 'Article', 'ds' => 'quoteTest'));		$this->Model->setDataSource('quoteTest');		$this->assertEqual($this->Model->escapeField(), '`Article`.`id`');		$result = $test->fields($this->Model, null, $this->Model->escapeField());		$this->assertEqual($result, array('`Article`.`id`'));		$result = $test->read($this->Model, array(			'fields' => $this->Model->escapeField(),			'conditions' => null,			'recursive' => -1		));		$this->assertEqual(trim($test->simulated[0]), 'SELECT `Article`.`id` FROM `' . $this->testDb->fullTableName('article', false) . '` AS `Article`   WHERE 1 = 1');		$test->startQuote = '[';		$test->endQuote = ']';		$this->assertEqual($this->Model->escapeField(), '[Article].[id]');		$result = $test->fields($this->Model, null, $this->Model->escapeField());		$this->assertEqual($result, array('[Article].[id]'));		$result = $test->read($this->Model, array(			'fields' => $this->Model->escapeField(),			'conditions' => null,			'recursive' => -1		));		$this->assertEqual(trim($test->simulated[1]), 'SELECT [Article].[id] FROM [' . $this->testDb->fullTableName('article', false) . '] AS [Article]   WHERE 1 = 1');	}/** * testGenerateAssociationQuerySelfJoin method * * @access public * @return void */	function testGenerateAssociationQuerySelfJoin() {		$this->startTime = microtime(true);		$this->Model =& new Article2();		$this->_buildRelatedModels($this->Model);		$this->_buildRelatedModels($this->Model->Category2);		$this->Model->Category2->ChildCat =& new Category2();		$this->Model->Category2->ParentCat =& new Category2();		$queryData = array();		foreach ($this->Model->Category2->__associations as $type) {			foreach ($this->Model->Category2->{$type} as $assoc => $assocData) {				$linkModel =& $this->Model->Category2->{$assoc};				$external = isset($assocData['external']);				if ($this->Model->Category2->alias == $linkModel->alias && $type != 'hasAndBelongsToMany' && $type != 'hasMany') {					$result = $this->testDb->generateAssociationQuery($this->Model->Category2, $linkModel, $type, $assoc, $assocData, $queryData, $external, $null);					$this->assertTrue($result);				} else {					if ($this->Model->Category2->useDbConfig == $linkModel->useDbConfig) {						$result = $this->testDb->generateAssociationQuery($this->Model->Category2, $linkModel, $type, $assoc, $assocData, $queryData, $external, $null);						$this->assertTrue($result);					}				}			}		}		$query = $this->testDb->generateAssociationQuery($this->Model->Category2, $null, null, null, null, $queryData, false, $null);		$this->assertPattern('/^SELECT\s+(.+)FROM(.+)`Category2`\.`group_id`\s+=\s+`Group`\.`id`\)\s+LEFT JOIN(.+)WHERE\s+1 = 1\s*$/', $query);		$this->Model =& new TestModel4();		$this->Model->schema();		$this->_buildRelatedModels($this->Model);		$binding = array('type' => 'belongsTo', 'model' => 'TestModel4Parent');		$queryData = array();		$resultSet = null;		$null = null;		$params = &$this->_prepareAssociationQuery($this->Model, $queryData, $binding);		$_queryData = $queryData;		$result = $this->testDb->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external'], $resultSet);		$this->assertTrue($result);		$expected = array(			'fields' => array(				'`TestModel4`.`id`',				'`TestModel4`.`name`',				'`TestModel4`.`created`',				'`TestModel4`.`updated`',				'`TestModel4Parent`.`id`',				'`TestModel4Parent`.`name`',				'`TestModel4Parent`.`created`',				'`TestModel4Parent`.`updated`'			),			'joins' => array(				array(					'table' => '`test_model4`',					'alias' => 'TestModel4Parent',					'type' => 'LEFT',					'conditions' => '`TestModel4`.`parent_id` = `TestModel4Parent`.`id`'				)			),			'limit' => array(),			'offset' => array(),			'conditions' => array(),			'order' => array(),			'group' => null		);		$this->assertEqual($queryData, $expected);		$result = $this->testDb->generateAssociationQuery($this->Model, $null, null, null, null, $queryData, false, $null);		$this->assertPattern('/^SELECT\s+`TestModel4`\.`id`, `TestModel4`\.`name`, `TestModel4`\.`created`, `TestModel4`\.`updated`, `TestModel4Parent`\.`id`, `TestModel4Parent`\.`name`, `TestModel4Parent`\.`created`, `TestModel4Parent`\.`updated`\s+/', $result);		$this->assertPattern('/FROM\s+`test_model4` AS `TestModel4`\s+LEFT JOIN\s+`test_model4` AS `TestModel4Parent`/', $result);		$this->assertPattern('/\s+ON\s+\(`TestModel4`.`parent_id` = `TestModel4Parent`.`id`\)\s+WHERE/', $result);		$this->assertPattern('/\s+WHERE\s+1 = 1\s+$/', $result);		$params['assocData']['type'] = 'INNER';		$this->Model->belongsTo['TestModel4Parent']['type'] = 'INNER';		$result = $this->testDb->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $_queryData, $params['external'], $resultSet);		$this->assertTrue($result);		$this->assertEqual($_queryData['joins'][0]['type'], 'INNER');	}/** * testGenerateInnerJoinAssociationQuery method * * @access public * @return void */	function testGenerateInnerJoinAssociationQuery() {		$this->Model =& new TestModel9();		$test =& ConnectionManager::create('test2', $this->__config);		$this->Model->setDataSource('test2');		$this->Model->TestModel8 =& new TestModel8();		$this->Model->TestModel8->setDataSource('test2');		$this->testDb->read($this->Model, array('recursive' => 1));		$result = $this->testDb->getLastQuery();		$this->assertPattern('/`TestModel9` LEFT JOIN `' . $this->testDb->fullTableName('test_model8', false) . '`/', $result);		$this->Model->belongsTo['TestModel8']['type'] = 'INNER';		$this->testDb->read($this->Model, array('recursive' => 1));		$result = $this->testDb->getLastQuery();		$this->assertPattern('/`TestModel9` INNER JOIN `' . $this->testDb->fullTableName('test_model8', false) . '`/', $result);	}/** * testGenerateAssociationQuerySelfJoinWithConditionsInHasOneBinding method * * @access public * @return void */	function testGenerateAssociationQuerySelfJoinWithConditionsInHasOneBinding() {		$this->Model =& new TestModel8();		$this->Model->schema();		$this->_buildRelatedModels($this->Model);		$binding = array('type' => 'hasOne', 'model' => 'TestModel9');		$queryData = array();		$resultSet = null;		$null = null;		$params = &$this->_prepareAssociationQuery($this->Model, $queryData, $binding);		$_queryData = $queryData;		$result = $this->testDb->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external'], $resultSet);		$this->assertTrue($result);		$result = $this->testDb->generateAssociationQuery($this->Model, $null, null, null, null, $queryData, false, $null);		$this->assertPattern('/^SELECT\s+`TestModel8`\.`id`, `TestModel8`\.`test_model9_id`, `TestModel8`\.`name`, `TestModel8`\.`created`, `TestModel8`\.`updated`, `TestModel9`\.`id`, `TestModel9`\.`test_model8_id`, `TestModel9`\.`name`, `TestModel9`\.`created`, `TestModel9`\.`updated`\s+/', $result);		$this->assertPattern('/FROM\s+`test_model8` AS `TestModel8`\s+LEFT JOIN\s+`test_model9` AS `TestModel9`/', $result);		$this->assertPattern('/\s+ON\s+\(`TestModel9`\.`name` != \'mariano\'\s+AND\s+`TestModel9`.`test_model8_id` = `TestModel8`.`id`\)\s+WHERE/', $result);		$this->assertPattern('/\s+WHERE\s+(?:\()?1\s+=\s+1(?:\))?\s*$/', $result);	}/** * testGenerateAssociationQuerySelfJoinWithConditionsInBelongsToBinding method * * @access public * @return void */	function testGenerateAssociationQuerySelfJoinWithConditionsInBelongsToBinding() {		$this->Model =& new TestModel9();		$this->Model->schema();		$this->_buildRelatedModels($this->Model);		$binding = array('type' => 'belongsTo', 'model' => 'TestModel8');		$queryData = array();		$resultSet = null;		$null = null;		$params = &$this->_prepareAssociationQuery($this->Model, $queryData, $binding);		$result = $this->testDb->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external'], $resultSet);		$this->assertTrue($result);		$result = $this->testDb->generateAssociationQuery($this->Model, $null, null, null, null, $queryData, false, $null);		$this->assertPattern('/^SELECT\s+`TestModel9`\.`id`, `TestModel9`\.`test_model8_id`, `TestModel9`\.`name`, `TestModel9`\.`created`, `TestModel9`\.`updated`, `TestModel8`\.`id`, `TestModel8`\.`test_model9_id`, `TestModel8`\.`name`, `TestModel8`\.`created`, `TestModel8`\.`updated`\s+/', $result);		$this->assertPattern('/FROM\s+`test_model9` AS `TestModel9`\s+LEFT JOIN\s+`test_model8` AS `TestModel8`/', $result);		$this->assertPattern('/\s+ON\s+\(`TestModel8`\.`name` != \'larry\'\s+AND\s+`TestModel9`.`test_model8_id` = `TestModel8`.`id`\)\s+WHERE/', $result);		$this->assertPattern('/\s+WHERE\s+(?:\()?1\s+=\s+1(?:\))?\s*$/', $result);	}/** * testGenerateAssociationQuerySelfJoinWithConditions method * * @access public * @return void */	function testGenerateAssociationQuerySelfJoinWithConditions() {		$this->Model =& new TestModel4();		$this->Model->schema();		$this->_buildRelatedModels($this->Model);		$binding = array('type' => 'belongsTo', 'model' => 'TestModel4Parent');		$queryData = array('conditions' => array('TestModel4Parent.name !=' => 'mariano'));		$resultSet = null;		$null = null;		$params = &$this->_prepareAssociationQuery($this->Model, $queryData, $binding);		$result = $this->testDb->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external'], $resultSet);		$this->assertTrue($result);		$result = $this->testDb->generateAssociationQuery($this->Model, $null, null, null, null, $queryData, false, $null);		$this->assertPattern('/^SELECT\s+`TestModel4`\.`id`, `TestModel4`\.`name`, `TestModel4`\.`created`, `TestModel4`\.`updated`, `TestModel4Parent`\.`id`, `TestModel4Parent`\.`name`, `TestModel4Parent`\.`created`, `TestModel4Parent`\.`updated`\s+/', $result);		$this->assertPattern('/FROM\s+`test_model4` AS `TestModel4`\s+LEFT JOIN\s+`test_model4` AS `TestModel4Parent`/', $result);		$this->assertPattern('/\s+ON\s+\(`TestModel4`.`parent_id` = `TestModel4Parent`.`id`\)\s+WHERE/', $result);		$this->assertPattern('/\s+WHERE\s+(?:\()?`TestModel4Parent`.`name`\s+!=\s+\'mariano\'(?:\))?\s*$/', $result);		$this->Featured2 =& new Featured2();		$this->Featured2->schema();		$this->Featured2->bindModel(array(			'belongsTo' => array(				'ArticleFeatured2' => array(					'conditions' => 'ArticleFeatured2.published = \'Y\'',					'fields' => 'id, title, user_id, published'				)			)		));		$this->_buildRelatedModels($this->Featured2);		$binding = array('type' => 'belongsTo', 'model' => 'ArticleFeatured2');		$queryData = array('conditions' => array());		$resultSet = null;		$null = null;		$params = &$this->_prepareAssociationQuery($this->Featured2, $queryData, $binding);		$result = $this->testDb->generateAssociationQuery($this->Featured2, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external'], $resultSet);		$this->assertTrue($result);		$result = $this->testDb->generateAssociationQuery($this->Featured2, $null, null, null, null, $queryData, false, $null);		$this->assertPattern(			'/^SELECT\s+`Featured2`\.`id`, `Featured2`\.`article_id`, `Featured2`\.`category_id`, `Featured2`\.`name`,\s+'.			'`ArticleFeatured2`\.`id`, `ArticleFeatured2`\.`title`, `ArticleFeatured2`\.`user_id`, `ArticleFeatured2`\.`published`\s+' .			'FROM\s+`featured2` AS `Featured2`\s+LEFT JOIN\s+`article_featured` AS `ArticleFeatured2`' .			'\s+ON\s+\(`ArticleFeatured2`.`published` = \'Y\'\s+AND\s+`Featured2`\.`article_featured2_id` = `ArticleFeatured2`\.`id`\)' .			'\s+WHERE\s+1\s+=\s+1\s*$/',			$result		);	}/** * testGenerateAssociationQueryHasOne method * * @access public * @return void */	function testGenerateAssociationQueryHasOne() {		$this->Model =& new TestModel4();		$this->Model->schema();		$this->_buildRelatedModels($this->Model);		$binding = array('type' => 'hasOne', 'model' => 'TestModel5');		$queryData = array();		$resultSet = null;		$null = null;		$params = &$this->_prepareAssociationQuery($this->Model, $queryData, $binding);		$result = $this->testDb->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external'], $resultSet);		$this->assertTrue($result);		$result = $this->testDb->buildJoinStatement($queryData['joins'][0]);		$expected = ' LEFT JOIN `test_model5` AS `TestModel5` ON (`TestModel5`.`test_model4_id` = `TestModel4`.`id`)';		$this->assertEqual(trim($result), trim($expected));		$result = $this->testDb->generateAssociationQuery($this->Model, $null, null, null, null, $queryData, false, $null);		$this->assertPattern('/^SELECT\s+`TestModel4`\.`id`, `TestModel4`\.`name`, `TestModel4`\.`created`, `TestModel4`\.`updated`, `TestModel5`\.`id`, `TestModel5`\.`test_model4_id`, `TestModel5`\.`name`, `TestModel5`\.`created`, `TestModel5`\.`updated`\s+/', $result);		$this->assertPattern('/\s+FROM\s+`test_model4` AS `TestModel4`\s+LEFT JOIN\s+/', $result);		$this->assertPattern('/`test_model5` AS `TestModel5`\s+ON\s+\(`TestModel5`.`test_model4_id` = `TestModel4`.`id`\)\s+WHERE/', $result);		$this->assertPattern('/\s+WHERE\s+(?:\()?\s*1 = 1\s*(?:\))?\s*$/', $result);	}/** * testGenerateAssociationQueryHasOneWithConditions method * * @access public * @return void */	function testGenerateAssociationQueryHasOneWithConditions() {		$this->Model =& new TestModel4();		$this->Model->schema();		$this->_buildRelatedModels($this->Model);		$binding = array('type' => 'hasOne', 'model' => 'TestModel5');		$queryData = array('conditions' => array('TestModel5.name !=' => 'mariano'));		$resultSet = null;		$null = null;		$params = &$this->_prepareAssociationQuery($this->Model, $queryData, $binding);		$result = $this->testDb->generateAssociationQuery($this->Model, $params['linkModel'], $params['type'], $params['assoc'], $params['assocData'], $queryData, $params['external'], $resultSet);		$this->assertTrue($result);		$result = $this->testDb->generateAssociationQuery($this->Model, $null, null, null, null, $queryData, false, $null);		$this->assertPattern('/^SELECT\s+`TestModel4`\.`id`, `TestModel4`\.`name`, `TestModel4`\.`created`, `TestModel4`\.`updated`, `TestModel5`\.`id`, `TestModel5`\.`test_model4_id`, `TestModel5`\.`name`, `TestModel5`\.`created`, `TestModel5`\.`updated`\s+/', $result);		$this->assertPattern('/\s+FROM\s+`test_model4` AS `TestModel4`\s+LEFT JOIN\s+`test_model5` AS `TestModel5`/', $result);		$this->assertPattern('/\s+ON\s+\(`TestModel5`.`test_model4_id`\s+=\s+`TestModel4`.`id`\)\s+WHERE/', $result);		$this->assertPattern('/\s+WHERE\s+(?:\()?\s*`TestModel5`.`name`\s+!=\s+\'mariano\'\s*(?:\))?\s*$/', $result);	}/** * testGenerateAssociationQueryBelongsTo method * * @access public * @return void */	function testGenerateAssociationQueryBelongsTo() {		$this->Model =& new TestModel5();		$this->Model->schema();		$this->_buildRelatedModels($this->Model);		$binding = array('type'=>'belongsTo', 'model'=>'TestModel4');		$queryData = array();		$resultSet = null;		$null = null;		$params = &$this->_prepareAssociationQuery($this->Model, $queryData, $binding);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -