You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							113 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
	
	
							113 lines
						
					
					
						
							3.5 KiB
						
					
					
				| <?php | |
| /** | |
|  * @link http://www.yiiframework.com/ | |
|  * @copyright Copyright (c) 2008 Yii Software LLC | |
|  * @license http://www.yiiframework.com/license/ | |
|  */ | |
|  | |
| namespace yii\test; | |
|  | |
| use Yii; | |
|  | |
| /** | |
|  * DbTestTrait implements the commonly used methods for setting up and accessing fixture data. | |
|  * | |
|  * To use DbTestTrait, call the [[loadFixtures()]] method in the setup method in a test case class. | |
|  * The specified fixtures will be loaded and accessible through [[getFixtureData()]] and [[getFixtureModel()]]. | |
|  * | |
|  * For example, | |
|  * | |
|  * ~~~ | |
|  * use yii\test\DbTestTrait; | |
|  * use yii\codeception\TestCase; | |
|  * use app\models\Post; | |
|  * use app\models\User; | |
|  * | |
|  * class PostTestCase extends TestCase | |
|  * { | |
|  *     use DbTestTrait; | |
|  * | |
|  *     protected function setUp() | |
|  *     { | |
|  *         parent::setUp(); | |
|  * | |
|  *         $this->loadFixtures([ | |
|  *             'posts' => Post::className(), | |
|  *             'users' => User::className(), | |
|  *         ]); | |
|  *     } | |
|  * } | |
|  * ~~~ | |
|  * | |
|  * @author Qiang Xue <qiang.xue@gmail.com> | |
|  * @since 2.0 | |
|  */ | |
| trait DbTestTrait | |
| { | |
| 	/** | |
| 	 * Loads the specified fixtures. | |
| 	 * | |
| 	 * This method should typically be called in the setup method of test cases so that | |
| 	 * the fixtures are loaded before running each test method. | |
| 	 * | |
| 	 * This method does the following things: | |
| 	 * | |
| 	 * - Run [[DbFixtureManager::initScript]] if it is found under [[DbFixtureManager::basePath]]. | |
| 	 * - Clean up data and models loaded in memory previously. | |
| 	 * - Load each specified fixture: | |
| 	 *      * Truncate the corresponding table. | |
| 	 *      * If a fixture file named `TableName.php` is found under [[DbFixtureManager::basePath]], | |
| 	 *        the file will be executed, and the return value will be treated as rows which will | |
| 	 *        then be inserted into the table. | |
| 	 * | |
| 	 * @param array $fixtures a list of fixtures (fixture name => table name or AR class name) to be loaded. | |
| 	 * Each array element can be either a table name (with schema prefix if needed), or a fully-qualified | |
| 	 * ActiveRecord class name (e.g. `app\models\Post`). An element can be optionally associated with a key | |
| 	 * which will be treated as the fixture name. For example, | |
| 	 * | |
| 	 * ~~~ | |
| 	 * [ | |
| 	 *     'tbl_comment', | |
| 	 *     'users' => 'tbl_user',   // 'users' is the fixture name, 'tbl_user' is a table name | |
| 	 *     'posts' => 'app\models\Post,  // 'app\models\Post' is a model class name | |
| 	 * ] | |
| 	 * ~~~ | |
| 	 * | |
| 	 * @return array the loaded fixture data (fixture name => table rows) | |
| 	 */ | |
| 	public function loadFixtures(array $fixtures = []) | |
| 	{ | |
| 		return $this->getFixtureManager()->load($fixtures); | |
| 	} | |
|  | |
| 	/** | |
| 	 * Returns the DB fixture manager. | |
| 	 * @return DbFixtureManager the DB fixture manager | |
| 	 */ | |
| 	public function getFixtureManager() | |
| 	{ | |
| 		return Yii::$app->getComponent('fixture'); | |
| 	} | |
|  | |
| 	/** | |
| 	 * Returns the table rows of the named fixture. | |
| 	 * @param string $fixtureName the fixture name. | |
| 	 * @return array the named fixture table rows. False is returned if there is no such fixture data. | |
| 	 */ | |
| 	public function getFixtureRows($fixtureName) | |
| 	{ | |
| 		return $this->getFixtureManager()->getRows($fixtureName); | |
| 	} | |
|  | |
| 	/** | |
| 	 * Returns the named AR instance corresponding to the named fixture. | |
| 	 * @param string $fixtureName the fixture name. | |
| 	 * @param string $modelName the name of the fixture data row | |
| 	 * @return \yii\db\ActiveRecord the named AR instance corresponding to the named fixture. | |
| 	 * Null is returned if there is no such fixture or the record cannot be found. | |
| 	 */ | |
| 	public function getFixtureModel($fixtureName, $modelName) | |
| 	{ | |
| 		return $this->getFixtureManager()->getModel($fixtureName, $modelName); | |
| 	} | |
| }
 | |
| 
 |