Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php |
||
| 7 | class MenuUrlHelperTest extends \PHPUnit_Framework_TestCase |
||
| 8 | { |
||
| 9 | public function testInvokingUrlHelperWithHrefShouldReturnString() |
||
| 10 | { |
||
| 11 | $urlHelper = $this->getMockBuilder(\Zend\Expressive\Helper\UrlHelper::class) |
||
| 12 | ->disableOriginalConstructor() |
||
| 13 | ->getMockForAbstractClass(); |
||
| 14 | $menuHelper = new \Menu\View\Helper\MenuUrlHelper($urlHelper); |
||
| 15 | static::assertSame('http://test.example.com', $menuHelper(['href' => 'http://test.example.com'])); |
||
| 16 | } |
||
| 17 | |||
| 18 | public function testInvokingUrlHelperWithPageSlugShouldReturnString() |
||
| 19 | { |
||
| 20 | $urlHelper = $this->getMockBuilder(\Zend\Expressive\Helper\UrlHelper::class) |
||
| 21 | ->setMethods(['__invoke']) |
||
| 22 | ->disableOriginalConstructor() |
||
| 23 | ->getMockForAbstractClass(); |
||
| 24 | $urlHelper->expects(static::once()) |
||
| 25 | ->method('__invoke') |
||
| 26 | ->willReturn('test'); |
||
| 27 | $menuHelper = new \Menu\View\Helper\MenuUrlHelper($urlHelper); |
||
| 28 | static::assertSame('test', $menuHelper(['page_slug' => 'test-slug', 'href' => false])); |
||
| 29 | } |
||
| 30 | |||
| 31 | public function testInvokingUrlHelperWithCategorySlugShouldReturnString() |
||
| 32 | { |
||
| 33 | $urlHelper = $this->getMockBuilder(\Zend\Expressive\Helper\UrlHelper::class) |
||
| 34 | ->setMethods(['__invoke']) |
||
| 35 | ->disableOriginalConstructor() |
||
| 36 | ->getMockForAbstractClass(); |
||
| 37 | $urlHelper->expects(static::once()) |
||
| 38 | ->method('__invoke') |
||
| 39 | ->willReturn('test'); |
||
| 40 | $menuHelper = new \Menu\View\Helper\MenuUrlHelper($urlHelper); |
||
| 41 | static::assertSame('test', $menuHelper(['category_slug' => 'test-slug', 'href' => false, 'page_slug' => false])); |
||
| 42 | } |
||
| 43 | |||
| 44 | public function testInvokingUrlHelperWithAllParamsFalseShouldReturnString() |
||
| 45 | { |
||
| 46 | $urlHelper = $this->getMockBuilder(\Zend\Expressive\Helper\UrlHelper::class) |
||
| 47 | ->disableOriginalConstructor() |
||
| 48 | ->getMockForAbstractClass(); |
||
| 49 | $menuHelper = new \Menu\View\Helper\MenuUrlHelper($urlHelper); |
||
| 50 | static::assertSame('#', $menuHelper(['category_slug' => false, 'href' => false, 'page_slug' => false])); |
||
| 51 | } |
||
| 52 | } |
||
| 53 |