/**
  * Adds a included resource for a compound document
  * @param JsonApiResource $resource
  * @return boolean True when added, false if not
  */
 public function addIncluded(JsonApiResource $resource)
 {
     $type = $resource->getType();
     $id = $resource->getId();
     $relationships = $resource->getRelationships();
     if (isset($this->index[$type][$id]) || !$resource->getAttributes() && !$relationships) {
         return false;
     }
     $this->indexResource($resource);
     if (!isset($this->included[$type])) {
         $this->included[$type] = array();
     }
     $this->included[$type][$id] = $resource;
     $relationshipPath = $resource->getRelationshipPath();
     foreach ($relationships as $name => $relationship) {
         $fieldRelationshipPath = ($relationshipPath ? $relationshipPath . '.' : '') . $name;
         if (!$this->query->isIncluded($fieldRelationshipPath)) {
             continue;
         }
         $data = $relationship->getData();
         if (is_array($data)) {
             foreach ($data as $d) {
                 $this->addIncluded($d);
             }
         } elseif ($data) {
             $this->addIncluded($data);
         }
     }
     return true;
 }
 /**
  * @dataProvider providerIsIncluded
  */
 public function testIsIncluded($expected, $include, $type)
 {
     $query = new JsonApiQuery(array(JsonApiQuery::PARAMETER_INCLUDE => $include));
     $result = $query->isIncluded($type);
     $this->assertEquals($result, $expected);
 }