Code Duplication    Length = 31-40 lines in 6 locations

eZ/Publish/API/Repository/Tests/ContentTypeServiceTest.php 5 locations

@@ 3552-3589 (lines=38) @@
3549
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testLoadContentTypeGroup
3550
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testCreateContentTypeGroup
3551
     */
3552
    public function testCreateContentTypeGroupInTransactionWithRollback()
3553
    {
3554
        $repository = $this->getRepository();
3555
3556
        /* BEGIN: Use Case */
3557
        $contentTypeService = $repository->getContentTypeService();
3558
3559
        // Get create struct and set language property
3560
        $groupCreate = $contentTypeService->newContentTypeGroupCreateStruct('new-group');
3561
        /* @todo uncomment when support for multilingual names and descriptions is added
3562
        $groupCreate->mainLanguageCode = 'eng-GB';
3563
        */
3564
3565
        // Start a new transaction
3566
        $repository->beginTransaction();
3567
3568
        try {
3569
            // Create the new content type group
3570
            $groupId = $contentTypeService->createContentTypeGroup($groupCreate)->id;
3571
        } catch (Exception $e) {
3572
            // Cleanup hanging transaction on error
3573
            $repository->rollback();
3574
            throw $e;
3575
        }
3576
3577
        // Rollback all changes
3578
        $repository->rollback();
3579
3580
        try {
3581
            // This call will fail with a "NotFoundException"
3582
            $contentTypeService->loadContentTypeGroup($groupId);
3583
        } catch (NotFoundException $e) {
3584
            return;
3585
        }
3586
        /* END: Use Case */
3587
3588
        $this->fail('Can still load content type group after rollback');
3589
    }
3590
3591
    /**
3592
     * Test for the createContentTypeGroup() method.
@@ 3728-3767 (lines=40) @@
3725
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testDeleteContentTypeGroup
3726
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testLoadContentTypeGroupByIdentifierThrowsNotFoundException
3727
     */
3728
    public function testDeleteContentTypeGroupWithRollback()
3729
    {
3730
        $repository = $this->getRepository();
3731
3732
        /* BEGIN: Use Case */
3733
        $contentTypeService = $repository->getContentTypeService();
3734
3735
        // Get a group create struct
3736
        $groupCreate = $contentTypeService->newContentTypeGroupCreateStruct(
3737
            'new-group'
3738
        );
3739
3740
        // Start a new transaction
3741
        $repository->beginTransaction();
3742
3743
        try {
3744
            // Create the new group
3745
            $group = $contentTypeService->createContentTypeGroup($groupCreate);
3746
3747
            // Delete the currently created group
3748
            $contentTypeService->deleteContentTypeGroup($group);
3749
        } catch (Exception $e) {
3750
            // Cleanup hanging transaction on error
3751
            $repository->rollback();
3752
            throw $e;
3753
        }
3754
3755
        // Rollback all changes
3756
        $repository->rollback();
3757
3758
        try {
3759
            // This call will fail with an "NotFoundException"
3760
            $contentTypeService->loadContentTypeGroupByIdentifier('new-group');
3761
        } catch (NotFoundException $e) {
3762
            // Expected error path
3763
        }
3764
        /* END: Use Case */
3765
3766
        $this->assertTrue(isset($e), 'Group not deleted after rollback');
3767
    }
3768
3769
    /**
3770
     * Test for the deleteContentTypeGroup() method.
@@ 3776-3815 (lines=40) @@
3773
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testDeleteContentTypeGroup
3774
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testLoadContentTypeGroupByIdentifierThrowsNotFoundException
3775
     */
3776
    public function testDeleteContentTypeGroupWithCommit()
3777
    {
3778
        $repository = $this->getRepository();
3779
3780
        /* BEGIN: Use Case */
3781
        $contentTypeService = $repository->getContentTypeService();
3782
3783
        // Get a group create struct
3784
        $groupCreate = $contentTypeService->newContentTypeGroupCreateStruct(
3785
            'new-group'
3786
        );
3787
3788
        // Start a new transaction
3789
        $repository->beginTransaction();
3790
3791
        try {
3792
            // Create the new group
3793
            $group = $contentTypeService->createContentTypeGroup($groupCreate);
3794
3795
            // Delete the currently created group
3796
            $contentTypeService->deleteContentTypeGroup($group);
3797
3798
            // Commit all changes
3799
            $repository->commit();
3800
        } catch (Exception $e) {
3801
            // Cleanup hanging transaction on error
3802
            $repository->rollback();
3803
            throw $e;
3804
        }
3805
3806
        try {
3807
            // This call will fail with an "NotFoundException"
3808
            $contentTypeService->loadContentTypeGroupByIdentifier('new-group');
3809
        } catch (NotFoundException $e) {
3810
            // Expected error path
3811
        }
3812
        /* END: Use Case */
3813
3814
        $this->assertTrue(isset($e), 'Group not deleted after commit.');
3815
    }
