Commit 0702a091 by JacekK

Merge branch 'master' of git://github.com/yiisoft/yii2 into guide-not-found-links

parents edc3d2b1 f7a5c29e
...@@ -31,7 +31,16 @@ install: ...@@ -31,7 +31,16 @@ install:
- composer install --dev --prefer-dist -d apps/basic - composer install --dev --prefer-dist -d apps/basic
- cd apps/basic && composer require --dev codeception/codeception:1.8.*@dev codeception/specify:* codeception/verify:* - cd apps/basic && composer require --dev codeception/codeception:1.8.*@dev codeception/specify:* codeception/verify:*
- php vendor/bin/codecept build && cd ../.. - php vendor/bin/codecept build && cd ../..
- cd apps && php -S localhost:8080 & # advanced application:
- composer install --dev --prefer-dist -d apps/advanced
- cd apps/advanced && composer require --dev codeception/codeception:1.8.*@dev codeception/specify:* codeception/verify:*
- ./init --env=Development
- sed -i s/root/travis/ common/config/main-local.php
- cd backend && php ../vendor/bin/codecept build
- cd ../common && php ../vendor/bin/codecept build
- cd ../frontend && php ../vendor/bin/codecept build && cd ../../..
# boot server
- cd apps && php -S localhost:8080 > /dev/null 2>&1 &
before_script: before_script:
- echo 'elasticsearch version ' && curl http://localhost:9200/ - echo 'elasticsearch version ' && curl http://localhost:9200/
...@@ -39,13 +48,21 @@ before_script: ...@@ -39,13 +48,21 @@ before_script:
- psql -U postgres -c 'CREATE DATABASE yiitest;'; - psql -U postgres -c 'CREATE DATABASE yiitest;';
- tests/unit/data/travis/sphinx-setup.sh - tests/unit/data/travis/sphinx-setup.sh
- mongo yii2test --eval 'db.addUser("travis", "test");' - mongo yii2test --eval 'db.addUser("travis", "test");'
- mysql -e 'CREATE DATABASE yii2_advanced_acceptance;';
- mysql -e 'CREATE DATABASE yii2_advanced_functional;';
- mysql -e 'CREATE DATABASE yii2_advanced_unit;';
- cd apps/advanced/frontend/tests/acceptance && php yii migrate --interactive=0
- cd ../functional && php yii migrate --interactive=0
- cd ../unit && php yii migrate --interactive=0 && cd ../../../../..
script: script:
- vendor/bin/phpunit --verbose --coverage-clover=coverage.clover --exclude-group mssql,oci,wincache,xcache,zenddata - vendor/bin/phpunit --verbose --coverage-clover=coverage.clover --exclude-group mssql,oci,wincache,xcache,zenddata
- cd apps/basic && php vendor/bin/codecept run - cd apps/basic && php vendor/bin/codecept run
- cd ../advanced/backend && ../vendor/bin/codecept run
- cd ../common && ../vendor/bin/codecept run
- cd ../frontend && ../vendor/bin/codecept run
after_script: after_script:
- cd ../.. - cd ../../..
- pwd
- wget https://scrutinizer-ci.com/ocular.phar - wget https://scrutinizer-ci.com/ocular.phar
- php ocular.phar code-coverage:upload --format=php-clover coverage.clover - php ocular.phar code-coverage:upload --format=php-clover coverage.clover
...@@ -111,8 +111,9 @@ To make your database up to date, you can run in needed test folder `yii migrate ...@@ -111,8 +111,9 @@ To make your database up to date, you can run in needed test folder `yii migrate
if you are starting from `frontend` tests then you should run `yii migrate` in each suite folder `acceptance`, `functional`, `unit` if you are starting from `frontend` tests then you should run `yii migrate` in each suite folder `acceptance`, `functional`, `unit`
it will upgrade your database to the last state according migrations. it will upgrade your database to the last state according migrations.
To be able to run acceptance tests you should configure your server to point doc_root to your new created application. For example if we To be able to run acceptance tests you need a running webserver. For this you can use the php bultin server and run it in the directory where your main project folder is located. For example if your application is located in `/www/advanced` all you need to is:
use php builtin server, then all that is needed to do is run `php -S 127.0.0.1:8080` in main project directory - directory that contains `frontend`, `backend`, `common`, `console` directories. `cd /www` and then `php -S 127.0.0.1:8080` because the default configuration of acceptance tests expects the url of the application to be `/advanced/`.
If you already have a server configured or your application is not located in a folder called `advanced`, you may need to adjust the `TEST_ENTRY_URL` in `frontend/tests/_bootstrap.php` and `backend/tests/_bootstrap.php`.
After that is done you should be able to run your tests, for example to run `frontend` tests do: After that is done you should be able to run your tests, for example to run `frontend` tests do:
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// the entry script URL (without host info) for functional and acceptance tests // the entry script URL (without host info) for functional and acceptance tests
// PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL // PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL
defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/backend/web/index-test.php'); defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/advanced/backend/web/index-test.php');
// the entry script file path for functional and acceptance tests // the entry script file path for functional and acceptance tests
defined('TEST_ENTRY_FILE') or define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php'); defined('TEST_ENTRY_FILE') or define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php');
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// the entry script URL (without host info) for functional and acceptance tests // the entry script URL (without host info) for functional and acceptance tests
// PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL // PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL
defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/frontend/web/index-test.php'); defined('TEST_ENTRY_URL') or define('TEST_ENTRY_URL', '/advanced/frontend/web/index-test.php');
// the entry script file path for functional and acceptance tests // the entry script file path for functional and acceptance tests
defined('TEST_ENTRY_FILE') or define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php'); defined('TEST_ENTRY_FILE') or define('TEST_ENTRY_FILE', dirname(__DIR__) . '/web/index-test.php');
......
...@@ -136,5 +136,23 @@ class ExampleController extends \yii\console\Controller ...@@ -136,5 +136,23 @@ class ExampleController extends \yii\console\Controller
### Exit Code ### Exit Code
Using return codes is the best practice of console application development. If command returns `0` it means everything Using exit codes is the best practice of console application development. If a command returns `0` it means
is OK. If it is a number more than zero, we have an error and integer returned is the error code. everything is OK. If it is a number greater than zero, we have an error and the number returned is the error
code that may be interpreted to find out details about the error.
For example `1` could stand generally for an unknown error and all codes above are declared for specific cases
such as input errors, missing files, and so forth.
To have your console command return with an exit code you simply return an integer in the controller action
method:
```php
public function actionIndex()
{
if (/* some problem */) {
echo "A problem occured!\n";
return 1;
}
// do something
return 0;
}
```
...@@ -12,7 +12,7 @@ Grid view supports both sorting and pagination of the data items. The sorting an ...@@ -12,7 +12,7 @@ Grid view supports both sorting and pagination of the data items. The sorting an
or normal page request. A benefit of using GridView is that when the user disables JavaScript, the sorting and pagination or normal page request. A benefit of using GridView is that when the user disables JavaScript, the sorting and pagination
automatically degrade to normal page requests and are still functioning as expected. automatically degrade to normal page requests and are still functioning as expected.
The minimal code needed to use CGridView is as follows: The minimal code needed to use GridView is as follows:
```php ```php
use yii\data\GridView; use yii\data\GridView;
...@@ -185,11 +185,6 @@ echo GridView::widget([ ...@@ -185,11 +185,6 @@ echo GridView::widget([
['class' => 'yii\grid\SerialColumn'], // <-- here ['class' => 'yii\grid\SerialColumn'], // <-- here
``` ```
TODO: rewrite these:
- https://github.com/samdark/a-guide-to-yii-grids-lists-and-data-providers/blob/master/grid-columns.md
- https://github.com/samdark/a-guide-to-yii-grids-lists-and-data-providers/pull/1
Sorting data Sorting data
------------ ------------
...@@ -198,4 +193,4 @@ Sorting data ...@@ -198,4 +193,4 @@ Sorting data
Filtering data Filtering data
-------------- --------------
- https://github.com/yiisoft/yii2/issues/1581 - https://github.com/yiisoft/yii2/issues/1581
\ No newline at end of file
...@@ -164,7 +164,7 @@ fixtures that are applied to ALL or many test cases. An example is [[yii\test\In ...@@ -164,7 +164,7 @@ fixtures that are applied to ALL or many test cases. An example is [[yii\test\In
two things: two things:
* Perform some common initialization tasks by executing a script located at `@app/tests/fixtures/initdb.php`; * Perform some common initialization tasks by executing a script located at `@app/tests/fixtures/initdb.php`;
* Disable the database integrity check before loading other DB fixtures, and re-enable it after other DB fixtures are unloead. * Disable the database integrity check before loading other DB fixtures, and re-enable it after other DB fixtures are unloaded.
Using global fixtures is similar to using non-global ones. The only difference is that you declare these fixtures Using global fixtures is similar to using non-global ones. The only difference is that you declare these fixtures
in [[yii\codeception\TestCase::globalFixtures()]] instead of `fixtures()`. When a test case loads fixtures, it will in [[yii\codeception\TestCase::globalFixtures()]] instead of `fixtures()`. When a test case loads fixtures, it will
......
...@@ -113,7 +113,7 @@ abstract class BaseController extends Controller ...@@ -113,7 +113,7 @@ abstract class BaseController extends Controller
} }
/** /**
* @inheritdoc * @param string $template
* @return BaseRenderer * @return BaseRenderer
*/ */
protected abstract function findRenderer($template); protected abstract function findRenderer($template);
......
...@@ -95,17 +95,17 @@ class BaseDoc extends Object ...@@ -95,17 +95,17 @@ class BaseDoc extends Object
} }
} }
// TODO // TODO implement
public function loadSource($reflection) // public function loadSource($reflection)
{ // {
$this->sourcePath = str_replace('\\', '/', str_replace(YII_PATH, '', $reflection->getFileName())); // $this->sourceFile;
$this->startLine = $reflection->getStartLine(); // $this->startLine;
$this->endLine = $reflection->getEndLine(); // $this->endLine;
} // }
//
public function getSourceCode() // public function getSourceCode()
{ // {
$lines = file(YII_PATH . $this->sourcePath); // $lines = file(YII_PATH . $this->sourcePath);
return implode("", array_slice($lines, $this->startLine - 1, $this->endLine - $this->startLine + 1)); // return implode("", array_slice($lines, $this->startLine - 1, $this->endLine - $this->startLine + 1));
} // }
} }
...@@ -299,7 +299,8 @@ class Context extends Component ...@@ -299,7 +299,8 @@ class Context extends Component
/** /**
* @param ClassDoc $classA * @param ClassDoc $classA
* @param ClassDoc $classB * @param ClassDoc|string $classB
* @return boolean
*/ */
protected function isSubclassOf($classA, $classB) protected function isSubclassOf($classA, $classB)
{ {
......
...@@ -118,7 +118,7 @@ class SideNavWidget extends \yii\bootstrap\Widget ...@@ -118,7 +118,7 @@ class SideNavWidget extends \yii\bootstrap\Widget
/** /**
* Renders a widget's item. * Renders a widget's item.
* @param string|array $item the item to render. * @param string|array $item the item to render.
* @param bool $collapsed whether to collapse item if not active * @param boolean $collapsed whether to collapse item if not active
* @throws \yii\base\InvalidConfigException * @throws \yii\base\InvalidConfigException
* @return string the rendering result. * @return string the rendering result.
* @throws InvalidConfigException if label is not defined * @throws InvalidConfigException if label is not defined
......
<?php <?php
namespace yiiunit; namespace yiiunit;
use yii\helpers\ArrayHelper; use yii\helpers\ArrayHelper;
/** /**
......
...@@ -48,7 +48,7 @@ class Customer extends ActiveRecord ...@@ -48,7 +48,7 @@ class Customer extends ActiveRecord
{ {
/** @var ActiveQuery $rel */ /** @var ActiveQuery $rel */
$rel = $this->hasMany(Item::className(), ['id' => 'item_id']); $rel = $this->hasMany(Item::className(), ['id' => 'item_id']);
return $rel->viaTable('tbl_order_item', ['order_id' => 'id'], function($q) { return $rel->viaTable('tbl_order_item', ['order_id' => 'id'], function ($q) {
/** @var ActiveQuery $q */ /** @var ActiveQuery $q */
$q->viaTable('tbl_order', ['customer_id' => 'id']); $q->viaTable('tbl_order', ['customer_id' => 'id']);
})->orderBy('id'); })->orderBy('id');
......
<?php <?php
namespace yiiunit\data\ar; namespace yiiunit\data\ar;
use yii\db\ActiveQuery; use yii\db\ActiveQuery;
/** /**
...@@ -13,4 +15,3 @@ class CustomerQuery extends ActiveQuery ...@@ -13,4 +15,3 @@ class CustomerQuery extends ActiveQuery
return $this; return $this;
} }
} }
\ No newline at end of file
...@@ -18,5 +18,4 @@ class Profile extends ActiveRecord ...@@ -18,5 +18,4 @@ class Profile extends ActiveRecord
{ {
return 'tbl_profile'; return 'tbl_profile';
} }
}
}
\ No newline at end of file
...@@ -45,6 +45,7 @@ class Customer extends ActiveRecord ...@@ -45,6 +45,7 @@ class Customer extends ActiveRecord
/** /**
* sets up the index for this record * sets up the index for this record
* @param Command $command * @param Command $command
* @param boolean $statusIsBoolean
*/ */
public static function setUpMapping($command, $statusIsBoolean = false) public static function setUpMapping($command, $statusIsBoolean = false)
{ {
......
<?php <?php
namespace yiiunit\data\ar\elasticsearch; namespace yiiunit\data\ar\elasticsearch;
use yii\elasticsearch\ActiveQuery; use yii\elasticsearch\ActiveQuery;
/** /**
...@@ -13,4 +15,3 @@ class CustomerQuery extends ActiveQuery ...@@ -13,4 +15,3 @@ class CustomerQuery extends ActiveQuery
return $this; return $this;
} }
} }
\ No newline at end of file
<?php <?php
namespace yiiunit\data\ar\elasticsearch; namespace yiiunit\data\ar\elasticsearch;
use yii\elasticsearch\Command; use yii\elasticsearch\Command;
/** /**
......
<?php <?php
namespace yiiunit\data\ar\elasticsearch; namespace yiiunit\data\ar\elasticsearch;
use yii\elasticsearch\Command; use yii\elasticsearch\Command;
/** /**
......
<?php <?php
namespace yiiunit\data\ar\elasticsearch; namespace yiiunit\data\ar\elasticsearch;
use yii\elasticsearch\Command; use yii\elasticsearch\Command;
/** /**
......
...@@ -13,4 +13,4 @@ class ActiveRecord extends \yii\mongodb\ActiveRecord ...@@ -13,4 +13,4 @@ class ActiveRecord extends \yii\mongodb\ActiveRecord
{ {
return self::$db; return self::$db;
} }
} }
\ No newline at end of file
...@@ -30,4 +30,4 @@ class Customer extends ActiveRecord ...@@ -30,4 +30,4 @@ class Customer extends ActiveRecord
$config['modelClass'] = get_called_class(); $config['modelClass'] = get_called_class();
return new CustomerQuery($config); return new CustomerQuery($config);
} }
} }
\ No newline at end of file
...@@ -24,4 +24,4 @@ class CustomerOrder extends ActiveRecord ...@@ -24,4 +24,4 @@ class CustomerOrder extends ActiveRecord
{ {
return $this->hasOne(Customer::className(), ['_id' => 'customer_id']); return $this->hasOne(Customer::className(), ['_id' => 'customer_id']);
} }
} }
\ No newline at end of file
<?php <?php
namespace yiiunit\data\ar\mongodb; namespace yiiunit\data\ar\mongodb;
use yii\mongodb\ActiveQuery; use yii\mongodb\ActiveQuery;
/** /**
...@@ -13,4 +15,3 @@ class CustomerQuery extends ActiveQuery ...@@ -13,4 +15,3 @@ class CustomerQuery extends ActiveQuery
return $this; return $this;
} }
} }
\ No newline at end of file
...@@ -13,4 +13,4 @@ class ActiveRecord extends \yii\mongodb\file\ActiveRecord ...@@ -13,4 +13,4 @@ class ActiveRecord extends \yii\mongodb\file\ActiveRecord
{ {
return self::$db; return self::$db;
} }
} }
\ No newline at end of file
...@@ -25,4 +25,4 @@ class CustomerFile extends ActiveRecord ...@@ -25,4 +25,4 @@ class CustomerFile extends ActiveRecord
$config['modelClass'] = get_called_class(); $config['modelClass'] = get_called_class();
return new CustomerFileQuery($config); return new CustomerFileQuery($config);
} }
} }
\ No newline at end of file
<?php <?php
namespace yiiunit\data\ar\mongodb\file; namespace yiiunit\data\ar\mongodb\file;
use yii\mongodb\file\ActiveQuery; use yii\mongodb\file\ActiveQuery;
/** /**
...@@ -13,4 +15,3 @@ class CustomerFileQuery extends ActiveQuery ...@@ -13,4 +15,3 @@ class CustomerFileQuery extends ActiveQuery
return $this; return $this;
} }
} }
\ No newline at end of file
...@@ -21,4 +21,4 @@ class ActiveRecord extends \yii\redis\ActiveRecord ...@@ -21,4 +21,4 @@ class ActiveRecord extends \yii\redis\ActiveRecord
{ {
return self::$db; return self::$db;
} }
} }
\ No newline at end of file
<?php <?php
namespace yiiunit\data\ar\redis; namespace yiiunit\data\ar\redis;
use yii\redis\ActiveQuery; use yii\redis\ActiveQuery;
/** /**
...@@ -13,4 +15,3 @@ class CustomerQuery extends ActiveQuery ...@@ -13,4 +15,3 @@ class CustomerQuery extends ActiveQuery
return $this; return $this;
} }
} }
\ No newline at end of file
...@@ -8,4 +8,4 @@ class Item extends ActiveRecord ...@@ -8,4 +8,4 @@ class Item extends ActiveRecord
{ {
return ['id', 'name', 'category_id']; return ['id', 'name', 'category_id'];
} }
} }
\ No newline at end of file
...@@ -22,7 +22,7 @@ class Order extends ActiveRecord ...@@ -22,7 +22,7 @@ class Order extends ActiveRecord
public function getItems() public function getItems()
{ {
return $this->hasMany(Item::className(), ['id' => 'item_id']) return $this->hasMany(Item::className(), ['id' => 'item_id'])
->via('orderItems', function($q) { ->via('orderItems', function ($q) {
// additional query configuration // additional query configuration
}); });
} }
......
...@@ -23,4 +23,4 @@ class OrderItem extends ActiveRecord ...@@ -23,4 +23,4 @@ class OrderItem extends ActiveRecord
{ {
return $this->hasOne(Item::className(), ['id' => 'item_id']); return $this->hasOne(Item::className(), ['id' => 'item_id']);
} }
} }
\ No newline at end of file
...@@ -13,4 +13,4 @@ class ActiveRecord extends \yii\sphinx\ActiveRecord ...@@ -13,4 +13,4 @@ class ActiveRecord extends \yii\sphinx\ActiveRecord
{ {
return self::$db; return self::$db;
} }
} }
\ No newline at end of file
...@@ -22,4 +22,4 @@ class ArticleDb extends ActiveRecordDb ...@@ -22,4 +22,4 @@ class ArticleDb extends ActiveRecordDb
]; ];
return new ActiveQuery($config); return new ActiveQuery($config);
} }
} }
\ No newline at end of file
...@@ -30,4 +30,4 @@ class ArticleIndex extends ActiveRecord ...@@ -30,4 +30,4 @@ class ArticleIndex extends ActiveRecord
$config['modelClass'] = get_called_class(); $config['modelClass'] = get_called_class();
return new ArticleIndexQuery($config); return new ArticleIndexQuery($config);
} }
} }
\ No newline at end of file
<?php <?php
namespace yiiunit\data\ar\sphinx; namespace yiiunit\data\ar\sphinx;
use yii\sphinx\ActiveQuery; use yii\sphinx\ActiveQuery;
/** /**
...@@ -13,4 +15,3 @@ class ArticleIndexQuery extends ActiveQuery ...@@ -13,4 +15,3 @@ class ArticleIndexQuery extends ActiveQuery
return $this; return $this;
} }
} }
\ No newline at end of file
...@@ -10,4 +10,4 @@ class ItemDb extends ActiveRecordDb ...@@ -10,4 +10,4 @@ class ItemDb extends ActiveRecordDb
{ {
return 'yii2_test_item'; return 'yii2_test_item';
} }
} }
\ No newline at end of file
...@@ -8,4 +8,4 @@ class ItemIndex extends ActiveRecord ...@@ -8,4 +8,4 @@ class ItemIndex extends ActiveRecord
{ {
return 'yii2_test_item_index'; return 'yii2_test_item_index';
} }
} }
\ No newline at end of file
...@@ -8,4 +8,4 @@ class RuntimeIndex extends ActiveRecord ...@@ -8,4 +8,4 @@ class RuntimeIndex extends ActiveRecord
{ {
return 'yii2_test_rt_index'; return 'yii2_test_rt_index';
} }
} }
\ No newline at end of file
...@@ -9,4 +9,4 @@ class TagDb extends ActiveRecordDb ...@@ -9,4 +9,4 @@ class TagDb extends ActiveRecordDb
{ {
return 'yii2_test_tag'; return 'yii2_test_tag';
} }
} }
\ No newline at end of file
...@@ -6,4 +6,4 @@ return [ ...@@ -6,4 +6,4 @@ return [
'The dog runs fast.' => 'Der Hund rennt schnell.', 'The dog runs fast.' => 'Der Hund rennt schnell.',
'His speed is about {n} km/h.' => 'Seine Geschwindigkeit beträgt {n} km/h.', 'His speed is about {n} km/h.' => 'Seine Geschwindigkeit beträgt {n} km/h.',
'His name is {name} and his speed is about {n, number} km/h.' => 'Er heißt {name} und ist {n, number} km/h schnell.', 'His name is {name} and his speed is about {n, number} km/h.' => 'Er heißt {name} und ist {n, number} km/h schnell.',
]; ];
\ No newline at end of file
...@@ -4,4 +4,4 @@ ...@@ -4,4 +4,4 @@
*/ */
return [ return [
'Hello world!' => 'Hallo Welt!', 'Hello world!' => 'Hallo Welt!',
]; ];
\ No newline at end of file
...@@ -4,4 +4,4 @@ ...@@ -4,4 +4,4 @@
*/ */
return [ return [
'The dog runs fast.' => 'Der Hund rennt schell.', 'The dog runs fast.' => 'Der Hund rennt schell.',
]; ];
\ No newline at end of file
...@@ -4,4 +4,4 @@ ...@@ -4,4 +4,4 @@
*/ */
return [ return [
'The dog runs fast.' => 'Собака бегает быстро.', 'The dog runs fast.' => 'Собака бегает быстро.',
]; ];
\ No newline at end of file
...@@ -41,4 +41,4 @@ class TestValidator extends Validator ...@@ -41,4 +41,4 @@ class TestValidator extends Validator
{ {
$this->_setErrorOnValidateAttribute = true; $this->_setErrorOnValidateAttribute = true;
} }
} }
\ No newline at end of file
...@@ -18,4 +18,4 @@ class ValidatorTestMainModel extends ActiveRecord ...@@ -18,4 +18,4 @@ class ValidatorTestMainModel extends ActiveRecord
{ {
return $this->hasMany(ValidatorTestRefModel::className(), ['ref' => 'id']); return $this->hasMany(ValidatorTestRefModel::className(), ['ref' => 'id']);
} }
} }
\ No newline at end of file
...@@ -20,4 +20,4 @@ class ValidatorTestRefModel extends ActiveRecord ...@@ -20,4 +20,4 @@ class ValidatorTestRefModel extends ActiveRecord
{ {
return $this->hasOne(ValidatorTestMainModel::className(), ['id' => 'ref']); return $this->hasOne(ValidatorTestMainModel::className(), ['id' => 'ref']);
} }
} }
\ No newline at end of file
...@@ -65,4 +65,4 @@ class AuthActionTest extends TestCase ...@@ -65,4 +65,4 @@ class AuthActionTest extends TestCase
$this->assertContains($url, $response->content); $this->assertContains($url, $response->content);
} }
} }
\ No newline at end of file
...@@ -79,4 +79,4 @@ class BaseClientTest extends TestCase ...@@ -79,4 +79,4 @@ class BaseClientTest extends TestCase
class Client extends BaseClient class Client extends BaseClient
{ {
} }
\ No newline at end of file
...@@ -81,4 +81,4 @@ class CollectionTest extends TestCase ...@@ -81,4 +81,4 @@ class CollectionTest extends TestCase
class TestClient extends BaseClient class TestClient extends BaseClient
{ {
} }
\ No newline at end of file
...@@ -100,7 +100,8 @@ class OAuth1Test extends TestCase ...@@ -100,7 +100,8 @@ class OAuth1Test extends TestCase
$this->assertEquals($expectedAuthorizationHeader, $authorizationHeader); $this->assertEquals($expectedAuthorizationHeader, $authorizationHeader);
} }
public function testBuildAuthUrl() { public function testBuildAuthUrl()
{
$oauthClient = new OAuth1(); $oauthClient = new OAuth1();
$authUrl = 'http://test.auth.url'; $authUrl = 'http://test.auth.url';
$oauthClient->authUrl = $authUrl; $oauthClient->authUrl = $authUrl;
......
...@@ -58,4 +58,4 @@ class OpenIdTest extends TestCase ...@@ -58,4 +58,4 @@ class OpenIdTest extends TestCase
$this->assertArrayHasKey('ax', $info); $this->assertArrayHasKey('ax', $info);
$this->assertArrayHasKey('sreg', $info); $this->assertArrayHasKey('sreg', $info);
} }
} }
\ No newline at end of file
...@@ -130,4 +130,4 @@ class TokenTest extends TestCase ...@@ -130,4 +130,4 @@ class TokenTest extends TestCase
$oauthToken->createTimestamp = $oauthToken->createTimestamp - ($expireDuration +1); $oauthToken->createTimestamp = $oauthToken->createTimestamp - ($expireDuration +1);
$this->assertFalse($oauthToken->getIsValid(), 'Expired token is valid!'); $this->assertFalse($oauthToken->getIsValid(), 'Expired token is valid!');
} }
} }
\ No newline at end of file
...@@ -47,4 +47,4 @@ class BaseMethodTest extends TestCase ...@@ -47,4 +47,4 @@ class BaseMethodTest extends TestCase
$generatedSignature = $signatureMethod->generateSignature($baseString, $key); $generatedSignature = $signatureMethod->generateSignature($baseString, $key);
$this->assertTrue($signatureMethod->verify($generatedSignature, $baseString, $key), 'Generated signature is invalid!'); $this->assertTrue($signatureMethod->verify($generatedSignature, $baseString, $key), 'Generated signature is invalid!');
} }
} }
\ No newline at end of file
...@@ -17,4 +17,4 @@ class HmacSha1Test extends TestCase ...@@ -17,4 +17,4 @@ class HmacSha1Test extends TestCase
$signature = $signatureMethod->generateSignature($baseString, $key); $signature = $signatureMethod->generateSignature($baseString, $key);
$this->assertNotEmpty($signature, 'Unable to generate signature!'); $this->assertNotEmpty($signature, 'Unable to generate signature!');
} }
} }
\ No newline at end of file
...@@ -17,4 +17,4 @@ class PlainTextTest extends TestCase ...@@ -17,4 +17,4 @@ class PlainTextTest extends TestCase
$signature = $signatureMethod->generateSignature($baseString, $key); $signature = $signatureMethod->generateSignature($baseString, $key);
$this->assertNotEmpty($signature, 'Unable to generate signature!'); $this->assertNotEmpty($signature, 'Unable to generate signature!');
} }
} }
\ No newline at end of file
...@@ -107,4 +107,4 @@ IyvuagHJR379p4dePwJBAMCkYSATGdhYbeDfySWUro5K0QAvBNj8FuNJQ4rqUxz8 ...@@ -107,4 +107,4 @@ IyvuagHJR379p4dePwJBAMCkYSATGdhYbeDfySWUro5K0QAvBNj8FuNJQ4rqUxz8
$signatureMethod->publicCertificateFile = $certificateFileName; $signatureMethod->publicCertificateFile = $certificateFileName;
$this->assertEquals(file_get_contents($certificateFileName), $signatureMethod->getPublicCertificate(), 'Unable to fetch public certificate from file!'); $this->assertEquals(file_get_contents($certificateFileName), $signatureMethod->getPublicCertificate(), 'Unable to fetch public certificate from file!');
} }
} }
\ No newline at end of file
...@@ -20,15 +20,45 @@ class ActiveRecordTest extends ElasticSearchTestCase ...@@ -20,15 +20,45 @@ class ActiveRecordTest extends ElasticSearchTestCase
{ {
use ActiveRecordTestTrait; use ActiveRecordTestTrait;
public function callCustomerFind($q = null) { return Customer::find($q); } public function callCustomerFind($q = null)
public function callOrderFind($q = null) { return Order::find($q); } {
public function callOrderItemFind($q = null) { return OrderItem::find($q); } return Customer::find($q);
public function callItemFind($q = null) { return Item::find($q); } }
public function callOrderFind($q = null)
{
return Order::find($q);
}
public function callOrderItemFind($q = null)
{
return OrderItem::find($q);
}
public function getCustomerClass() { return Customer::className(); } public function callItemFind($q = null)
public function getItemClass() { return Item::className(); } {
public function getOrderClass() { return Order::className(); } return Item::find($q);
public function getOrderItemClass() { return OrderItem::className(); } }
public function getCustomerClass()
{
return Customer::className();
}
public function getItemClass()
{
return Item::className();
}
public function getOrderClass()
{
return Order::className();
}
public function getOrderItemClass()
{
return OrderItem::className();
}
/** /**
* can be overridden to do things after save() * can be overridden to do things after save()
...@@ -224,7 +254,7 @@ class ActiveRecordTest extends ElasticSearchTestCase ...@@ -224,7 +254,7 @@ class ActiveRecordTest extends ElasticSearchTestCase
$records = Customer::mget([5]); $records = Customer::mget([5]);
$this->assertEquals(0, count($records)); $this->assertEquals(0, count($records));
$records = Customer::mget([1,3,5]); $records = Customer::mget([1, 3, 5]);
$this->assertEquals(2, count($records)); $this->assertEquals(2, count($records));
$this->assertInstanceOf(Customer::className(), $records[0]); $this->assertInstanceOf(Customer::className(), $records[0]);
$this->assertInstanceOf(Customer::className(), $records[1]); $this->assertInstanceOf(Customer::className(), $records[1]);
...@@ -501,7 +531,7 @@ class ActiveRecordTest extends ElasticSearchTestCase ...@@ -501,7 +531,7 @@ class ActiveRecordTest extends ElasticSearchTestCase
$customerClass = $this->getCustomerClass(); $customerClass = $this->getCustomerClass();
$afterFindCalls = []; $afterFindCalls = [];
Event::on(BaseActiveRecord::className(), BaseActiveRecord::EVENT_AFTER_FIND, function($event) use (&$afterFindCalls) { Event::on(BaseActiveRecord::className(), BaseActiveRecord::EVENT_AFTER_FIND, function ($event) use (&$afterFindCalls) {
/** @var BaseActiveRecord $ar */ /** @var BaseActiveRecord $ar */
$ar = $event->sender; $ar = $event->sender;
$afterFindCalls[] = [get_class($ar), $ar->getIsNewRecord(), $ar->getPrimaryKey(), $ar->isRelationPopulated('orders')]; $afterFindCalls[] = [get_class($ar), $ar->getIsNewRecord(), $ar->getPrimaryKey(), $ar->isRelationPopulated('orders')];
...@@ -523,6 +553,5 @@ class ActiveRecordTest extends ElasticSearchTestCase ...@@ -523,6 +553,5 @@ class ActiveRecordTest extends ElasticSearchTestCase
Event::off(BaseActiveRecord::className(), BaseActiveRecord::EVENT_AFTER_FIND); Event::off(BaseActiveRecord::className(), BaseActiveRecord::EVENT_AFTER_FIND);
} }
// TODO test AR with not mapped PK // TODO test AR with not mapped PK
} }
...@@ -24,5 +24,4 @@ class ElasticSearchConnectionTest extends ElasticSearchTestCase ...@@ -24,5 +24,4 @@ class ElasticSearchConnectionTest extends ElasticSearchTestCase
$this->assertArrayHasKey('version', reset($connection->nodes)); $this->assertArrayHasKey('version', reset($connection->nodes));
$this->assertArrayHasKey('http_address', reset($connection->nodes)); $this->assertArrayHasKey('http_address', reset($connection->nodes));
} }
}
}
\ No newline at end of file
...@@ -74,4 +74,3 @@ class QueryBuilderTest extends ElasticSearchTestCase ...@@ -74,4 +74,3 @@ class QueryBuilderTest extends ElasticSearchTestCase
$this->assertEquals(3, $result['hits']['total']); $this->assertEquals(3, $result['hits']['total']);
} }
} }
...@@ -26,5 +26,4 @@ class ImageGdTest extends AbstractImageTest ...@@ -26,5 +26,4 @@ class ImageGdTest extends AbstractImageTest
$infos = gd_info(); $infos = gd_info();
return isset($infos['FreeType Support']) ? $infos['FreeType Support'] : false; return isset($infos['FreeType Support']) ? $infos['FreeType Support'] : false;
} }
} }
...@@ -26,5 +26,4 @@ class ImageGmagickTest extends AbstractImageTest ...@@ -26,5 +26,4 @@ class ImageGmagickTest extends AbstractImageTest
{ {
return true; return true;
} }
} }
...@@ -26,5 +26,4 @@ class ImageImagickTest extends AbstractImageTest ...@@ -26,5 +26,4 @@ class ImageImagickTest extends AbstractImageTest
{ {
return true; return true;
} }
} }
...@@ -88,4 +88,4 @@ class ActiveDataProviderTest extends MongoDbTestCase ...@@ -88,4 +88,4 @@ class ActiveDataProviderTest extends MongoDbTestCase
$models = $provider->getModels(); $models = $provider->getModels();
$this->assertEquals(5, count($models)); $this->assertEquals(5, count($models));
} }
} }
\ No newline at end of file
...@@ -263,4 +263,4 @@ class ActiveRecordTest extends MongoDbTestCase ...@@ -263,4 +263,4 @@ class ActiveRecordTest extends MongoDbTestCase
$this->assertNotEmpty($rowRefreshed); $this->assertNotEmpty($rowRefreshed);
$this->assertEquals(7, $rowRefreshed->status); $this->assertEquals(7, $rowRefreshed->status);
} }
} }
\ No newline at end of file
...@@ -132,4 +132,4 @@ class CacheTest extends MongoDbTestCase ...@@ -132,4 +132,4 @@ class CacheTest extends MongoDbTestCase
$this->assertEquals(false, $cache->get($key), 'Expired key value returned!'); $this->assertEquals(false, $cache->get($key), 'Expired key value returned!');
} }
} }
\ No newline at end of file
...@@ -463,4 +463,4 @@ class CollectionTest extends MongoDbTestCase ...@@ -463,4 +463,4 @@ class CollectionTest extends MongoDbTestCase
$this->assertTrue($id instanceof \MongoId); $this->assertTrue($id instanceof \MongoId);
$this->assertNotEmpty($id->__toString()); $this->assertNotEmpty($id->__toString());
} }
} }
\ No newline at end of file
...@@ -116,4 +116,4 @@ class ConnectionTest extends MongoDbTestCase ...@@ -116,4 +116,4 @@ class ConnectionTest extends MongoDbTestCase
$collection2 = $connection->getFileCollection('testfs', true); $collection2 = $connection->getFileCollection('testfs', true);
$this->assertFalse($collection === $collection2); $this->assertFalse($collection === $collection2);
} }
} }
\ No newline at end of file
...@@ -67,4 +67,4 @@ class DatabaseTest extends MongoDbTestCase ...@@ -67,4 +67,4 @@ class DatabaseTest extends MongoDbTestCase
$collection = $database->createCollection('customer'); $collection = $database->createCollection('customer');
$this->assertTrue($collection instanceof \MongoCollection); $this->assertTrue($collection instanceof \MongoCollection);
} }
} }
\ No newline at end of file
...@@ -141,4 +141,4 @@ class QueryRunTest extends MongoDbTestCase ...@@ -141,4 +141,4 @@ class QueryRunTest extends MongoDbTestCase
$this->assertEquals('name1', $rows[0]['name']); $this->assertEquals('name1', $rows[0]['name']);
$this->assertEquals('name10', $rows[1]['name']); $this->assertEquals('name10', $rows[1]['name']);
} }
} }
\ No newline at end of file
...@@ -94,4 +94,4 @@ class QueryTest extends MongoDbTestCase ...@@ -94,4 +94,4 @@ class QueryTest extends MongoDbTestCase
$this->assertEquals(10, $query->limit); $this->assertEquals(10, $query->limit);
$this->assertEquals(5, $query->offset); $this->assertEquals(5, $query->offset);
} }
} }
\ No newline at end of file
...@@ -137,4 +137,4 @@ class SessionTest extends MongoDbTestCase ...@@ -137,4 +137,4 @@ class SessionTest extends MongoDbTestCase
$rows = $this->findAll($collection); $rows = $this->findAll($collection);
$this->assertCount(1, $rows, 'Wrong records count!'); $this->assertCount(1, $rows, 'Wrong records count!');
} }
} }
\ No newline at end of file
...@@ -321,4 +321,4 @@ class ActiveRecordTest extends MongoDbTestCase ...@@ -321,4 +321,4 @@ class ActiveRecordTest extends MongoDbTestCase
fclose($fileResource); fclose($fileResource);
$this->assertEquals($newFileContent, $contents); $this->assertEquals($newFileContent, $contents);
} }
} }
\ No newline at end of file
...@@ -95,4 +95,4 @@ class CollectionTest extends MongoDbTestCase ...@@ -95,4 +95,4 @@ class CollectionTest extends MongoDbTestCase
$file = $collection->get($id); $file = $collection->get($id);
$this->assertNull($file); $this->assertNull($file);
} }
} }
\ No newline at end of file
...@@ -67,4 +67,4 @@ class QueryTest extends MongoDbTestCase ...@@ -67,4 +67,4 @@ class QueryTest extends MongoDbTestCase
$file = $rows[0]; $file = $rows[0];
$this->assertEquals('name5', $file['filename']); $this->assertEquals('name5', $file['filename']);
} }
} }
\ No newline at end of file
...@@ -16,15 +16,45 @@ class ActiveRecordTest extends RedisTestCase ...@@ -16,15 +16,45 @@ class ActiveRecordTest extends RedisTestCase
{ {
use ActiveRecordTestTrait; use ActiveRecordTestTrait;
public function callCustomerFind($q = null) { return Customer::find($q); } public function callCustomerFind($q = null)
public function callOrderFind($q = null) { return Order::find($q); } {
public function callOrderItemFind($q = null) { return OrderItem::find($q); } return Customer::find($q);
public function callItemFind($q = null) { return Item::find($q); } }
public function callOrderFind($q = null)
{
return Order::find($q);
}
public function callOrderItemFind($q = null)
{
return OrderItem::find($q);
}
public function callItemFind($q = null)
{
return Item::find($q);
}
public function getCustomerClass() { return Customer::className(); } public function getCustomerClass()
public function getItemClass() { return Item::className(); } {
public function getOrderClass() { return Order::className(); } return Customer::className();
public function getOrderItemClass() { return OrderItem::className(); } }
public function getItemClass()
{
return Item::className();
}
public function getOrderClass()
{
return Order::className();
}
public function getOrderItemClass()
{
return OrderItem::className();
}
public function setUp() public function setUp()
...@@ -207,7 +237,7 @@ class ActiveRecordTest extends RedisTestCase ...@@ -207,7 +237,7 @@ class ActiveRecordTest extends RedisTestCase
public function testFindColumn() public function testFindColumn()
{ {
$this->assertEquals(['user1', 'user2', 'user3'], Customer::find()->column('name')); $this->assertEquals(['user1', 'user2', 'user3'], Customer::find()->column('name'));
// TODO $this->assertEquals(['user3', 'user2', 'user1'], Customer::find()->orderBy(['name' => SORT_DESC])->column('name')); // TODO $this->assertEquals(['user3', 'user2', 'user1'], Customer::find()->orderBy(['name' => SORT_DESC])->column('name'));
} }
// TODO test serial column incr // TODO test serial column incr
......
...@@ -97,5 +97,4 @@ class RedisCacheTest extends CacheTestCase ...@@ -97,5 +97,4 @@ class RedisCacheTest extends CacheTestCase
$cache->set($key, $data); $cache->set($key, $data);
$this->assertTrue($cache->get($key) === $data); $this->assertTrue($cache->get($key) === $data);
} }
} }
...@@ -67,4 +67,4 @@ class ViewRendererTest extends TestCase ...@@ -67,4 +67,4 @@ class ViewRendererTest extends TestCase
'baseUrl' => '/assets', 'baseUrl' => '/assets',
]); ]);
} }
} }
\ No newline at end of file
...@@ -63,4 +63,4 @@ class ActiveDataProviderTest extends SphinxTestCase ...@@ -63,4 +63,4 @@ class ActiveDataProviderTest extends SphinxTestCase
$models = $provider->getModels(); $models = $provider->getModels();
$this->assertEquals(1, count($models)); $this->assertEquals(1, count($models));
} }
} }
\ No newline at end of file
...@@ -234,4 +234,4 @@ class ActiveRecordTest extends SphinxTestCase ...@@ -234,4 +234,4 @@ class ActiveRecordTest extends SphinxTestCase
$this->assertArrayHasKey('tokenized', $rows[0], 'No tokenized keyword!'); $this->assertArrayHasKey('tokenized', $rows[0], 'No tokenized keyword!');
$this->assertArrayHasKey('normalized', $rows[0], 'No normalized keyword!'); $this->assertArrayHasKey('normalized', $rows[0], 'No normalized keyword!');
} }
} }
\ No newline at end of file
...@@ -52,4 +52,4 @@ class ColumnSchemaTest extends SphinxTestCase ...@@ -52,4 +52,4 @@ class ColumnSchemaTest extends SphinxTestCase
$columnSchema->phpType = $phpType; $columnSchema->phpType = $phpType;
$this->assertEquals($expectedResult, $columnSchema->typecast($value)); $this->assertEquals($expectedResult, $columnSchema->typecast($value));
} }
} }
\ No newline at end of file
...@@ -222,7 +222,7 @@ class CommandTest extends SphinxTestCase ...@@ -222,7 +222,7 @@ class CommandTest extends SphinxTestCase
$this->assertEquals(1, count($rows), 'No row inserted!'); $this->assertEquals(1, count($rows), 'No row inserted!');
$newTypeId = 5; $newTypeId = 5;
$command = $db->createCommand()->replace('yii2_test_rt_index',[ $command = $db->createCommand()->replace('yii2_test_rt_index', [
'type_id' => $newTypeId, 'type_id' => $newTypeId,
'category' => [3, 4], 'category' => [3, 4],
'id' => 1, 'id' => 1,
...@@ -272,7 +272,7 @@ class CommandTest extends SphinxTestCase ...@@ -272,7 +272,7 @@ class CommandTest extends SphinxTestCase
$this->assertEquals(2, count($rows), 'No rows inserted!'); $this->assertEquals(2, count($rows), 'No rows inserted!');
$newTypeId = 5; $newTypeId = 5;
$command = $db->createCommand()->replace('yii2_test_rt_index',[ $command = $db->createCommand()->replace('yii2_test_rt_index', [
'type_id' => $newTypeId, 'type_id' => $newTypeId,
'id' => 1, 'id' => 1,
]); ]);
...@@ -406,4 +406,4 @@ class CommandTest extends SphinxTestCase ...@@ -406,4 +406,4 @@ class CommandTest extends SphinxTestCase
$this->assertArrayHasKey('docs', $rows[0], 'No docs!'); $this->assertArrayHasKey('docs', $rows[0], 'No docs!');
$this->assertArrayHasKey('hits', $rows[0], 'No hits!'); $this->assertArrayHasKey('hits', $rows[0], 'No hits!');
} }
} }
\ No newline at end of file
...@@ -39,4 +39,4 @@ class ConnectionTest extends SphinxTestCase ...@@ -39,4 +39,4 @@ class ConnectionTest extends SphinxTestCase
$this->setExpectedException('yii\db\Exception'); $this->setExpectedException('yii\db\Exception');
$connection->open(); $connection->open();
} }
} }
\ No newline at end of file
...@@ -161,7 +161,7 @@ class QueryTest extends SphinxTestCase ...@@ -161,7 +161,7 @@ class QueryTest extends SphinxTestCase
$match = 'about'; $match = 'about';
$snippetPrefix = 'snippet#'; $snippetPrefix = 'snippet#';
$snippetCallback = function() use ($match, $snippetPrefix) { $snippetCallback = function () use ($match, $snippetPrefix) {
return [ return [
$snippetPrefix . '1: ' . $match, $snippetPrefix . '1: ' . $match,
$snippetPrefix . '2: ' . $match, $snippetPrefix . '2: ' . $match,
...@@ -195,4 +195,4 @@ class QueryTest extends SphinxTestCase ...@@ -195,4 +195,4 @@ class QueryTest extends SphinxTestCase
->count('*', $connection); ->count('*', $connection);
$this->assertEquals(2, $count); $this->assertEquals(2, $count);
} }
} }
\ No newline at end of file
...@@ -71,4 +71,4 @@ class ViewRendererTest extends TestCase ...@@ -71,4 +71,4 @@ class ViewRendererTest extends TestCase
'baseUrl' => '/assets', 'baseUrl' => '/assets',
]); ]);
} }
} }
\ No newline at end of file
...@@ -356,11 +356,11 @@ trait ActiveRecordTestTrait ...@@ -356,11 +356,11 @@ trait ActiveRecordTestTrait
$this->assertEquals(2, $this->callCustomerFind()->where(['OR', ['name' => 'user1'], ['name' => 'user2']])->count()); $this->assertEquals(2, $this->callCustomerFind()->where(['OR', ['name' => 'user1'], ['name' => 'user2']])->count());
$this->assertEquals(2, count($this->callCustomerFind()->where(['OR', ['name' => 'user1'], ['name' => 'user2']])->all())); $this->assertEquals(2, count($this->callCustomerFind()->where(['OR', ['name' => 'user1'], ['name' => 'user2']])->all()));
$this->assertEquals(2, $this->callCustomerFind()->where(['name' => ['user1','user2']])->count()); $this->assertEquals(2, $this->callCustomerFind()->where(['name' => ['user1', 'user2']])->count());
$this->assertEquals(2, count($this->callCustomerFind()->where(['name' => ['user1','user2']])->all())); $this->assertEquals(2, count($this->callCustomerFind()->where(['name' => ['user1', 'user2']])->all()));
$this->assertEquals(1, $this->callCustomerFind()->where(['AND', ['name' => ['user2','user3']], ['BETWEEN', 'status', 2, 4]])->count()); $this->assertEquals(1, $this->callCustomerFind()->where(['AND', ['name' => ['user2', 'user3']], ['BETWEEN', 'status', 2, 4]])->count());
$this->assertEquals(1, count($this->callCustomerFind()->where(['AND', ['name' => ['user2','user3']], ['BETWEEN', 'status', 2, 4]])->all())); $this->assertEquals(1, count($this->callCustomerFind()->where(['AND', ['name' => ['user2', 'user3']], ['BETWEEN', 'status', 2, 4]])->all()));
} }
public function testFindNullValues() public function testFindNullValues()
...@@ -384,9 +384,9 @@ trait ActiveRecordTestTrait ...@@ -384,9 +384,9 @@ trait ActiveRecordTestTrait
$this->assertTrue($this->callCustomerFind()->where(['name' => 'user1'])->exists()); $this->assertTrue($this->callCustomerFind()->where(['name' => 'user1'])->exists());
$this->assertFalse($this->callCustomerFind()->where(['name' => 'user5'])->exists()); $this->assertFalse($this->callCustomerFind()->where(['name' => 'user5'])->exists());
$this->assertTrue($this->callCustomerFind()->where(['id' => [2,3]])->exists()); $this->assertTrue($this->callCustomerFind()->where(['id' => [2, 3]])->exists());
$this->assertTrue($this->callCustomerFind()->where(['id' => [2,3]])->offset(1)->exists()); $this->assertTrue($this->callCustomerFind()->where(['id' => [2, 3]])->offset(1)->exists());
$this->assertFalse($this->callCustomerFind()->where(['id' => [2,3]])->offset(2)->exists()); $this->assertFalse($this->callCustomerFind()->where(['id' => [2, 3]])->offset(2)->exists());
} }
public function testFindLazy() public function testFindLazy()
...@@ -854,7 +854,7 @@ trait ActiveRecordTestTrait ...@@ -854,7 +854,7 @@ trait ActiveRecordTestTrait
/** @var TestCase|ActiveRecordTestTrait $this */ /** @var TestCase|ActiveRecordTestTrait $this */
$afterFindCalls = []; $afterFindCalls = [];
Event::on(BaseActiveRecord::className(), BaseActiveRecord::EVENT_AFTER_FIND, function($event) use (&$afterFindCalls) { Event::on(BaseActiveRecord::className(), BaseActiveRecord::EVENT_AFTER_FIND, function ($event) use (&$afterFindCalls) {
/** @var BaseActiveRecord $ar */ /** @var BaseActiveRecord $ar */
$ar = $event->sender; $ar = $event->sender;
$afterFindCalls[] = [get_class($ar), $ar->getIsNewRecord(), $ar->getPrimaryKey(), $ar->isRelationPopulated('orders')]; $afterFindCalls[] = [get_class($ar), $ar->getIsNewRecord(), $ar->getPrimaryKey(), $ar->isRelationPopulated('orders')];
......
...@@ -102,5 +102,4 @@ class BehaviorTest extends TestCase ...@@ -102,5 +102,4 @@ class BehaviorTest extends TestCase
$bar->attachBehavior('bar', $behavior); $bar->attachBehavior('bar', $behavior);
$bar->nomagicBehaviorMethod(); $bar->nomagicBehaviorMethod();
} }
} }
...@@ -89,5 +89,4 @@ class Post extends ActiveRecord ...@@ -89,5 +89,4 @@ class Post extends ActiveRecord
class User extends ActiveRecord class User extends ActiveRecord
{ {
} }
...@@ -24,15 +24,45 @@ class ActiveRecordTest extends DatabaseTestCase ...@@ -24,15 +24,45 @@ class ActiveRecordTest extends DatabaseTestCase
ActiveRecord::$db = $this->getConnection(); ActiveRecord::$db = $this->getConnection();
} }
public function callCustomerFind($q = null) { return Customer::find($q); } public function callCustomerFind($q = null)
public function callOrderFind($q = null) { return Order::find($q); } {
public function callOrderItemFind($q = null) { return OrderItem::find($q); } return Customer::find($q);
public function callItemFind($q = null) { return Item::find($q); } }
public function callOrderFind($q = null)
{
return Order::find($q);
}
public function callOrderItemFind($q = null)
{
return OrderItem::find($q);
}
public function getCustomerClass() { return Customer::className(); } public function callItemFind($q = null)
public function getItemClass() { return Item::className(); } {
public function getOrderClass() { return Order::className(); } return Item::find($q);
public function getOrderItemClass() { return OrderItem::className(); } }
public function getCustomerClass()
{
return Customer::className();
}
public function getItemClass()
{
return Item::className();
}
public function getOrderClass()
{
return Order::className();
}
public function getOrderItemClass()
{
return OrderItem::className();
}
public function testCustomColumns() public function testCustomColumns()
{ {
...@@ -284,7 +314,7 @@ class ActiveRecordTest extends DatabaseTestCase ...@@ -284,7 +314,7 @@ class ActiveRecordTest extends DatabaseTestCase
$orders = Order::find()->innerJoinWith([ $orders = Order::find()->innerJoinWith([
'customer' => function ($query) { 'customer' => function ($query) {
$query->where(['tbl_customer.id' => 2]); $query->where(['tbl_customer.id' => 2]);
}, },
], false)->where(['tbl_order.id' => [1, 2]])->orderBy('tbl_order.id')->all(); ], false)->where(['tbl_order.id' => [1, 2]])->orderBy('tbl_order.id')->all();
$this->assertEquals(1, count($orders)); $this->assertEquals(1, count($orders));
$this->assertEquals(2, $orders[0]->id); $this->assertEquals(2, $orders[0]->id);
......
...@@ -239,5 +239,4 @@ class QueryBuilderTest extends DatabaseTestCase ...@@ -239,5 +239,4 @@ class QueryBuilderTest extends DatabaseTestCase
list($actualQuerySql, $queryParams) = $this->getQueryBuilder()->build($query); list($actualQuerySql, $queryParams) = $this->getQueryBuilder()->build($query);
$this->assertEquals($expectedQuerySql, $actualQuerySql); $this->assertEquals($expectedQuerySql, $actualQuerySql);
}*/ }*/
} }
...@@ -79,5 +79,4 @@ class CubridQueryBuilderTest extends QueryBuilderTest ...@@ -79,5 +79,4 @@ class CubridQueryBuilderTest extends QueryBuilderTest
[Schema::TYPE_MONEY . ' NOT NULL', 'decimal(19,4) NOT NULL'], [Schema::TYPE_MONEY . ' NOT NULL', 'decimal(19,4) NOT NULL'],
]; ];
} }
} }
...@@ -12,49 +12,46 @@ use yii\db\Query; ...@@ -12,49 +12,46 @@ use yii\db\Query;
class MSSQLQueryBuilderTest extends QueryBuilderTest class MSSQLQueryBuilderTest extends QueryBuilderTest
{ {
public $driverName = 'sqlsrv'; public $driverName = 'sqlsrv';
public function testOffsetLimit() { public function testOffsetLimit()
$expectedQuerySql = 'SELECT `id` FROM `exapmle` OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY'; {
$expectedQueryParams = null; $expectedQuerySql = 'SELECT `id` FROM `exapmle` OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY';
$expectedQueryParams = null;
$query = new Query();
$query->select('id') $query = new Query();
->from('example') $query->select('id')->from('example')->limit(10)->offset(5);
->limit(10)->offset(5);
list($actualQuerySql, $actualQueryParams) = $this->getQueryBuilder()->build($query);
list($actualQuerySql, $actualQueryParams) = $this->getQueryBuilder()->build($query);
$this->assertEquals($expectedQuerySql, $actualQuerySql);
$this->assertEquals($expectedQuerySql, $actualQuerySql); $this->assertEquals($expectedQueryParams, $actualQueryParams);
$this->assertEquals($expectedQueryParams, $actualQueryParams); }
}
public function testLimit()
public function testLimit() { {
$expectedQuerySql = 'SELECT `id` FROM `exapmle` OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY'; $expectedQuerySql = 'SELECT `id` FROM `exapmle` OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY';
$expectedQueryParams = null; $expectedQueryParams = null;
$query = new Query(); $query = new Query();
$query->select('id') $query->select('id')->from('example')->limit(10);
->from('example')
->limit(10); list($actualQuerySql, $actualQueryParams) = $this->getQueryBuilder()->build($query);
list($actualQuerySql, $actualQueryParams) = $this->getQueryBuilder()->build($query); $this->assertEquals($expectedQuerySql, $actualQuerySql);
$this->assertEquals($expectedQueryParams, $actualQueryParams);
$this->assertEquals($expectedQuerySql, $actualQuerySql); }
$this->assertEquals($expectedQueryParams, $actualQueryParams);
} public function testOffset()
{
public function testOffset() { $expectedQuerySql = 'SELECT `id` FROM `exapmle` OFFSET 10 ROWS';
$expectedQuerySql = 'SELECT `id` FROM `exapmle` OFFSET 10 ROWS'; $expectedQueryParams = null;
$expectedQueryParams = null;
$query = new Query();
$query = new Query(); $query->select('id')->from('example')->offset(10);
$query->select('id')
->from('example') list($actualQuerySql, $actualQueryParams) = $this->getQueryBuilder()->build($query);
->offset(10);
$this->assertEquals($expectedQuerySql, $actualQuerySql);
list($actualQuerySql, $actualQueryParams) = $this->getQueryBuilder()->build($query); $this->assertEquals($expectedQueryParams, $actualQueryParams);
}
$this->assertEquals($expectedQuerySql, $actualQuerySql); }
$this->assertEquals($expectedQueryParams, $actualQueryParams);
}
}
\ No newline at end of file
...@@ -84,7 +84,7 @@ class SqliteQueryBuilderTest extends QueryBuilderTest ...@@ -84,7 +84,7 @@ class SqliteQueryBuilderTest extends QueryBuilderTest
public function testBatchInsert() public function testBatchInsert()
{ {
$sql = $this->getQueryBuilder()->batchInsert('{{tbl_customer}} t', ['t.id','t.name'], [[1,'a'], [2,'b']]); $sql = $this->getQueryBuilder()->batchInsert('{{tbl_customer}} t', ['t.id', 't.name'], [[1, 'a'], [2, 'b']]);
$this->assertEquals("INSERT INTO {{tbl_customer}} t (`t`.`id`, `t`.`name`) SELECT 1, 'a' UNION ALL 2, 'b'", $sql); $this->assertEquals("INSERT INTO {{tbl_customer}} t (`t`.`id`, `t`.`name`) SELECT 1, 'a' UNION ALL 2, 'b'", $sql);
} }
} }
...@@ -255,16 +255,20 @@ class FileHelperTest extends TestCase ...@@ -255,16 +255,20 @@ class FileHelperTest extends TestCase
{ {
$basePath = $this->testFilePath . DIRECTORY_SEPARATOR; $basePath = $this->testFilePath . DIRECTORY_SEPARATOR;
$dirs = ['', 'one', 'one' . DIRECTORY_SEPARATOR . 'two', 'three']; $dirs = ['', 'one', 'one' . DIRECTORY_SEPARATOR . 'two', 'three'];
$files = array_fill_keys(array_map(function($n){return "a.$n";}, range(1,8)), 'file contents'); $files = array_fill_keys(array_map(function ($n) {
return "a.$n";
}, range(1, 8)), 'file contents');
$tree = $files; $tree = $files;
$root = $files; $root = $files;
$flat = []; $flat = [];
foreach ($dirs as $dir) { foreach ($dirs as $dir) {
foreach ($files as $fileName => $contents) { foreach ($files as $fileName => $contents) {
$flat[] = rtrim($basePath.$dir,DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.$fileName; $flat[] = rtrim($basePath . $dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $fileName;
}
if ($dir === '') {
continue;
} }
if ($dir === '') continue;
$parts = explode(DIRECTORY_SEPARATOR, $dir); $parts = explode(DIRECTORY_SEPARATOR, $dir);
$last = array_pop($parts); $last = array_pop($parts);
$parent = array_pop($parts); $parent = array_pop($parts);
...@@ -280,25 +284,31 @@ class FileHelperTest extends TestCase ...@@ -280,25 +284,31 @@ class FileHelperTest extends TestCase
// range // range
$foundFiles = FileHelper::findFiles($basePath, ['except' => ['a.[2-8]']]); $foundFiles = FileHelper::findFiles($basePath, ['except' => ['a.[2-8]']]);
sort($foundFiles); sort($foundFiles);
$expect = array_values(array_filter($flat, function($p){return substr($p, -3)==='a.1';})); $expect = array_values(array_filter($flat, function ($p) {
return substr($p, -3)==='a.1';
}));
$this->assertEquals($expect, $foundFiles); $this->assertEquals($expect, $foundFiles);
// suffix // suffix
$foundFiles = FileHelper::findFiles($basePath, ['except' => ['*.1']]); $foundFiles = FileHelper::findFiles($basePath, ['except' => ['*.1']]);
sort($foundFiles); sort($foundFiles);
$expect = array_values(array_filter($flat, function($p){return substr($p, -3)!=='a.1';})); $expect = array_values(array_filter($flat, function ($p) {
return substr($p, -3)!=='a.1';
}));
$this->assertEquals($expect, $foundFiles); $this->assertEquals($expect, $foundFiles);
// dir // dir
$foundFiles = FileHelper::findFiles($basePath, ['except' => ['/one']]); $foundFiles = FileHelper::findFiles($basePath, ['except' => ['/one']]);
sort($foundFiles); sort($foundFiles);
$expect = array_values(array_filter($flat, function($p){return strpos($p, DIRECTORY_SEPARATOR.'one')===false;})); $expect = array_values(array_filter($flat, function ($p) {
return strpos($p, DIRECTORY_SEPARATOR.'one')===false;
}));
$this->assertEquals($expect, $foundFiles); $this->assertEquals($expect, $foundFiles);
// dir contents // dir contents
$foundFiles = FileHelper::findFiles($basePath, ['except' => ['?*/a.1']]); $foundFiles = FileHelper::findFiles($basePath, ['except' => ['?*/a.1']]);
sort($foundFiles); sort($foundFiles);
$expect = array_values(array_filter($flat, function($p){ $expect = array_values(array_filter($flat, function ($p) {
return substr($p, -11, 10)==='one'.DIRECTORY_SEPARATOR.'two'.DIRECTORY_SEPARATOR.'a.' || ( return substr($p, -11, 10)==='one'.DIRECTORY_SEPARATOR.'two'.DIRECTORY_SEPARATOR.'a.' || (
substr($p, -8)!==DIRECTORY_SEPARATOR.'one'.DIRECTORY_SEPARATOR.'a.1' && substr($p, -8)!==DIRECTORY_SEPARATOR.'one'.DIRECTORY_SEPARATOR.'a.1' &&
substr($p, -10)!==DIRECTORY_SEPARATOR.'three'.DIRECTORY_SEPARATOR.'a.1' substr($p, -10)!==DIRECTORY_SEPARATOR.'three'.DIRECTORY_SEPARATOR.'a.1'
......
...@@ -213,7 +213,7 @@ class HtmlTest extends TestCase ...@@ -213,7 +213,7 @@ class HtmlTest extends TestCase
{ {
$this->assertEquals('<input type="radio" name="test" value="1">', Html::radio('test')); $this->assertEquals('<input type="radio" name="test" value="1">', Html::radio('test'));
$this->assertEquals('<input type="radio" class="a" name="test" checked>', Html::radio('test', true, ['class' => 'a', 'value' => null])); $this->assertEquals('<input type="radio" class="a" name="test" checked>', Html::radio('test', true, ['class' => 'a', 'value' => null]));
$this->assertEquals('<input type="hidden" name="test" value="0"><input type="radio" class="a" name="test" value="2" checked>', Html::radio('test', true, ['class' => 'a' , 'uncheck' => '0', 'value' => 2])); $this->assertEquals('<input type="hidden" name="test" value="0"><input type="radio" class="a" name="test" value="2" checked>', Html::radio('test', true, ['class' => 'a', 'uncheck' => '0', 'value' => 2]));
$this->assertEquals('<div class="radio"><label class="bbb"><input type="radio" class="a" name="test" checked> ccc</label></div>', Html::radio('test', true, [ $this->assertEquals('<div class="radio"><label class="bbb"><input type="radio" class="a" name="test" checked> ccc</label></div>', Html::radio('test', true, [
'class' => 'a', 'class' => 'a',
......
...@@ -97,7 +97,7 @@ _MSG_ ...@@ -97,7 +97,7 @@ _MSG_
[ [
'name' => 'Alexander', 'name' => 'Alexander',
'gender' => 'male', 'gender' => 'male',
// following should not be replaced // following should not be replaced
'he' => 'wtf', 'he' => 'wtf',
'she' => 'wtf', 'she' => 'wtf',
'it' => 'wtf', 'it' => 'wtf',
......
...@@ -105,13 +105,13 @@ class I18NTest extends TestCase ...@@ -105,13 +105,13 @@ class I18NTest extends TestCase
$this->assertEquals('Missing translation message.', $this->i18n->translate('test', 'Missing translation message.', [], 'de-DE')); $this->assertEquals('Missing translation message.', $this->i18n->translate('test', 'Missing translation message.', [], 'de-DE'));
$this->assertEquals('Hallo Welt!', $this->i18n->translate('test', 'Hello world!', [], 'de-DE')); $this->assertEquals('Hallo Welt!', $this->i18n->translate('test', 'Hello world!', [], 'de-DE'));
Event::on(PhpMessageSource::className(), PhpMessageSource::EVENT_MISSING_TRANSLATION, function($event) {}); Event::on(PhpMessageSource::className(), PhpMessageSource::EVENT_MISSING_TRANSLATION, function ($event) {});
$this->assertEquals('Hallo Welt!', $this->i18n->translate('test', 'Hello world!', [], 'de-DE')); $this->assertEquals('Hallo Welt!', $this->i18n->translate('test', 'Hello world!', [], 'de-DE'));
$this->assertEquals('Missing translation message.', $this->i18n->translate('test', 'Missing translation message.', [], 'de-DE')); $this->assertEquals('Missing translation message.', $this->i18n->translate('test', 'Missing translation message.', [], 'de-DE'));
$this->assertEquals('Hallo Welt!', $this->i18n->translate('test', 'Hello world!', [], 'de-DE')); $this->assertEquals('Hallo Welt!', $this->i18n->translate('test', 'Hello world!', [], 'de-DE'));
Event::off(PhpMessageSource::className(), PhpMessageSource::EVENT_MISSING_TRANSLATION); Event::off(PhpMessageSource::className(), PhpMessageSource::EVENT_MISSING_TRANSLATION);
Event::on(PhpMessageSource::className(), PhpMessageSource::EVENT_MISSING_TRANSLATION, function($event) { Event::on(PhpMessageSource::className(), PhpMessageSource::EVENT_MISSING_TRANSLATION, function ($event) {
if ($event->message == 'New missing translation message.') { if ($event->message == 'New missing translation message.') {
$event->translatedMessage = 'TRANSLATION MISSING HERE!'; $event->translatedMessage = 'TRANSLATION MISSING HERE!';
} }
...@@ -124,4 +124,3 @@ class I18NTest extends TestCase ...@@ -124,4 +124,3 @@ class I18NTest extends TestCase
Event::off(PhpMessageSource::className(), PhpMessageSource::EVENT_MISSING_TRANSLATION); Event::off(PhpMessageSource::className(), PhpMessageSource::EVENT_MISSING_TRANSLATION);
} }
} }
...@@ -28,4 +28,4 @@ class LoggerTest extends TestCase ...@@ -28,4 +28,4 @@ class LoggerTest extends TestCase
$this->assertEquals(Logger::LEVEL_ERROR, $logger->messages[1][1]); $this->assertEquals(Logger::LEVEL_ERROR, $logger->messages[1][1]);
$this->assertEquals('category', $logger->messages[1][2]); $this->assertEquals('category', $logger->messages[1][2]);
} }
} }
\ No newline at end of file
...@@ -85,4 +85,4 @@ class TestTarget extends Target ...@@ -85,4 +85,4 @@ class TestTarget extends Target
TargetTest::$messages = array_merge(TargetTest::$messages, $this->messages); TargetTest::$messages = array_merge(TargetTest::$messages, $this->messages);
$this->messages = []; $this->messages = [];
} }
} }
\ No newline at end of file
...@@ -235,12 +235,11 @@ class BaseMailerTest extends TestCase ...@@ -235,12 +235,11 @@ class BaseMailerTest extends TestCase
{ {
$message = new Message(); $message = new Message();
$mailerMock = $this->getMockBuilder('yiiunit\framework\mail\Mailer')->setMethods(['beforeSend','afterSend'])->getMock(); $mailerMock = $this->getMockBuilder('yiiunit\framework\mail\Mailer')->setMethods(['beforeSend', 'afterSend'])->getMock();
$mailerMock->expects($this->once())->method('beforeSend')->with($message)->will($this->returnValue(true)); $mailerMock->expects($this->once())->method('beforeSend')->with($message)->will($this->returnValue(true));
$mailerMock->expects($this->once())->method('afterSend')->with($message,true); $mailerMock->expects($this->once())->method('afterSend')->with($message, true);
$mailerMock->send($message); $mailerMock->send($message);
} }
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment