/** * @group issue18249 */ public function testIssue18249() { // setup a class C1 with objectrelationlist and pattern name $classIdentifier = strtolower( __FUNCTION__ ); $class1 = new ezpClass( __FUNCTION__, $classIdentifier, '<test_name><test_relation>' ); $class1->add( 'Test name', 'test_name', 'ezstring' ); $class1->add( 'Test Relation', 'test_relation', 'ezobjectrelationlist' ); $class1->store(); $o1 = new ezpObject( 'article', 2, 14, 1, 'eng-GB' ); $o1->title = 'Test_ENG'; $o1->publish(); $o1->addTranslation( 'xxx-XX', array( 'title' => 'Test_XXX' ) ); $o2 = new ezpObject( $classIdentifier, 2, 14, 1, 'xxx-XX' ); $o2->test_name = 'name_'; $o2->test_relation = array( $o1->attribute( 'id' ) ); $o2->publish(); // test O2's name $this->assertEquals( 'name_Test_XXX', $o2->name ); }
/** * Regression test for issue #14983 * * @link http://issues.ez.no/14983 **/ public function testIssue14983() { $className = 'eZImageType test class'; $classIdentifier = 'ezimagetype_test_class'; $attributeName = 'Image'; $attributeIdentifier = 'image'; $attributeType = 'ezimage'; $filePath = 'tests/tests/kernel/datatypes/ezimage/ezimagetype_regression_issue14983.png'; $class = new ezpClass($className, $classIdentifier, $className); $classAttribute = $class->add($attributeName, $attributeIdentifier, $attributeType); $class->store(); $object = new ezpObject($classIdentifier, 2); $object->name = __FUNCTION__; $dataMap = $object->object->dataMap(); $fileAttribute = $dataMap[$attributeIdentifier]; $dataType = new eZImageType(); $dataType->fromString($fileAttribute, $filePath); $fileAttribute->store(); $object->publish(); $object->refresh(); $contentObjectAttributeID = $fileAttribute->attribute("id"); $files = eZImageFile::fetchForContentObjectAttribute($contentObjectAttributeID); $file = $files[0]; // Read stored path, move to trash, and read stored path again $this->assertNotEquals($file, null); $oldFile = $file; $object->object->removeThis(); $object->refresh(); $files = eZImageFile::fetchForContentObjectAttribute($contentObjectAttributeID); $file = $files[0]; $this->assertNotEquals($oldFile, $file, 'The stored file should be renamed when trashed'); }
public function setUp() { parent::setUp(); $imageClass = new ezpClass(self::CLASS_IDENTIFIER, self::CLASS_IDENTIFIER, "<name>"); $imageClass->add("Name", "name", "ezstring"); $imageClass->add("Image", "image", "ezimage"); $imageClass->store(); }
/** * Setup: * - creates a new content class with the tested datatype * - instanciates a content object of that class with the default dataset */ public function setUp() { // create a content class with this datatype // @todo Add naming pattern handling parent::setUp(); $contentClassName = "Datatype {$this->datatype} test"; $contentClassIdentifier = "datatype_{$this->datatype}_test"; $this->attributeIdentifier = "{$this->datatype}_test"; $this->class = new ezpClass($contentClassName, $contentClassIdentifier, '<name>'); $this->class->add('Title', 'title', 'ezstring'); $this->class->add("Test {$this->datatype}", $this->attributeIdentifier, $this->datatype); $this->class->store(); }
/** * Regression test for issue #14983 * * @link http://issues.ez.no/14983 */ public function testIssue14983() { $className = 'eZBinaryFileType test class'; $classIdentifier = 'ezbinaryfiletype_test_class'; $attributeName = 'File'; $attributeIdentifier = 'file'; $attributeType = 'ezbinaryfile'; $filePath = 'tests/tests/kernel/datatypes/ezbinaryfile/ezbinaryfiletype_regression_issue14983.txt'; $class = new ezpClass( $className, $classIdentifier, $className ); $classAttribute = $class->add( $attributeName, $attributeIdentifier, $attributeType ); $class->store(); $object = new ezpObject( $classIdentifier, 2 ); $object->name = __FUNCTION__; { $dataMap = $object->object->dataMap(); $fileAttribute = $dataMap[$attributeIdentifier]; { $dataType = new eZBinaryFileType(); $dataType->fromString( $fileAttribute, $filePath ); } $fileAttribute->store(); } $object->publish(); $object->refresh(); $contentObjectAttributeID = $fileAttribute->attribute( "id" ); $files = eZBinaryFile::fetch( $contentObjectAttributeID ); foreach ( $files as $file ) { // Read stored path, move to trash, and read stored path again $this->assertNotEquals( $file, null ); $storedFileInfo = $file->storedFileInfo(); $storedFilePath = $storedFileInfo['filepath']; $version = $file->attribute( 'version' ); $object->object->removeThis(); $object->refresh(); $file = eZBinaryFile::fetch( $contentObjectAttributeID, $version ); $storedFileInfo = $file->storedFileInfo(); $storedFilePathAfterTrash = $storedFileInfo['filepath']; $this->assertNotEquals( $storedFilePath, $storedFilePathAfterTrash, 'The stored file should be renamed when trashed' ); } }
/** * Regression test for issue 16400 * @link http://issues.ez.no/16400 * @return unknown_type */ public function testIssue16400() { $className = 'Media test class'; $classIdentifier = 'media_test_class'; $filePath = 'tests/tests/kernel/datatypes/ezmedia/ezmediatype_regression_issue16400.flv'; eZFile::create($filePath); $attributeName = 'Media'; $attributeIdentifier = 'media'; $attributeType = 'ezmedia'; //1. test method fetchByContentObjectID $class = new ezpClass($className, $classIdentifier, $className); $class->add($attributeName, $attributeIdentifier, $attributeType); $attribute = $class->class->fetchAttributeByIdentifier($attributeIdentifier); $attribute->setAttribute('can_translate', 0); $class->store(); $object = new ezpObject($classIdentifier, 2); $dataMap = $object->object->dataMap(); $fileAttribute = $dataMap[$attributeIdentifier]; $dataType = new eZMediaType(); $dataType->fromString($fileAttribute, $filePath); $fileAttribute->store(); $object->publish(); $object->refresh(); //verify fetchByContentObjectID $mediaObject = eZMedia::fetch($fileAttribute->attribute('id'), 1); $medias = eZMedia::fetchByContentObjectID($object->object->attribute('id')); $this->assertEquals($mediaObject->attribute('filename'), $medias[0]->attribute('filename')); $medias = eZMedia::fetchByContentObjectID($object->object->attribute('id'), $fileAttribute->attribute('language_code')); $this->assertEquals($mediaObject->attribute('filename'), $medias[0]->attribute('filename')); //2. test issue // create translation $contentObject = $object->object; $storedFileName = $mediaObject->attribute('filename'); $version = $contentObject->createNewVersionIn('nor-NO', $fileAttribute->attribute('language_code')); $version->setAttribute('status', eZContentObjectVersion::STATUS_INTERNAL_DRAFT); $version->store(); $version->removeThis(); $sys = eZSys::instance(); $dir = $sys->storageDirectory(); //verify the file is deleted $storedFilePath = $dir . '/original/video/' . $storedFileName; $file = eZClusterFileHandler::instance($storedFilePath); $this->assertTrue($file->exists($storedFilePath)); if ($file->exists($storedFilePath)) { unlink($storedFilePath); } }
public function setUp() { parent::setUp(); $classIdentifier = "ezimagetype_test_class"; $this->imageClass = new ezpClass("eZImageType test class", $classIdentifier, "eZImageType test class"); $this->imageClass->add("Image", "image", "ezimage"); $this->imageClass->store(); $this->imageObject = new ezpObject($classIdentifier, 2); $this->imageObject->name = __METHOD__; $dataMap = $this->imageObject->object->dataMap(); $this->fileAttribute = $dataMap["image"]; $dataType = new eZImageType(); $dataType->fromString($this->fileAttribute, self::IMAGE_FILE_PATH); $this->fileAttribute->store(); $this->imageObject->publish(); $this->imageObject->refresh(); }
/** * Setup an environment for this test. * */ public function setUp() { parent::setUp(); // Create a class 1 $class1 = new ezpClass('Test 1', 'test_1', '<name>'); $class1->add('Name', 'name'); $class1->add('Relations', 'relations', 'ezobjectrelationlist'); $class1->store(); // Generate class*.php cache files; eZContentClass::classIDByIdentifier('test_1'); // Wait 3 seconds to get the proper timestamps for test sleep(3); // Create a class 2 // It marks class-identifier-cache as expired because a new class has been created $class2 = new ezpClass('Test 2', 'test_2', '<name>'); $class2->add('Name', 'name'); $class2->add('Relations', 'relations', 'ezobjectrelationlist'); $class2->store(); }
public function testIssue18249() { // setup a class C1 with objectrelationlist and pattern name $class1 = new ezpClass('TestClass1', 'testclass1', '<test_name><test_relation>'); $class1->add('Test name', 'test_name', 'ezstring'); $class1->add('Test Relation', 'test_relation', 'ezobjectrelationlist'); $class1->store(); // create an object O1 with eng and nor $o1 = new ezpObject('article', false, 14, 1, 'nor-NO'); $o1->title = 'Test_NOR'; $o1->publish(); $o1->addTranslation('nor-NO', array('title' => 'Test_NOR')); // create an object O2 based on C1 with Nor $o2 = new ezpObject('testclass1', false, 14, 1, 'nor-NO'); $o2->test_name = 'name_'; $o2->test_relation = array($o1->attribute('id')); $o2->publish(); // test O2's name $this->assertEquals('name_Test_NOR', $o2->name); }
/** * Unit test for eZContentObject::relatedObjects() * * Outline: * 1) Create a content class with ezobjectrelation attribute * 2) Create object of that class and relate to another object through the attribute * 3) Check that object loaded by eZContentObject::relatedObjects() is the correct one */ public function testRelatedObjectsWithAttributeId() { // Create a test content class $class = new ezpClass(__FUNCTION__, __FUNCTION__, 'name'); $class->add('Name', 'name', 'ezstring'); $attributeId = $class->add('Single relation #1', 'relation', 'ezobjectrelation')->attribute('id'); $class->store(); // Create an article we will relate our object to $article = new ezpObject('article', 2); $article->title = "Related object #1 for " . __FUNCTION__; $article->publish(); // Create a test object with attribute relation to created article $object = new ezpObject(__FUNCTION__, 2); $object->name = __FUNCTION__; $object->relation = $article->attribute('id'); $object->publish(); $contentObject = eZContentObject::fetch($object->attribute('id')); $relatedObjects = $contentObject->relatedObjects(false, false, $attributeId); $this->assertCount(1, $relatedObjects); $this->assertInstanceOf("eZContentObject", $relatedObjects[0]); $this->assertEquals($article->attribute('id'), $relatedObjects[0]->attribute("id"), "Related object is not the expected object"); }
/** * Unit test for eZContentFunctionCollection::fetchKeyword */ public function testFetchKeyword() { $class1Identifier = __FUNCTION__ . '_1'; // First create two content classes with a keyword attribute $class1 = new ezpClass($class1Identifier, $class1Identifier, '<title>'); $class1->add('Title', 'title', 'ezstring'); $class1->add('Keywords', 'keywords', 'ezkeyword'); $class1->store(); $class1ID = $class1->class->attribute('id'); // Create an instance of each of these classes with attributes $object = new ezpObject($class1Identifier, 2); $object->title = __FUNCTION__; $object->keywords = "keyword1, keyword2, keyword3"; $object->publish(); // Fetch keywords for class 1 $keywords = eZContentFunctionCollection::fetchKeyword('k', $class1ID, 0, 20); $this->assertInternalType('array', $keywords); $this->assertArrayHasKey('result', $keywords); $this->assertInternalType('array', $keywords['result']); $this->assertEquals(3, count($keywords['result'])); foreach ($keywords['result'] as $result) { $this->assertInternalType('array', $result); $this->assertArrayHasKey('keyword', $result); $this->assertArrayHasKey('link_object', $result); $this->assertInstanceOf('eZContentObjectTreeNode', $result['link_object']); } }
/** * Unit test for eZContentObject::relatedObjectCount() * * Outline: * 1) Create a content class with ezobjectrelation and ezobjectrelationlist * attributes * 2) Create objects and relate them to each of these attributes and to the * object itself (common) * 3) Check that attribute count is correct on each attribute and globally */ public function testRelatedObjectCount() { // Create a test content class $class = new ezpClass( __FUNCTION__, __FUNCTION__, 'name' ); $class->add( 'Name', 'name', 'ezstring' ); $attributes['single_relation_1'] = $class->add( 'Single relation #1', 'single_relation_1', 'ezobjectrelation' ) ->attribute( 'id' ); $attributes['single_relation_2'] = $class->add( 'Single relation #2', 'single_relation_2', 'ezobjectrelation' ) ->attribute( 'id' ); $attributes['multiple_relations_1'] = $class->add( 'Multiple relations #1', 'multiple_relations_1', 'ezobjectrelationlist' ) ->attribute( 'id' ); $attributes['multiple_relations_2'] = $class->add( 'Multiple relations #2', 'multiple_relations_2', 'ezobjectrelationlist' ) ->attribute( 'id' ); $class->store(); // create a few articles we will relate our object to $relatedObjects = array(); for( $i = 0; $i < 10; $i++ ) { $article = new ezpObject( 'article', 2 ); $article->title = "Related object #'$i for " . __FUNCTION__; $article->publish(); $relatedObjects[] = $article->attribute( 'id' ); } // Create a test object with various relations (some objects are related // to multiple attributes in order to test reverse relations): // - 1 relation (IDX 0) on single_relation_1 // - 1 relation (IDX 1) on single_relation_2 // - 2 relations (IDX 2, 3) on multiple_relations_1 // - 2 relations (IDX 4, 5) on multiple_relations_2 // - 6 object level relations ((IDX 6, 7, 8, 9) $object = new ezpObject( __FUNCTION__, 2 ); $object->name = __FUNCTION__; $object->single_relation_1 = $relatedObjects[0]; $object->single_relation_2 = $relatedObjects[1]; $object->multiple_relations_1 = array( $relatedObjects[0], $relatedObjects[2], $relatedObjects[3] ); $object->multiple_relations_2 = array( $relatedObjects[1], $relatedObjects[4], $relatedObjects[5] ); $object->addContentObjectRelation( $relatedObjects[0] ); $object->addContentObjectRelation( $relatedObjects[1] ); $object->addContentObjectRelation( $relatedObjects[6] ); $object->addContentObjectRelation( $relatedObjects[7] ); $object->addContentObjectRelation( $relatedObjects[8] ); $object->addContentObjectRelation( $relatedObjects[9] ); $object->publish(); // Create 2 more objects with relations to $relatedObjects[9] // in order to test reverse related objects $otherObject1 = new ezpObject( __FUNCTION__, 2 ); $otherObject1->name = "Reverse test object #1 for " . __FUNCTION__; $otherObject1->single_relation_1 = $relatedObjects[9]; $otherObject1->publish(); $otherObject2 = new ezpObject( __FUNCTION__, 2 ); $otherObject2->name = "Reverse test object #2 for " . __FUNCTION__; $otherObject2->single_relation_2 = $relatedObjects[9]; $otherObject2->publish(); $contentObject = eZContentObject::fetch( $object->attribute( 'id' ) ); $paramAllRelations = array( 'AllRelations' => true ); $paramAttributeRelations = array( 'AllRelations' => eZContentObject::RELATION_ATTRIBUTE ); $paramCommonRelations = array( 'AllRelations' => eZContentObject::RELATION_COMMON ); // Test overall relation count $this->assertEquals( 14, $contentObject->relatedObjectCount( false, false, false, $paramAllRelations ), "Overall relation count should be 14" ); // Test relation count for each attribute $this->assertEquals( 1, $contentObject->relatedObjectCount( false, $attributes['single_relation_1'], false, $paramAttributeRelations ), "Relation count on attribute single_relation_1 should be 1" ); $this->assertEquals( 1, $contentObject->relatedObjectCount( false, $attributes['single_relation_2'], false, $paramAttributeRelations ), "Relation count on attribute single_relation_2 should be 1" ); $this->assertEquals( 3, $contentObject->relatedObjectCount( false, $attributes['multiple_relations_1'], false, $paramAttributeRelations ), "Relation count on attribute multiple_relations_1 should be 3" ); $this->assertEquals( 3, $contentObject->relatedObjectCount( false, $attributes['multiple_relations_2'], false, $paramAttributeRelations ), "Relation count on attribute multiple_relations_2 should be 3" ); // Test common level relation count $this->assertEquals( 6, $contentObject->relatedObjectCount( false, false, false, $paramCommonRelations ), "Common relations count should be 6" ); // Test reverse relation count on $relatedObject[9] // This object is related to: // - the main $object on common level // - one object on single_relation_1 // - another object on single_relation_2 $relatedContentObject = eZContentObject::fetch( $relatedObjects[9] ); $this->assertEquals( 3, $relatedContentObject->relatedObjectCount( false, false, true, $paramAllRelations ), "Overall reverse relation count should be 3" ); $this->assertEquals( 1, $relatedContentObject->relatedObjectCount( false, false, true, $paramCommonRelations ), "Common reverse relation count should be 1" ); $this->assertEquals( 1, $relatedContentObject->relatedObjectCount( false, $attributes['single_relation_1'], true, $paramAttributeRelations ), "Attribute reverse relation count on single_relation_1 should be 1" ); $this->assertEquals( 1, $relatedContentObject->relatedObjectCount( false, $attributes['single_relation_2'], true, $paramAttributeRelations ), "Attribute reverse relation count on single_relation_2 should be 1" ); // Test that trashed objects are not counted as related (issue #15142) $trashObject = eZContentObject::fetch( $relatedObjects[9] ); $trashObject->removeThis(); $this->assertEquals( 13, $contentObject->relatedObjectCount( false, false, false, $paramAllRelations ), "Relation count after move to trash should be 13" ); // Empty the trash foreach( eZContentObjectTrashNode::trashList() as $node ) { eZContentObjectTrashNode::purgeForObject( $node->attribute( 'contentobject_id' ) ); } }
/** * Unit test for eZContentFunctionCollection::fetchKeyword */ public function testFetchKeyword() { $class1Identifier = __FUNCTION__ . '_1'; // First create two content classes with a keyword attribute $class1 = new ezpClass($class1Identifier, $class1Identifier, '<title>'); $class1->add('Title', 'title', 'ezstring'); $class1->add('Keywords', 'keywords', 'ezkeyword'); $class1->store(); $class1ID = $class1->class->attribute('id'); // Create placeholder folders for objects $folder1 = new ezpObject('folder', 2); $folder1->title = __FUNCTION__ . ' A'; $folder1->publish(); $folder2 = new ezpObject('folder', 2); $folder2->title = __FUNCTION__ . ' B'; $folder2->publish(); $folder3 = new ezpObject('folder', $folder1->mainNode->node_id); $folder3->title = __FUNCTION__ . ' A'; $folder3->publish(); // Create an objects to test function $object0 = new ezpObject($class1Identifier, 2); $object0->title = __FUNCTION__ . ' A '; $object0->keywords = "keyword1, keyword2, keyword3"; $object0->publish(); $object1 = new ezpObject($class1Identifier, $folder1->mainNode->node_id); $object1->title = __FUNCTION__ . ' A '; $object1->keywords = "keyword1, keyword2, keyword3"; $object1->publish(); $object2 = new ezpObject($class1Identifier, $folder2->mainNode->node_id); $object2->title = __FUNCTION__ . ' C '; $object2->keywords = "keyword1, keyword2, keyword3"; $object2->publish(); $object3 = new ezpObject($class1Identifier, $folder3->mainNode->node_id); $object3->title = __FUNCTION__ . ' D '; $object3->keywords = "keyword1, keyword2, keyword3"; $object3->publish(); // Fetch keywords for class 1, on all scope $keywords = eZContentFunctionCollection::fetchKeyword('k', $class1ID, 0, 20); $this->assertInternalType('array', $keywords); $this->assertArrayHasKey('result', $keywords); $this->assertInternalType('array', $keywords['result']); $this->assertEquals(12, count($keywords['result'])); foreach ($keywords['result'] as $result) { $this->assertInternalType('array', $result); $this->assertArrayHasKey('keyword', $result); $this->assertArrayHasKey('link_object', $result); $this->assertInstanceOf('eZContentObjectTreeNode', $result['link_object']); } // Fetch keyword1 for class 1, not specifying parent node $keywords = eZContentFunctionCollection::fetchKeyword('keyword1', $class1ID, 0, 20); $this->assertInternalType('array', $keywords); $this->assertArrayHasKey('result', $keywords); $this->assertInternalType('array', $keywords['result']); $this->assertEquals(4, count($keywords['result'])); foreach ($keywords['result'] as $result) { $this->assertInternalType('array', $result); $this->assertArrayHasKey('keyword', $result); $this->assertArrayHasKey('link_object', $result); $this->assertInstanceOf('eZContentObjectTreeNode', $result['link_object']); } // Fetch keyword1 for class 1, directly below parentNodeId (rootNode) $keywords = eZContentFunctionCollection::fetchKeyword('keyword1', $class1ID, 0, 20, false, array(), 2); $this->assertInternalType('array', $keywords); $this->assertArrayHasKey('result', $keywords); $this->assertInternalType('array', $keywords['result']); $this->assertEquals(1, count($keywords['result'])); foreach ($keywords['result'] as $result) { $this->assertInternalType('array', $result); $this->assertArrayHasKey('keyword', $result); $this->assertArrayHasKey('link_object', $result); $this->assertInstanceOf('eZContentObjectTreeNode', $result['link_object']); } // Fetch keywords for class 1, directly below parentNodeId (specific folder) $keywords = eZContentFunctionCollection::fetchKeyword('keyword1', $class1ID, 0, 20, false, array(), $folder1->mainNode->node_id); $this->assertInternalType('array', $keywords); $this->assertArrayHasKey('result', $keywords); $this->assertInternalType('array', $keywords['result']); $this->assertEquals(1, count($keywords['result'])); foreach ($keywords['result'] as $result) { $this->assertInternalType('array', $result); $this->assertArrayHasKey('keyword', $result); $this->assertArrayHasKey('link_object', $result); $this->assertInstanceOf('eZContentObjectTreeNode', $result['link_object']); } // Fetch keywords for class 1, from root folder, with depth equal to 2 $keywords = eZContentFunctionCollection::fetchKeyword('keyword1', $class1ID, 0, 20, false, array(), 2, true, false, 2); $this->assertInternalType('array', $keywords); $this->assertArrayHasKey('result', $keywords); $this->assertInternalType('array', $keywords['result']); $this->assertEquals(3, count($keywords['result'])); foreach ($keywords['result'] as $result) { $this->assertInternalType('array', $result); $this->assertArrayHasKey('keyword', $result); $this->assertArrayHasKey('link_object', $result); $this->assertInstanceOf('eZContentObjectTreeNode', $result['link_object']); } // Fetch keywords for class 1, from sepecific node, with depth equal to 2 $keywords = eZContentFunctionCollection::fetchKeyword('keyword1', $class1ID, 0, 20, false, array(), $folder1->mainNode->node_id, true, false, 2); $this->assertInternalType('array', $keywords); $this->assertArrayHasKey('result', $keywords); $this->assertInternalType('array', $keywords['result']); $this->assertEquals(2, count($keywords['result'])); foreach ($keywords['result'] as $result) { $this->assertInternalType('array', $result); $this->assertArrayHasKey('keyword', $result); $this->assertArrayHasKey('link_object', $result); $this->assertInstanceOf('eZContentObjectTreeNode', $result['link_object']); } // Fetch keywords for class 1, from root folder, with depth equal to 0 (unlimited) $keywords = eZContentFunctionCollection::fetchKeyword('keyword1', $class1ID, 0, 20, false, array(), 2, true, false, 0); $this->assertInternalType('array', $keywords); $this->assertArrayHasKey('result', $keywords); $this->assertInternalType('array', $keywords['result']); $this->assertEquals(4, count($keywords['result'])); foreach ($keywords['result'] as $result) { $this->assertInternalType('array', $result); $this->assertArrayHasKey('keyword', $result); $this->assertArrayHasKey('link_object', $result); $this->assertInstanceOf('eZContentObjectTreeNode', $result['link_object']); } // Fetch keywords for class 1, from specific folder, with depth equal to 0 (unlimited) $keywords = eZContentFunctionCollection::fetchKeyword('keyword1', $class1ID, 0, 20, false, array(), $folder1->mainNode->node_id, true, false, 0); $this->assertInternalType('array', $keywords); $this->assertArrayHasKey('result', $keywords); $this->assertInternalType('array', $keywords['result']); $this->assertEquals(2, count($keywords['result'])); foreach ($keywords['result'] as $result) { $this->assertInternalType('array', $result); $this->assertArrayHasKey('keyword', $result); $this->assertArrayHasKey('link_object', $result); $this->assertInstanceOf('eZContentObjectTreeNode', $result['link_object']); } }