diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 68313611ec..00220f261a 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,6 +4,10 @@ Yii Framework 2 Change Log 2.0.12 under development -------------------------- +- Enh #13820: Add new HTTP status code 451 (yyxx9988) +- Bug #5442: Fixed problem on load fixture dependencies with database related tests (leandrogehlen) +- Bug #13671: Fixed error handler trace to work correctly with XDebug (samdark) +- Bug #13657: Fixed `yii\helpers\StringHelper::truncateHtml()` skip extra tags at the end (sam002) - Bug #4408: Add support for unicode word characters and `+` character in attribute names (sammousa, kmindi) - Bug #7946: Fixed a bug when the `form` attribute was not propagated to the hidden input of the checkbox (Kolyunya) - Bug #8120: Fixes LIKE special characters escaping for Cubrid/MSSQL/Oracle/SQLite in `yii\db\QueryBuilder` (sergeymakinen) @@ -83,6 +87,9 @@ Yii Framework 2 Change Log - Enh #13883: `yii\data\SqlDataProvider` now provides automatic fallback for the case when `totalCount` is not specified (SamMousa) - Enh #13911: Significantly enhanced MSSQL schema reading performance (paulzi, WebdevMerlion) - Enh #13945: Removed Courier New from error page fonts list since it looks bad on Linux (samdark) +- Bug #13961: RBAC Rules: PostgreSQL: PHP Warning "unserialize() expects parameter 1 to be string, resource given" was fixed (vsguts) +- Enh #13976: Disabled IPv6 check on `\yii\validators\IpValidator` as it turns out it is not needed for inet_* methods to work (mikk150) +- Enh #13981: `yii\caching\Cache::getOrSet()` now supports both `Closure` and `callable` (silverfire) - Enh #13963: Added tests for `yii\behaviors\TimestampBehavior` (vladis84) - Enh #13976: Disabled IPv6 check on `\yii\validators\IpValidator` as it turns out it is not needed for `inet_*` methods to work (mikk150) - Enh #13981: `yii\caching\Cache::getOrSet()` now supports both `Closure` and `callable` (silverfire) @@ -1843,4 +1850,3 @@ Yii Framework 2 Change Log - [Smarty View Renderer](https://github.com/yiisoft/yii2-smarty) - [Twig View Renderer](https://github.com/yiisoft/yii2-twig) - diff --git a/framework/test/ActiveFixture.php b/framework/test/ActiveFixture.php index 6bdea5f099..eed2c97ed1 100644 --- a/framework/test/ActiveFixture.php +++ b/framework/test/ActiveFixture.php @@ -75,7 +75,6 @@ class ActiveFixture extends BaseActiveFixture */ public function load() { - $this->resetTable(); $this->data = []; $table = $this->getTableSchema(); foreach ($this->getData() as $alias => $row) { @@ -106,6 +105,15 @@ class ActiveFixture extends BaseActiveFixture } } + /** + * @inheritdoc + */ + public function unload() + { + $this->resetTable(); + parent::unload(); + } + /** * Removes all existing data from the specified table and resets sequence number to 1 (if any). * This method is called before populating fixture data into the table associated with this fixture. diff --git a/framework/test/FixtureTrait.php b/framework/test/FixtureTrait.php index 3e1c9da012..c1abef21d1 100644 --- a/framework/test/FixtureTrait.php +++ b/framework/test/FixtureTrait.php @@ -124,6 +124,16 @@ trait FixtureTrait } } + /** + * Initialize the fixtures + * @since 2.0.12 + */ + public function initFixtures() + { + $this->unloadFixtures(); + $this->loadFixtures(); + } + /** * Returns the fixture objects as specified in [[globalFixtures()]] and [[fixtures()]]. * @return Fixture[] the loaded fixtures for the current test case diff --git a/tests/data/mysql.sql b/tests/data/mysql.sql index 060c40cc1c..83afc85aec 100644 --- a/tests/data/mysql.sql +++ b/tests/data/mysql.sql @@ -42,7 +42,8 @@ CREATE TABLE `customer` ( `address` text, `status` int (11) DEFAULT 0, `profile_id` int(11), - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + CONSTRAINT `FK_customer_profile_id` FOREIGN KEY (`profile_id`) REFERENCES `profile` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `category` ( diff --git a/tests/framework/test/ActiveFixtureTest.php b/tests/framework/test/ActiveFixtureTest.php index 1947a985ea..8955ecd4fc 100644 --- a/tests/framework/test/ActiveFixtureTest.php +++ b/tests/framework/test/ActiveFixtureTest.php @@ -9,9 +9,18 @@ use yii\test\InitDbFixture; use yiiunit\data\ar\Customer; use yiiunit\framework\db\DatabaseTestCase; +class ProfileFixture extends ActiveFixture +{ + public $modelClass = 'yiiunit\data\ar\Profile'; +} + class CustomerFixture extends ActiveFixture { public $modelClass = 'yiiunit\data\ar\Customer'; + + public $depends = [ + 'yiiunit\framework\test\ProfileFixture' + ]; } class MyDbTestCase @@ -20,8 +29,7 @@ class MyDbTestCase public function setUp() { - $this->unloadFixtures(); - $this->loadFixtures(); + $this->initFixtures(); } public function tearDown() @@ -34,17 +42,15 @@ class MyDbTestCase 'customers' => CustomerFixture::className(), ]; } - - public function globalFixtures() - { - return [ - InitDbFixture::className(), - ]; - } } -abstract class ActiveFixtureTest extends DatabaseTestCase +/** + * @group fixture + */ +class ActiveFixtureTest extends DatabaseTestCase { + protected $driverName = 'mysql'; + public function setUp() { parent::setUp(); @@ -63,12 +69,17 @@ abstract class ActiveFixtureTest extends DatabaseTestCase $test = new MyDbTestCase(); $test->setUp(); $fixture = $test->getFixture('customers'); + $this->assertEquals(CustomerFixture::className(), get_class($fixture)); $this->assertCount(2, $fixture); $this->assertEquals(1, $fixture['customer1']['id']); $this->assertEquals('customer1@example.com', $fixture['customer1']['email']); + $this->assertEquals(1, $fixture['customer1']['profile_id']); + $this->assertEquals(2, $fixture['customer2']['id']); $this->assertEquals('customer2@example.com', $fixture['customer2']['email']); + $this->assertEquals(2, $fixture['customer2']['profile_id']); + $test->tearDown(); } @@ -77,11 +88,16 @@ abstract class ActiveFixtureTest extends DatabaseTestCase $test = new MyDbTestCase(); $test->setUp(); $fixture = $test->getFixture('customers'); + $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(1, $fixture['customer1']['profile_id']); + $this->assertEquals(2, $fixture->getModel('customer2')->id); $this->assertEquals('customer2@example.com', $fixture->getModel('customer2')->email); + $this->assertEquals(2, $fixture['customer2']['profile_id']); + $test->tearDown(); } } diff --git a/tests/framework/test/ArrayFixtureTest.php b/tests/framework/test/ArrayFixtureTest.php index 994dd9fcb3..9d6061e68a 100644 --- a/tests/framework/test/ArrayFixtureTest.php +++ b/tests/framework/test/ArrayFixtureTest.php @@ -11,6 +11,9 @@ namespace yiiunit\framework\test; use yiiunit\TestCase; use yii\test\ArrayFixture; +/** + * @group fixture + */ class ArrayFixtureTest extends TestCase { diff --git a/tests/framework/test/FixtureTest.php b/tests/framework/test/FixtureTest.php index 9284d99243..9e06ac8701 100644 --- a/tests/framework/test/FixtureTest.php +++ b/tests/framework/test/FixtureTest.php @@ -11,6 +11,9 @@ use yii\test\Fixture; use yii\test\FixtureTrait; use yiiunit\TestCase; +/** + * @group fixture + */ class Fixture1 extends Fixture { public $depends = ['yiiunit\framework\test\Fixture2']; diff --git a/tests/framework/test/data/customer.php b/tests/framework/test/data/customer.php index c5ccd4b384..2eb7e6cc75 100644 --- a/tests/framework/test/data/customer.php +++ b/tests/framework/test/data/customer.php @@ -6,11 +6,13 @@ return [ 'name' => 'customer1', 'address' => 'address1', 'status' => 1, + 'profile_id' => 1 ], 'customer2' => [ 'email' => 'customer2@example.com', 'name' => 'customer2', 'address' => 'address2', 'status' => 2, + 'profile_id' => 2 ], ]; diff --git a/tests/framework/test/data/profile.php b/tests/framework/test/data/profile.php new file mode 100644 index 0000000000..91ebe4c07b --- /dev/null +++ b/tests/framework/test/data/profile.php @@ -0,0 +1,12 @@ + [ + 'id' => 1, + 'description' => 'profile 1', + ], + 'profile2' => [ + 'id' => 2, + 'description' => 'profile 2', + ], +];