Fixes #15142: Fixed array params replacing in yii\helpers\BaseUrl::current()

This commit is contained in:
IceJOKER
2017-12-02 08:26:55 +03:00
committed by Alexander Makarov
parent 1330ca9ec1
commit 01ff1f6593
3 changed files with 18 additions and 9 deletions

View File

@ -12,7 +12,6 @@ use yii\base\Action;
use yii\base\Module;
use yii\helpers\Url;
use yii\web\Controller;
use yii\web\UrlManager;
use yii\widgets\Menu;
use yiiunit\framework\filters\stubs\UserIdentity;
use yiiunit\TestCase;
@ -122,14 +121,23 @@ class UrlTest extends TestCase
{
$this->mockAction('page', 'view', null, []);
Yii::$app->request->setQueryParams(['id' => 10, 'name' => 'test', 10 => 0]);
$uri = '/base/index.php?r=page%2Fview';
$this->assertEquals('/base/index.php?r=page%2Fview&id=10&name=test&10=0', Url::current());
$this->assertEquals('/base/index.php?r=page%2Fview&id=20&name=test&10=0', Url::current(['id' => 20]));
$this->assertEquals('/base/index.php?r=page%2Fview&name=test&10=0', Url::current(['id' => null]));
$this->assertEquals('/base/index.php?r=page%2Fview&name=test&10=0&1=yes', Url::current(['id' => [], 1 => 'yes']));
$this->assertEquals('/base/index.php?r=page%2Fview&name=test&10=0', Url::current(['id' => []]));
$this->assertEquals('/base/index.php?r=page%2Fview&name=test', Url::current(['id' => null, 10 => null]));
$this->assertEquals('/base/index.php?r=page%2Fview&name=test&1=yes', Url::current(['id' => null, 10 => null, 1 => 'yes']));
$this->assertEquals($uri . '&id=10&name=test&10=0', Url::current());
$this->assertEquals($uri . '&id=20&name=test&10=0', Url::current(['id' => 20]));
$this->assertEquals($uri . '&name=test&10=0', Url::current(['id' => null]));
$this->assertEquals($uri . '&name=test&10=0&1=yes', Url::current(['id' => [], 1 => 'yes']));
$this->assertEquals($uri . '&name=test&10=0', Url::current(['id' => []]));
$this->assertEquals($uri . '&name=test', Url::current(['id' => null, 10 => null]));
$this->assertEquals($uri . '&name=test&1=yes', Url::current(['id' => null, 10 => null, 1 => 'yes']));
$params = ['arr' => ['attr_one' => 1, 'attr_two' => 2]];
Yii::$app->request->setQueryParams($params);
$this->assertEquals($uri . '&arr%5Battr_one%5D=1&arr%5Battr_two%5D=2', Url::current());
$this->assertEquals($uri, Url::current(['arr' => null]));
$this->assertEquals($uri . '&arr%5Battr_two%5D=2', Url::current(['arr' => ['attr_one' => null]]));
$this->assertEquals($uri . '&arr%5Battr_one%5D=1&arr%5Battr_two%5D=two', Url::current(['arr' => ['attr_two' => 'two']]));
}
public function testPrevious()