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 |
||
| 23 | class LanguageServiceTest extends BaseTest |
||
| 24 | { |
||
| 25 | /** |
||
| 26 | * Test for the newLanguageCreateStruct() method. |
||
| 27 | * |
||
| 28 | * @covers \eZ\Publish\API\Repository\LanguageService::newLanguageCreateStruct |
||
| 29 | */ |
||
| 30 | View Code Duplication | public function testNewLanguageCreateStruct() |
|
| 54 | |||
| 55 | /** |
||
| 56 | * Test for the createLanguage() method. |
||
| 57 | * |
||
| 58 | * @return \eZ\Publish\API\Repository\Values\Content\Language |
||
| 59 | * |
||
| 60 | * @covers \eZ\Publish\API\Repository\LanguageService::createLanguage |
||
| 61 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testNewLanguageCreateStruct |
||
| 62 | */ |
||
| 63 | View Code Duplication | public function testCreateLanguage() |
|
| 64 | { |
||
| 65 | $repository = $this->getRepository(); |
||
| 66 | |||
| 67 | /* BEGIN: Use Case */ |
||
| 68 | $languageService = $repository->getContentLanguageService(); |
||
| 69 | |||
| 70 | $languageCreate = $languageService->newLanguageCreateStruct(); |
||
| 71 | $languageCreate->enabled = true; |
||
| 72 | $languageCreate->name = 'English (New Zealand)'; |
||
| 73 | $languageCreate->languageCode = 'eng-NZ'; |
||
| 74 | |||
| 75 | $language = $languageService->createLanguage($languageCreate); |
||
| 76 | /* END: Use Case */ |
||
| 77 | |||
| 78 | $this->assertInstanceOf( |
||
| 79 | '\\eZ\\Publish\\API\\Repository\\Values\\Content\\Language', |
||
| 80 | $language |
||
| 81 | ); |
||
| 82 | |||
| 83 | return $language; |
||
| 84 | } |
||
| 85 | |||
| 86 | /** |
||
| 87 | * Test for the createLanguage() method. |
||
| 88 | * |
||
| 89 | * @param \eZ\Publish\API\Repository\Values\Content\Language $language |
||
| 90 | * |
||
| 91 | * @covers \eZ\Publish\API\Repository\LanguageService::createLanguage |
||
| 92 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
||
| 93 | */ |
||
| 94 | public function testCreateLanguageSetsIdPropertyOnReturnedLanguage($language) |
||
| 98 | |||
| 99 | /** |
||
| 100 | * Test for the createLanguage() method. |
||
| 101 | * |
||
| 102 | * @param \eZ\Publish\API\Repository\Values\Content\Language $language |
||
| 103 | * |
||
| 104 | * @covers \eZ\Publish\API\Repository\LanguageService::createLanguage |
||
| 105 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
||
| 106 | */ |
||
| 107 | public function testCreateLanguageSetsExpectedProperties($language) |
||
| 122 | |||
| 123 | /** |
||
| 124 | * Test for the createLanguage() method. |
||
| 125 | * |
||
| 126 | * @covers \eZ\Publish\API\Repository\LanguageService::createLanguage |
||
| 127 | * @expectedException \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException |
||
| 128 | * @expectedExceptionMessage Argument 'languageCreateStruct' is invalid: language with specified language code already exists |
||
| 129 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
||
| 130 | */ |
||
| 131 | View Code Duplication | public function testCreateLanguageThrowsInvalidArgumentException() |
|
| 132 | { |
||
| 133 | $repository = $this->getRepository(); |
||
| 134 | |||
| 135 | /* BEGIN: Use Case */ |
||
| 136 | $languageService = $repository->getContentLanguageService(); |
||
| 137 | |||
| 138 | $languageCreate = $languageService->newLanguageCreateStruct(); |
||
| 139 | $languageCreate->enabled = true; |
||
| 140 | $languageCreate->name = 'Norwegian'; |
||
| 141 | $languageCreate->languageCode = 'nor-NO'; |
||
| 142 | |||
| 143 | $languageService->createLanguage($languageCreate); |
||
| 144 | |||
| 145 | // This call should fail with an InvalidArgumentException, because |
||
| 146 | // the language code "nor-NO" already exists. |
||
| 147 | $languageService->createLanguage($languageCreate); |
||
| 148 | /* END: Use Case */ |
||
| 149 | } |
||
| 150 | |||
| 151 | /** |
||
| 152 | * Test for the loadLanguageById() method. |
||
| 153 | * |
||
| 154 | * @covers \eZ\Publish\API\Repository\LanguageService::loadLanguageById |
||
| 155 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
||
| 156 | */ |
||
| 157 | View Code Duplication | public function testLoadLanguageById() |
|
| 179 | |||
| 180 | /** |
||
| 181 | * Test for the loadLanguageById() method. |
||
| 182 | * |
||
| 183 | * @covers \eZ\Publish\API\Repository\LanguageService::loadLanguageById |
||
| 184 | * @expectedException \eZ\Publish\API\Repository\Exceptions\NotFoundException |
||
| 185 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testLoadLanguageById |
||
| 186 | */ |
||
| 187 | public function testLoadLanguageByIdThrowsNotFoundException() |
||
| 199 | |||
| 200 | /** |
||
| 201 | * Test for the updateLanguageName() method. |
||
| 202 | * |
||
| 203 | * @covers \eZ\Publish\API\Repository\LanguageService::updateLanguageName |
||
| 204 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testLoadLanguageById |
||
| 205 | */ |
||
| 206 | public function testUpdateLanguageName() |
||
| 246 | |||
| 247 | /** |
||
| 248 | * Test service method for updating language name throwing InvalidArgumentException. |
||
| 249 | * |
||
| 250 | * @covers \eZ\Publish\API\Repository\LanguageService::updateLanguageName |
||
| 251 | * @expectedException \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException |
||
| 252 | * @expectedExceptionMessage Argument 'newName' is invalid: '1' is wrong value |
||
| 253 | */ |
||
| 254 | public function testUpdateLanguageNameThrowsInvalidArgumentException() |
||
| 262 | |||
| 263 | /** |
||
| 264 | * Test for the enableLanguage() method. |
||
| 265 | * |
||
| 266 | * @covers \eZ\Publish\API\Repository\LanguageService::enableLanguage |
||
| 267 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testLoadLanguageById |
||
| 268 | */ |
||
| 269 | View Code Duplication | public function testEnableLanguage() |
|
| 291 | |||
| 292 | /** |
||
| 293 | * Test for the disableLanguage() method. |
||
| 294 | * |
||
| 295 | * @covers \eZ\Publish\API\Repository\LanguageService::disableLanguage |
||
| 296 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testLoadLanguageById |
||
| 297 | */ |
||
| 298 | View Code Duplication | public function testDisableLanguage() |
|
| 320 | |||
| 321 | /** |
||
| 322 | * Test for the loadLanguage() method. |
||
| 323 | * |
||
| 324 | * @covers \eZ\Publish\API\Repository\LanguageService::loadLanguage |
||
| 325 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
||
| 326 | */ |
||
| 327 | public function testLoadLanguage() |
||
| 355 | |||
| 356 | /** |
||
| 357 | * Test for the loadLanguage() method. |
||
| 358 | * |
||
| 359 | * @covers \eZ\Publish\API\Repository\LanguageService::loadLanguage |
||
| 360 | * @expectedException \eZ\Publish\API\Repository\Exceptions\NotFoundException |
||
| 361 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testLoadLanguage |
||
| 362 | */ |
||
| 363 | public function testLoadLanguageThrowsNotFoundException() |
||
| 374 | |||
| 375 | /** |
||
| 376 | * Test service method for loading language throwing InvalidArgumentException. |
||
| 377 | * |
||
| 378 | * @expectedException \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException |
||
| 379 | * @expectedExceptionMessage Argument 'languageCode' is invalid: language code has an invalid value |
||
| 380 | * @covers \eZ\Publish\API\Repository\LanguageService::loadLanguage |
||
| 381 | */ |
||
| 382 | public function testLoadLanguageThrowsInvalidArgumentException() |
||
| 388 | |||
| 389 | /** |
||
| 390 | * Test for the loadLanguages() method. |
||
| 391 | * |
||
| 392 | * @covers \eZ\Publish\API\Repository\LanguageService::loadLanguages |
||
| 393 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
||
| 394 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testLoadLanguage |
||
| 395 | */ |
||
| 396 | public function testLoadLanguages() |
||
| 433 | |||
| 434 | /** |
||
| 435 | * Test for the loadLanguages() method. |
||
| 436 | * |
||
| 437 | * @covers \eZ\Publish\API\Repository\LanguageService::loadLanguages |
||
| 438 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
||
| 439 | */ |
||
| 440 | public function loadLanguagesReturnsAnEmptyArrayByDefault() |
||
| 448 | |||
| 449 | /** |
||
| 450 | * Test for the deleteLanguage() method. |
||
| 451 | * |
||
| 452 | * @covers \eZ\Publish\API\Repository\LanguageService::deleteLanguage |
||
| 453 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testLoadLanguages |
||
| 454 | * @expectedException \eZ\Publish\Core\Base\Exceptions\NotFoundException |
||
| 455 | * @expectedExceptionMessage Could not find 'Language' with identifier 'eng-NZ' |
||
| 456 | */ |
||
| 457 | public function testDeleteLanguage() |
||
| 485 | |||
| 486 | /** |
||
| 487 | * Test for the deleteLanguage() method. |
||
| 488 | * |
||
| 489 | * NOTE: This test has a dependency against several methods in the content |
||
| 490 | * service, but because there is no topological sort for test dependencies |
||
| 491 | * we cannot declare them here. |
||
| 492 | * |
||
| 493 | * @covers \eZ\Publish\API\Repository\LanguageService::deleteLanguage |
||
| 494 | * @expectedException \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException |
||
| 495 | * @expectedExceptionMessage Argument 'language' is invalid: Deleting language logic error, some content still references that language and therefore it can't be deleted |
||
| 496 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testDeleteLanguage |
||
| 497 | * @depend(s) eZ\Publish\API\Repository\Tests\ContentServiceTest::testPublishVersion |
||
| 498 | */ |
||
| 499 | View Code Duplication | public function testDeleteLanguageThrowsInvalidArgumentException() |
|
| 534 | |||
| 535 | /** |
||
| 536 | * Test for the getDefaultLanguageCode() method. |
||
| 537 | * |
||
| 538 | * @covers \eZ\Publish\API\Repository\LanguageService::getDefaultLanguageCode |
||
| 539 | */ |
||
| 540 | public function testGetDefaultLanguageCode() |
||
| 550 | |||
| 551 | /** |
||
| 552 | * Test for the createLanguage() method. |
||
| 553 | * |
||
| 554 | * @covers \eZ\Publish\API\Repository\LanguageService::createLanguage |
||
| 555 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
||
| 556 | */ |
||
| 557 | View Code Duplication | public function testCreateLanguageInTransactionWithRollback() |
|
| 595 | |||
| 596 | /** |
||
| 597 | * Test for the createLanguage() method. |
||
| 598 | * |
||
| 599 | * @covers \eZ\Publish\API\Repository\LanguageService::createLanguage |
||
| 600 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
||
| 601 | */ |
||
| 602 | View Code Duplication | public function testCreateLanguageInTransactionWithCommit() |
|
| 636 | |||
| 637 | /** |
||
| 638 | * Test for the updateLanguageName() method. |
||
| 639 | * |
||
| 640 | * @covers \eZ\Publish\API\Repository\LanguageService::updateLanguageName |
||
| 641 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testUpdateLanguageName |
||
| 642 | */ |
||
| 643 | public function testUpdateLanguageNameInTransactionWithRollback() |
||
| 674 | |||
| 675 | /** |
||
| 676 | * Test for the updateLanguageName() method. |
||
| 677 | * |
||
| 678 | * @covers \eZ\Publish\API\Repository\LanguageService::updateLanguageName |
||
| 679 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testUpdateLanguageName |
||
| 680 | */ |
||
| 681 | public function testUpdateLanguageNameInTransactionWithCommit() |
||
| 712 | } |
||
| 713 |
This method has been deprecated. The supplier of the class has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.