3816
3817
    /**
3818
     * Test for the createContentType() method.
@@ 3941-3975 (lines=35) @@
3938
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testLoadContentTypeByIdentifier
3939
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testLoadContentTypeThrowsNotFoundException
3940
     */
3941
    public function testCopyContentTypeInTransactionWithRollback()
3942
    {
3943
        $repository = $this->getRepository();
3944
3945
        /* BEGIN: Use Case */
3946
        $contentTypeService = $repository->getContentTypeService();
3947
3948
        // Load content type to copy
3949
        $contentType = $contentTypeService->loadContentTypeByIdentifier('comment');
3950
3951
        // Start a new transaction
3952
        $repository->beginTransaction();
3953
3954
        try {
3955
            // Complete copy of the content type
3956
            $copiedType = $contentTypeService->copyContentType($contentType);
3957
        } catch (Exception $e) {
3958
            // Cleanup hanging transaction on error
3959
            $repository->rollback();
3960
            throw $e;
3961
        }
3962
3963
        // Rollback all changes
3964
        $repository->rollback();
3965
3966
        try {
3967
            // This call will fail with a "NotFoundException"
3968
            $contentTypeService->loadContentType($copiedType->id);
3969
        } catch (NotFoundException $e) {
3970
            // Expected execution path
3971
        }
3972
        /* END: Use Case */
3973
3974
        $this->assertTrue(isset($e), 'Can still load copied content type after rollback.');
3975
    }
3976
3977
    /**
3978
     * Test for the copyContentType() method.
@@ 4063-4097 (lines=35) @@
4060
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testCopyContentType
4061
     * @depends eZ\Publish\API\Repository\Tests\ContentTypeServiceTest::testLoadContentTypeByIdentifierThrowsNotFoundException
4062
     */
4063
    public function testDeleteContentTypeInTransactionWithCommit()
4064
    {
4065
        $repository = $this->getRepository();
4066
4067
        /* BEGIN: Use Case */
4068
        $contentTypeService = $repository->getContentTypeService();
4069
4070
        // Load content type to copy
4071
        $contentType = $contentTypeService->loadContentTypeByIdentifier('comment');
4072
4073
        // Start a new transaction
4074
        $repository->beginTransaction();
4075
4076
        try {
4077
            // Delete the "comment" content type.
4078
            $contentTypeService->deleteContentType($contentType);
4079
4080
            // Commit all changes
4081
            $repository->commit();
4082
        } catch (Exception $e) {
4083
            // Cleanup hanging transaction on error
4084
            $repository->rollback();
4085
            throw $e;
4086
        }
4087
4088
        try {
4089
            // This call will fail with a "NotFoundException"
4090
            $contentTypeService->loadContentTypeByIdentifier('comment');
4091
        } catch (NotFoundException $e) {
4092
            // Expected execution path
4093
        }
4094
        /* END: Use Case */
4095
4096
        $this->assertTrue(isset($e), 'Can still load content type after rollback.');
4097
    }
4098
4099
    /**
4100
     * Test for the assignContentTypeGroup() method.

eZ/Publish/API/Repository/Tests/LanguageServiceTest.php 1 location

@@ 716-746 (lines=31) @@
713
     * @covers \eZ\Publish\API\Repository\LanguageService::updateLanguageName
714
     * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testUpdateLanguageName
715
     */
716
    public function testUpdateLanguageNameInTransactionWithCommit()
717
    {
718
        $repository = $this->getRepository();
719
720
        /* BEGIN: Use Case */
721
        $languageService = $repository->getContentLanguageService();
722
723
        // Start a new transaction
724
        $repository->beginTransaction();
725
726
        try {
727
            // Load an existing language
728
            $language = $languageService->loadLanguage('eng-US');
729
730
            // Update the language name
731
            $languageService->updateLanguageName($language, 'My English');
732
733
            // Commit all changes
734
            $repository->commit();
735
        } catch (Exception $e) {
736
            // Cleanup hanging transaction on error
737
            $repository->rollback();
738
            throw $e;
739
        }
740
741
        // Load updated version, name will be "My English"
742
        $updatedLanguage = $languageService->loadLanguage('eng-US');
743
        /* END: Use Case */
744
745
        $this->assertEquals('My English', $updatedLanguage->name);
746
    }
747
}
748