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.

241 lines
9.9 KiB

12 years ago
<?php
namespace yiiunit\framework\web;
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
use Yii;
use yii\web\Request;
use yii\web\UrlManager;
use yiiunit\TestCase;
/**
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
* This tests verifies all features provided by UrlManager according to the documentation.
*
* UrlManager has two main operation modes:
*
* - "default" url format, which is the simple case. Tests in this class cover this case.
* Things to be covered in this mode are the following:
* - route only createUrl(['post/index']);
* - with params createUrl(['post/view', 'id' => 100]);
* - with anchor createUrl(['post/view', 'id' => 100, '#' => 'content']);
* Variations here are createUrl and createAbsoluteUrl, where absolute Urls also vary by schema.
*
* - "pretty" url format. This is the complex case, which involves UrlRules and url parsing.
* Url creation for "pretty" url format is covered by [[UrlManagerCreateUrlTest]].
* Url parsing for "pretty" url format is covered by [[UrlManagerParseUrlTest]].
*
* @group web
*/
class UrlManagerTest extends TestCase
12 years ago
{
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
protected function getUrlManager($config = [], $showScriptName = true, $enableStrictParsing = false)
{
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
// in this test class, all tests have enablePrettyUrl disabled.
$config['enablePrettyUrl'] = false;
$config['cache'] = null;
// baseUrl should not be used when prettyUrl is disabled
// trigger an exception here in case it gets called
$config['baseUrl'] = null;
$this->mockApplication();
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
Yii::$app->set('request', function() {
$this->fail('Request component should not be accessed by UrlManager with current settings.');
});
// set default values if they are not set
$config = array_merge([
'scriptUrl' => '/index.php',
'hostInfo' => 'http://www.example.com',
'showScriptName' => $showScriptName,
'enableStrictParsing' => $enableStrictParsing,
], $config);
return new UrlManager($config);
}
/**
* $showScriptName and $enableStrictParsing should have no effect in default format.
* Passing these options ensures that.
*/
public function ignoredOptionsProvider()
{
return [
[false, false],
[true, false],
[false, true],
[true, true],
];
}
11 years ago
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
/**
* @dataProvider ignoredOptionsProvider
*/
public function testCreateUrlSimple($showScriptName, $enableStrictParsing)
{
// default setting with '/' as base url
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$manager = $this->getUrlManager([], $showScriptName, $enableStrictParsing);
$url = $manager->createUrl('post/view');
$this->assertEquals('/index.php?r=post%2Fview', $url);
$url = $manager->createUrl(['post/view']);
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$this->assertEquals('/index.php?r=post%2Fview', $url);
// default setting with '/test/' as base url
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$manager = $this->getUrlManager([
'baseUrl' => '/test/',
'scriptUrl' => '/test',
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
], $showScriptName, $enableStrictParsing);
$url = $manager->createUrl('post/view');
$this->assertEquals('/test?r=post%2Fview', $url);
$url = $manager->createUrl(['post/view']);
$this->assertEquals('/test?r=post%2Fview', $url);
}
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
/**
* @dataProvider ignoredOptionsProvider
*/
public function testCreateUrlWithParams($showScriptName, $enableStrictParsing)
{
// default setting with '/' as base url
$manager = $this->getUrlManager([], $showScriptName, $enableStrictParsing);
$url = $manager->createUrl(['post/view', 'id' => 1, 'title' => 'sample post']);
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$this->assertEquals('/index.php?r=post%2Fview&id=1&title=sample+post', $url);
// default setting with '/test/' as base url
$manager = $this->getUrlManager([
'baseUrl' => '/test/',
'scriptUrl' => '/test',
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
], $showScriptName, $enableStrictParsing);
$url = $manager->createUrl(['post/view', 'id' => 1, 'title' => 'sample post']);
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$this->assertEquals('/test?r=post%2Fview&id=1&title=sample+post', $url);
}
/**
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
* @dataProvider ignoredOptionsProvider
*
* @see https://github.com/yiisoft/yii2/pull/9596
*/
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
public function testCreateUrlWithAnchor($showScriptName, $enableStrictParsing)
{
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
// default setting with '/' as base url
$manager = $this->getUrlManager([], $showScriptName, $enableStrictParsing);
$url = $manager->createUrl(['post/view', '#' => 'anchor']);
$this->assertEquals('/index.php?r=post%2Fview#anchor', $url);
$url = $manager->createUrl(['post/view', 'id' => 1, 'title' => 'sample post', '#' => 'anchor']);
$this->assertEquals('/index.php?r=post%2Fview&id=1&title=sample+post#anchor', $url);
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
// default setting with '/test/' as base url
$manager = $this->getUrlManager([
'baseUrl' => '/test/',
'scriptUrl' => '/test',
], $showScriptName, $enableStrictParsing);
$url = $manager->createUrl(['post/view', '#' => 'anchor']);
$this->assertEquals('/test?r=post%2Fview#anchor', $url);
$url = $manager->createUrl(['post/view', 'id' => 1, 'title' => 'sample post', '#' => 'anchor']);
$this->assertEquals('/test?r=post%2Fview&id=1&title=sample+post#anchor', $url);
}
/**
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
* @dataProvider ignoredOptionsProvider
*/
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
public function testCreateAbsoluteUrl($showScriptName, $enableStrictParsing)
{
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$manager = $this->getUrlManager([], $showScriptName, $enableStrictParsing);
$url = $manager->createAbsoluteUrl('post/view');
$this->assertEquals('http://www.example.com/index.php?r=post%2Fview', $url);
$url = $manager->createAbsoluteUrl(['post/view']);
$this->assertEquals('http://www.example.com/index.php?r=post%2Fview', $url);
$url = $manager->createAbsoluteUrl('post/view', true);
$this->assertEquals('http://www.example.com/index.php?r=post%2Fview', $url);
$url = $manager->createAbsoluteUrl(['post/view'], true);
$this->assertEquals('http://www.example.com/index.php?r=post%2Fview', $url);
$url = $manager->createAbsoluteUrl('post/view', 'http');
$this->assertEquals('http://www.example.com/index.php?r=post%2Fview', $url);
$url = $manager->createAbsoluteUrl(['post/view'], 'http');
$this->assertEquals('http://www.example.com/index.php?r=post%2Fview', $url);
$url = $manager->createAbsoluteUrl('post/view', 'https');
$this->assertEquals('https://www.example.com/index.php?r=post%2Fview', $url);
$url = $manager->createAbsoluteUrl(['post/view'], 'https');
$this->assertEquals('https://www.example.com/index.php?r=post%2Fview', $url);
$url = $manager->createAbsoluteUrl('post/view', '');
$this->assertEquals('//www.example.com/index.php?r=post%2Fview', $url);
$url = $manager->createAbsoluteUrl(['post/view'], '');
$this->assertEquals('//www.example.com/index.php?r=post%2Fview', $url);
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$manager->hostInfo = 'https://www.example.com';
$url = $manager->createAbsoluteUrl(['post/view', 'id' => 1, 'title' => 'sample post']);
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$this->assertEquals('https://www.example.com/index.php?r=post%2Fview&id=1&title=sample+post', $url);
$url = $manager->createAbsoluteUrl(['post/view', 'id' => 1, 'title' => 'sample post'], 'https');
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$this->assertEquals('https://www.example.com/index.php?r=post%2Fview&id=1&title=sample+post', $url);
$url = $manager->createAbsoluteUrl(['post/view', 'id' => 1, 'title' => 'sample post'], 'http');
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$this->assertEquals('http://www.example.com/index.php?r=post%2Fview&id=1&title=sample+post', $url);
$url = $manager->createAbsoluteUrl(['post/view', 'id' => 1, 'title' => 'sample post'], '');
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$this->assertEquals('//www.example.com/index.php?r=post%2Fview&id=1&title=sample+post', $url);
}
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
/**
* Test normalisation of different routes.
* @dataProvider ignoredOptionsProvider
*/
public function testCreateUrlRouteVariants($showScriptName, $enableStrictParsing)
{
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
// default setting with '/' as base url
$manager = $this->getUrlManager([], $showScriptName, $enableStrictParsing);
$url = $manager->createUrl(['/post/view']);
$this->assertEquals('/index.php?r=post%2Fview', $url);
$url = $manager->createUrl(['/post/view/']);
$this->assertEquals('/index.php?r=post%2Fview', $url);
$url = $manager->createUrl(['/module/post/view']);
$this->assertEquals('/index.php?r=module%2Fpost%2Fview', $url);
$url = $manager->createUrl(['/post/view/']);
$this->assertEquals('/index.php?r=post%2Fview', $url);
}
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
/**
* @return array provides different names for UrlManager::$routeParam
*/
public function routeParamProvider()
{
return [
['r'], // default value
['route'],
['_'],
];
}
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
/**
* @dataProvider routeParamProvider
*/
public function testParseRequest($routeParam)
{
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$manager = $this->getUrlManager(['routeParam' => $routeParam]);
$request = new Request;
// default setting without 'r' param
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$request->setQueryParams([]);
$result = $manager->parseRequest($request);
$this->assertEquals(['', []], $result);
// default setting with 'r' param
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$request->setQueryParams([$routeParam => 'site/index']);
$result = $manager->parseRequest($request);
$this->assertEquals(['site/index', []], $result);
// default setting with 'r' param as an array
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$request->setQueryParams([$routeParam => ['site/index']]);
$result = $manager->parseRequest($request);
$this->assertEquals(['', []], $result);
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
// other parameters are not returned here
$request->setQueryParams([$routeParam => 'site/index', 'id' => 5]);
$result = $manager->parseRequest($request);
$this->assertEquals(['site/index', []], $result);
Refactored UrlManagerTest to cover more use cases UrlManager is a complex class with a large bunch of options that needs to be tested and we had a few regressions in the past even though there are already a lot of tests covering it. Test coverage measured by lines does not help us determine how good it is tested, we need test coverage for every major path through the code. I have refactored the UrlManager tests to reflect the different options and cases to have a better overview of which cases are covered and which are not. UrlManager has two main operation modes: - "default" url format, which is the simple case. These are covered by methods in `UrlManagerTest`. - "pretty" url format. This is the complex case, which involves UrlRules and url parsing. I have created two separate classes for this case: Url creation for "pretty" url format is covered by `UrlManagerCreateUrlTest`. Url parsing for "pretty" url format is covered by `UrlManagerParseUrlTest`. Each of the test classes have a `getUrlManager` method that creates a UrlManager instance with a specific configuration and certain variations in options. It is also tested that options that are not relevant in a certain operation mode have no effect on the result. To make sure to not remove tests that have existed before, here is a map of where code has been moved. The following test methods existed in the [old test class](https://github.com/yiisoft/yii2/blob/4187718c148610b02fc973a19be53600e6230604/tests/framework/web/UrlManagerTest.php): - `testCreateUrl()` split between UrlManagerTest and UrlManagerCreateUrlTest variations should all be covered by `variationsProvider()`. - `testCreateUrlWithNullParams()` covered by UrlManagerCreateUrlTest by `testWithNullParams()` - `testCreateUrlWithEmptyPattern()` - `testCreateAbsoluteUrl()` covered in UrlManagerCreateUrlTest by new tests via `variationsProvider()`. - `testCreateAbsoluteUrlWithSuffix()` covered in UrlManagerCreateUrlTest by `testAbsolutePatterns`. - `testParseRequest()` covered by UrlManagerParseUrlTest, UrlNormalizer related parts moved to UrlNormalizerTest. - `testParseRESTRequest()` moved to UrlManagerParseUrlTest - `testHash()` covered in different tests in UrlManagerCreateUrlTest. - `testMultipleHostsRules($host)` kept as is. Before: $ vendor/bin/phpunit tests/framework/web/UrlManagerTest.php ... OK (12 tests, 89 assertions) After: $ vendor/bin/phpunit tests/framework/web/UrlManager*.php ... OK (72 tests, 648 assertions)
8 years ago
$this->assertEquals(5, $request->getQueryParam('id'));
}
12 years ago
}