Commit Graph

15 Commits

Author SHA1 Message Date
Carsten Brandt
8faedcbd7c 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](4187718c14/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)
2017-01-31 02:38:35 +01:00
Robert Korulczyk
6d277ddafb Tests for create URLs with multiple domain rules. (#13351) 2017-01-08 21:58:33 +03:00
Robert Korulczyk
2d91723934 Add support for creating protocol-relative URLs.
Improve phpdoc for protocol-relative URL creation.
Remove useless `is_string()` check.
2016-11-29 09:53:51 +02:00
Robert Korulczyk
8142de23d4 Improve normalizer for URL manager 2016-08-30 21:25:23 +02:00
Cronfy
a7f63b6da3 Add normalizer for URL manager. 2016-08-30 21:22:58 +02:00
Carsten Brandt
9cac1317b9 added test for #11801 2016-06-25 19:09:12 +02:00
Klimov Paul
6066b63c6e UrlManagerTest fixed 2016-03-09 10:37:13 +02:00
SilverFire - Dmitry Naumenko
8e1ab29592 Changelog updated 2016-03-09 00:01:53 +02:00
Sam Mousa
c4e782725c Fixed cache key collision in yii\web\UrlManager::createUrl()
Closes #10935
2016-03-09 00:01:31 +02:00
Andrew Nester
fecd4dcfa5 10739 - Multiple slashes at the end of route should not be accepted as valid url 2016-02-05 16:38:49 +03:00
Carsten Brandt
d6c45d36ce added test to verify #10204 2015-11-27 18:42:37 +01:00
Alexander Makarov
80d377ea57 Adjusted test for #9596 2015-09-05 11:41:03 +03:00
Alexander Makarov
6f0bb29e7a Added test for #9596 2015-09-05 01:04:35 +03:00
Carsten Brandt
854e186210 fixed caching issue with UrlManager::createUrl
this fix will skip the cache in case we encounter a situation which can
not easily be cached.

fixes #9091
2015-08-03 00:31:59 +02:00
Alexander Makarov
6949992246 Simplified tests directory structure a bit 2015-04-16 12:10:01 +03:00