yiiapi/tests/framework/db/ar/CActiveRecordEventWrappersTest.php

(开头部分) 24KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

<?php

Yii::import('system.db.CDbConnection');
Yii::import('system.db.ar.CActiveRecord');

require_once(dirname(__FILE__).'/../data/models.php');

class CActiveRecordEventWrappersTest extends CTestCase
{
	private $_connection;

	public function setUp()
	{
		if(!extension_loaded('pdo') || !extension_loaded('pdo_sqlite'))
			$this->markTestSkipped('PDO and SQLite extensions are required.');

		$this->_connection=new CDbConnection('sqlite::memory:');
		$this->_connection->active=true;
		$this->_connection->pdoInstance->exec(file_get_contents(dirname(__FILE__).'/../data/sqlite.sql'));
		CActiveRecord::$db=$this->_connection;

		// reset models
		UserWithWrappers::clearCounters();
		UserWithWrappers::setBeforeFindCriteria(null);
		PostWithWrappers::clearCounters();
		PostWithWrappers::setBeforeFindCriteria(null);
		CommentWithWrappers::clearCounters();
	}

	public function tearDown()
	{
		$this->_connection->active=false;
	}

	/**
	 * provides different db critieras to test beforeFind criteria modification
	 * @return array (db critiera, expected records, column assertations)
	 */
	public function userCriteriaProvider()
	{
		return array(
			array(new CDbCriteria(array('limit'=>1)), 1, array()),
			array(new CDbCriteria(array('select'=>"'MisterX' AS username")), 4, array('username'=>'MisterX')),
			array(new CDbCriteria(array('with'=>'posts')), 4, array()),
		);
	}

	/**
	 * provides different db critieras to test beforeFind criteria modification
	 * @return array (db critiera, expected records, column assertations)
	 */
	public function postCriteriaProvider()
	{
		return array(
			array('', 3, array()),
			array(new CDbCriteria(array('select'=>"'changedTitle' AS title")), 3, array('title'=>'changedTitle')),
			array(new CDbCriteria(array('condition'=>"title='post 2'")), 1, array()),
			array(new CDbCriteria(array('with'=>'comments')), 3, array()),
			array(new CDbCriteria(array('scopes'=>'rename')), 3, array('title'=>'renamed post')),
		);
后面还有 500 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。