| @@ 27-51 (lines=25) @@ | ||
| 24 | * @see \eZ\Publish\API\Repository\LanguageService::createLanguage() |
|
| 25 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
|
| 26 | */ |
|
| 27 | public function testCreateLanguageThrowsUnauthorizedException() |
|
| 28 | { |
|
| 29 | $this->expectException(\eZ\Publish\API\Repository\Exceptions\UnauthorizedException::class); |
|
| 30 | ||
| 31 | $repository = $this->getRepository(); |
|
| 32 | ||
| 33 | $anonymousUserId = $this->generateId('user', 10); |
|
| 34 | /* BEGIN: Use Case */ |
|
| 35 | // $anonymousUserId is the ID of the "Anonymous" user in a eZ |
|
| 36 | // Publish demo installation. |
|
| 37 | $userService = $repository->getUserService(); |
|
| 38 | $languageService = $repository->getContentLanguageService(); |
|
| 39 | ||
| 40 | $languageCreate = $languageService->newLanguageCreateStruct(); |
|
| 41 | $languageCreate->enabled = true; |
|
| 42 | $languageCreate->name = 'English (New Zealand)'; |
|
| 43 | $languageCreate->languageCode = 'eng-NZ'; |
|
| 44 | ||
| 45 | // Set anonymous user |
|
| 46 | $repository->setCurrentUser($userService->loadUser($anonymousUserId)); |
|
| 47 | ||
| 48 | // This call will fail with a "UnauthorizedException" |
|
| 49 | $languageService->createLanguage($languageCreate); |
|
| 50 | /* END: Use Case */ |
|
| 51 | } |
|
| 52 | ||
| 53 | /** |
|
| 54 | * Test for the updateLanguageName() method. |
|
| @@ 593-630 (lines=38) @@ | ||
| 590 | * @covers \eZ\Publish\API\Repository\LanguageService::createLanguage |
|
| 591 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
|
| 592 | */ |
|
| 593 | public function testCreateLanguageInTransactionWithRollback() |
|
| 594 | { |
|
| 595 | $repository = $this->getRepository(); |
|
| 596 | ||
| 597 | /* BEGIN: Use Case */ |
|
| 598 | $languageService = $repository->getContentLanguageService(); |
|
| 599 | ||
| 600 | // Start a new transaction |
|
| 601 | $repository->beginTransaction(); |
|
| 602 | ||
| 603 | try { |
|
| 604 | // Get create struct and set properties |
|
| 605 | $languageCreate = $languageService->newLanguageCreateStruct(); |
|
| 606 | $languageCreate->enabled = true; |
|
| 607 | $languageCreate->name = 'English (New Zealand)'; |
|
| 608 | $languageCreate->languageCode = 'eng-NZ'; |
|
| 609 | ||
| 610 | // Create new language |
|
| 611 | $languageService->createLanguage($languageCreate); |
|
| 612 | } catch (Exception $e) { |
|
| 613 | // Cleanup hanging transaction on error |
|
| 614 | $repository->rollback(); |
|
| 615 | throw $e; |
|
| 616 | } |
|
| 617 | ||
| 618 | // Rollback all changes |
|
| 619 | $repository->rollback(); |
|
| 620 | ||
| 621 | try { |
|
| 622 | // This call will fail with a "NotFoundException" |
|
| 623 | $languageService->loadLanguage('eng-NZ'); |
|
| 624 | } catch (NotFoundException $e) { |
|
| 625 | // Expected execution path |
|
| 626 | } |
|
| 627 | /* END: Use Case */ |
|
| 628 | ||
| 629 | $this->assertTrue(isset($e), 'Can still load language after rollback'); |
|
| 630 | } |
|
| 631 | ||
| 632 | /** |
|
| 633 | * Test for the createLanguage() method. |
|
| @@ 638-671 (lines=34) @@ | ||
| 635 | * @covers \eZ\Publish\API\Repository\LanguageService::createLanguage |
|
| 636 | * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testCreateLanguage |
|
| 637 | */ |
|
| 638 | public function testCreateLanguageInTransactionWithCommit() |
|
| 639 | { |
|
| 640 | $repository = $this->getRepository(); |
|
| 641 | ||
| 642 | /* BEGIN: Use Case */ |
|
| 643 | $languageService = $repository->getContentLanguageService(); |
|
| 644 | ||
| 645 | // Start a new transaction |
|
| 646 | $repository->beginTransaction(); |
|
| 647 | ||
| 648 | try { |
|
| 649 | // Get create struct and set properties |
|
| 650 | $languageCreate = $languageService->newLanguageCreateStruct(); |
|
| 651 | $languageCreate->enabled = true; |
|
| 652 | $languageCreate->name = 'English (New Zealand)'; |
|
| 653 | $languageCreate->languageCode = 'eng-NZ'; |
|
| 654 | ||
| 655 | // Create new language |
|
| 656 | $languageService->createLanguage($languageCreate); |
|
| 657 | ||
| 658 | // Commit all changes |
|
| 659 | $repository->commit(); |
|
| 660 | } catch (Exception $e) { |
|
| 661 | // Cleanup hanging transaction on error |
|
| 662 | $repository->rollback(); |
|
| 663 | throw $e; |
|
| 664 | } |
|
| 665 | ||
| 666 | // Load new language |
|
| 667 | $language = $languageService->loadLanguage('eng-NZ'); |
|
| 668 | /* END: Use Case */ |
|
| 669 | ||
| 670 | $this->assertEquals('eng-NZ', $language->languageCode); |
|
| 671 | } |
|
| 672 | ||
| 673 | /** |
|
| 674 | * Test for the updateLanguageName() method. |
|
| @@ 798-834 (lines=37) @@ | ||
| 795 | * @depends eZ\Publish\API\Repository\Tests\SectionServiceTest::testCreateSection |
|
| 796 | * @depends eZ\Publish\API\Repository\Tests\SectionServiceTest::testLoadSectionByIdentifier |
|
| 797 | */ |
|
| 798 | public function testCreateSectionInTransactionWithRollback() |
|
| 799 | { |
|
| 800 | $repository = $this->getRepository(); |
|
| 801 | ||
| 802 | /* BEGIN: Use Case */ |
|
| 803 | $sectionService = $repository->getSectionService(); |
|
| 804 | ||
| 805 | // Start a new transaction |
|
| 806 | $repository->beginTransaction(); |
|
| 807 | ||
| 808 | try { |
|
| 809 | // Get a create struct and set some properties |
|
| 810 | $sectionCreate = $sectionService->newSectionCreateStruct(); |
|
| 811 | $sectionCreate->name = 'Test Section'; |
|
| 812 | $sectionCreate->identifier = 'uniqueKey'; |
|
| 813 | ||
| 814 | // Create a new section |
|
| 815 | $sectionService->createSection($sectionCreate); |
|
| 816 | } catch (Exception $e) { |
|
| 817 | // Cleanup hanging transaction on error |
|
| 818 | $repository->rollback(); |
|
| 819 | throw $e; |
|
| 820 | } |
|
| 821 | ||
| 822 | // Rollback all changes |
|
| 823 | $repository->rollback(); |
|
| 824 | ||
| 825 | try { |
|
| 826 | // This call will fail with a not found exception |
|
| 827 | $sectionService->loadSectionByIdentifier('uniqueKey'); |
|
| 828 | } catch (NotFoundException $e) { |
|
| 829 | // Expected execution path |
|
| 830 | } |
|
| 831 | /* END: Use Case */ |
|
| 832 | ||
| 833 | $this->assertTrue(isset($e), 'Can still load section after rollback.'); |
|
| 834 | } |
|
| 835 | ||
| 836 | /** |
|
| 837 | * Test for the createSection() method. |
|
| @@ 29-52 (lines=24) @@ | ||
| 26 | * @see \eZ\Publish\API\Repository\SectionService::createSection() |
|
| 27 | * @depends eZ\Publish\API\Repository\Tests\SectionServiceTest::testCreateSection |
|
| 28 | */ |
|
| 29 | public function testCreateSectionThrowsUnauthorizedException() |
|
| 30 | { |
|
| 31 | $this->expectException(\eZ\Publish\API\Repository\Exceptions\UnauthorizedException::class); |
|
| 32 | ||
| 33 | $repository = $this->getRepository(); |
|
| 34 | ||
| 35 | $anonymousUserId = $this->generateId('user', 10); |
|
| 36 | /* BEGIN: Use Case */ |
|
| 37 | // $anonymousUserId is the ID of the "Anonymous" user in a eZ |
|
| 38 | // Publish demo installation. |
|
| 39 | $userService = $repository->getUserService(); |
|
| 40 | $sectionService = $repository->getSectionService(); |
|
| 41 | ||
| 42 | $sectionCreate = $sectionService->newSectionCreateStruct(); |
|
| 43 | $sectionCreate->name = 'Test Section'; |
|
| 44 | $sectionCreate->identifier = 'uniqueKey'; |
|
| 45 | ||
| 46 | // Set anonymous user |
|
| 47 | $repository->setCurrentUser($userService->loadUser($anonymousUserId)); |
|
| 48 | ||
| 49 | // This call will fail with a "UnauthorizedException" |
|
| 50 | $sectionService->createSection($sectionCreate); |
|
| 51 | /* END: Use Case */ |
|
| 52 | } |
|
| 53 | ||
| 54 | /** |
|
| 55 | * Test for the loadSection() method. |
|