public function testConvertDescendantConvertsArrayToObjectInFolderContainer()
 {
     /** @var  PHPUnit_Framework_MockObject_MockObject|JsonConverter $jsonConverterMock */
     $jsonConverterMock = $this->getMockBuilder('\\Dkd\\PhpCmis\\Converter\\JsonConverter')->setMethods(array('convertObject'))->getMock();
     $response = $this->getResponseFixtureContentAsArray('Cmis/v1.1/BrowserBinding/getDescendants-response.log');
     // example with children to test recursion
     $convertInputData = $response[3];
     $dummyObjectData = new ObjectData();
     $jsonConverterMock->expects($this->any())->method('convertObject')->willReturn($dummyObjectData);
     $expectedObjectInFolderContainer = new ObjectInFolderContainer(new ObjectInFolderData());
     $objectInFolderData = new ObjectInFolderData();
     $objectInFolderData->setObject($dummyObjectData);
     $objectInFolderData->setPathSegment('My_Folder-1-0');
     $expectedObjectInFolderContainer->setObject($objectInFolderData);
     $dummyObjectInFolderData1 = new ObjectInFolderData();
     $dummyObjectInFolderData1->setObject($dummyObjectData);
     $dummyObjectInFolderData1->setPathSegment('My_Document-2-0');
     $dummyObjectInFolderContainer1 = new ObjectInFolderContainer(new ObjectInFolderData());
     $dummyObjectInFolderContainer1->setObject($dummyObjectInFolderData1);
     $children[] = $dummyObjectInFolderContainer1;
     $dummyObjectInFolderData2 = new ObjectInFolderData();
     $dummyObjectInFolderData2->setObject($dummyObjectData);
     $dummyObjectInFolderData2->setPathSegment('My_Document-2-1');
     $dummyObjectInFolderContainer2 = new ObjectInFolderContainer(new ObjectInFolderData());
     $dummyObjectInFolderContainer2->setObject($dummyObjectInFolderData2);
     $children[] = $dummyObjectInFolderContainer2;
     $dummyObjectInFolderData3 = new ObjectInFolderData();
     $dummyObjectInFolderData3->setObject($dummyObjectData);
     $dummyObjectInFolderData3->setPathSegment('My_Document-2-2');
     $dummyObjectInFolderContainer3 = new ObjectInFolderContainer(new ObjectInFolderData());
     $dummyObjectInFolderContainer3->setObject($dummyObjectInFolderData3);
     $children[] = $dummyObjectInFolderContainer3;
     $dummyObjectInFolderData4 = new ObjectInFolderData();
     $dummyObjectInFolderData4->setObject($dummyObjectData);
     $dummyObjectInFolderData4->setPathSegment('My_Folder-2-0');
     $dummyObjectInFolderContainer4 = new ObjectInFolderContainer(new ObjectInFolderData());
     $dummyObjectInFolderContainer4->setObject($dummyObjectInFolderData4);
     $children[] = $dummyObjectInFolderContainer4;
     $dummyObjectInFolderData5 = new ObjectInFolderData();
     $dummyObjectInFolderData5->setObject($dummyObjectData);
     $dummyObjectInFolderData5->setPathSegment('My_Folder-2-1');
     $dummyObjectInFolderContainer5 = new ObjectInFolderContainer(new ObjectInFolderData());
     $dummyObjectInFolderContainer5->setObject($dummyObjectInFolderData5);
     $children[] = $dummyObjectInFolderContainer5;
     $expectedObjectInFolderContainer->setChildren($children);
     $this->assertEquals($expectedObjectInFolderContainer, $jsonConverterMock->convertDescendant($convertInputData));
 }
 /**
  * @depends testSetObjectsSetsProperty
  */
 public function testGetObjectsReturnsPropertyValue()
 {
     $children = array($this->getObjectInFolderContainerMock());
     $this->objectInFolderContainer->setChildren($children);
     $this->assertSame($children, $this->objectInFolderContainer->getChildren());
 }
 /**
  * Convert given input data array to a ObjectInFolderContainer object
  *
  * @param array|null $data
  * @return null|ObjectInFolderContainer
  * @throws CmisRuntimeException
  */
 public function convertDescendant(array $data = null)
 {
     if (empty($data)) {
         return null;
     }
     $object = null;
     if (isset($data[JSONConstants::JSON_OBJECTINFOLDERCONTAINER_OBJECT])) {
         $object = $this->convertObjectInFolder($data[JSONConstants::JSON_OBJECTINFOLDERCONTAINER_OBJECT]);
     }
     if ($object === null) {
         throw new CmisRuntimeException('Given data could not be converted to ObjectInFolder!');
     }
     $objectInFolderContainer = new ObjectInFolderContainer($object);
     $children = array();
     if (isset($data[JSONConstants::JSON_OBJECTINFOLDERCONTAINER_CHILDREN])) {
         foreach ((array) $data[JSONConstants::JSON_OBJECTINFOLDERCONTAINER_CHILDREN] as $childData) {
             $child = $this->convertDescendant($childData);
             if ($child !== null) {
                 $children[] = $child;
             }
         }
     }
     $objectInFolderContainer->setChildren($children);
     $objectInFolderContainer->setExtensions($this->convertExtension($data, JSONConstants::getObjectInFolderContainerKeys()));
     return $objectInFolderContainer;
 }