Yii2 framework backup
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.
 
 
 
 
 

201 lines
6.6 KiB

<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
use yii\console\Request;
use yiiunit\TestCase;
/**
* @group console
*/
class RequestTest extends TestCase
{
public function provider()
{
return [
[
'params' => [
'controller',
],
'expected' => [
'route' => 'controller',
'params' => [
],
],
],
[
'params' => [
'controller/route',
'param1',
'-12345',
'--option1',
'--option2=testValue',
'--option-3=testValue',
'--option_4=testValue',
'-alias1',
'-alias2=testValue',
'-alias-3=testValue',
'-alias_4=testValue',
],
'expected' => [
'route' => 'controller/route',
'params' => [
'param1',
'-12345',
'option1' => true,
'option2' => 'testValue',
'option-3' => 'testValue',
'option_4' => 'testValue',
'_aliases' => [
'alias1' => true,
'alias2' => 'testValue',
'alias-3' => 'testValue',
'alias_4' => 'testValue',
],
],
],
],
[
// Case: Special argument "End of Options" used
'params' => [
'controller/route',
'param1',
'-12345',
'--option1',
'--option2=testValue',
'-alias1',
'-alias2=testValue',
'--', // Special argument "End of Options"
'param2',
'-54321',
'--option3',
'--', // Second `--` argument shouldn't be treated as special
'--option4=testValue',
'-alias3',
'-alias4=testValue',
],
'expected' => [
'route' => 'controller/route',
'params' => [
'param1',
'-12345',
'option1' => '1',
'option2' => 'testValue',
'_aliases' => [
'alias1' => true,
'alias2' => 'testValue',
],
'param2',
'-54321',
'--option3',
'--',
'--option4=testValue',
'-alias3',
'-alias4=testValue',
],
],
],
[
// Case: Special argument "End of Options" placed before route
'params' => [
'--', // Special argument "End of Options"
'controller/route',
'param1',
'-12345',
'--option1',
'--option2=testValue',
'-alias1',
'-alias2=testValue',
],
'expected' => [
'route' => 'controller/route',
'params' => [
'param1',
'-12345',
'--option1',
'--option2=testValue',
'-alias1',
'-alias2=testValue',
],
],
],
// Case: `--<option> <value>` and `-<alias> <value>` syntax
[
'params' => [
'controller/route',
'param1',
'-12345',
'--option1',
'--option2',
'testValue1',
'--option-3',
'testValue2',
'--option_4',
'testValue3',
'-alias1',
'-alias2',
'testValue1',
'-alias-3',
'testValue2',
'-alias_4',
'testValue3',
],
'expected' => [
'route' => 'controller/route',
'params' => [
'param1',
'-12345',
'option1' => true,
'option2' => 'testValue1',
'option-3' => 'testValue2',
'option_4' => 'testValue3',
'_aliases' => [
'alias1' => true,
'alias2' => 'testValue1',
'alias-3' => 'testValue2',
'alias_4' => 'testValue3',
],
],
],
],
[
// PHP does not allow variable name, starting with digit.
// InvalidParamException must be thrown during request resolving:
'params' => [
'controller/route',
'--0=test',
'--1=testing',
],
'expected' => [],
'exception' => [
'\yii\console\Exception',
'Parameter "0" is not valid',
],
],
];
}
/**
* @dataProvider provider
* @param array $params
* @param array $expected
* @param array|null $expectedException
*/
public function testResolve($params, $expected, $expectedException = null)
{
if (isset($expectedException)) {
$this->expectException($expectedException[0]);
$this->expectExceptionMessage($expectedException[1]);
}
$request = new Request();
$request->setParams($params);
list($route, $params) = $request->resolve();
$this->assertEquals($expected['route'], $route);
$this->assertEquals($expected['params'], $params);
}
}