ActiveFixtureTest.php 2.13 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

namespace yiiunit\framework\test;

use yii\test\ActiveFixture;
Qiang Xue committed
11
use yiiunit\data\ar\ActiveRecord;
12
use yii\test\FixtureTrait;
Qiang Xue committed
13
use yii\test\InitDbFixture;
Qiang Xue committed
14
use yiiunit\data\ar\Customer;
15 16 17 18
use yiiunit\framework\db\DatabaseTestCase;

class CustomerFixture extends ActiveFixture
{
Qiang Xue committed
19
	public $modelClass = 'yiiunit\data\ar\Customer';
20 21 22 23 24 25
}

class MyDbTestCase
{
	use FixtureTrait;

26 27 28 29 30 31 32 33 34 35 36
	public function setUp()
	{
		$this->loadFixtures();
	}

	public function tearDown()
	{
		$this->unloadFixtures();
	}

	protected function fixtures()
37 38 39 40 41
	{
		return [
			'customers' => CustomerFixture::className(),
		];
	}
Qiang Xue committed
42 43 44 45 46 47 48

	protected function globalFixtures()
	{
		return [
			InitDbFixture::className(),
		];
	}
49 50 51 52 53 54 55 56 57 58 59 60 61
}

/**
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class ActiveFixtureTest extends DatabaseTestCase
{
	public function setUp()
	{
		parent::setUp();
		\Yii::$app->setComponent('db', $this->getConnection());
Qiang Xue committed
62
		ActiveRecord::$db = $this->getConnection();
63 64 65 66 67 68 69
	}

	public function tearDown()
	{
		parent::tearDown();
	}

Qiang Xue committed
70
	public function testGetData()
71 72
	{
		$test = new MyDbTestCase();
73 74
		$test->setUp();
		$fixture = $test->customers;
75 76 77 78 79 80 81 82 83 84 85
		$this->assertEquals(CustomerFixture::className(), get_class($fixture));
		$this->assertEquals(2, count($fixture));
		$this->assertEquals(1, $fixture['customer1']['id']);
		$this->assertEquals('customer1@example.com', $fixture['customer1']['email']);
		$this->assertEquals(2, $fixture['customer2']['id']);
		$this->assertEquals('customer2@example.com', $fixture['customer2']['email']);
	}

	public function testGetModel()
	{
		$test = new MyDbTestCase();
86 87
		$test->setUp();
		$fixture = $test->customers;
88 89 90 91 92 93 94
		$this->assertEquals(Customer::className(), get_class($fixture->getModel('customer1')));
		$this->assertEquals(1, $fixture->getModel('customer1')->id);
		$this->assertEquals('customer1@example.com', $fixture->getModel('customer1')->email);
		$this->assertEquals(2, $fixture->getModel('customer2')->id);
		$this->assertEquals('customer2@example.com', $fixture->getModel('customer2')->email);
	}
}