/** * @covers Contentful\Delivery\ContentTypeField::__construct * @covers Contentful\Delivery\ContentTypeField::getId * @covers Contentful\Delivery\ContentTypeField::getName * @covers Contentful\Delivery\ContentTypeField::getType * @covers Contentful\Delivery\ContentTypeField::getLinkType * @covers Contentful\Delivery\ContentTypeField::getItemsLinkType * @covers Contentful\Delivery\ContentTypeField::getItemsType * @covers Contentful\Delivery\ContentTypeField::isRequired * @covers Contentful\Delivery\ContentTypeField::isLocalized * @covers Contentful\Delivery\ContentTypeField::isDisabled */ public function testGetter() { $field = new ContentTypeField('id', 'name', 'type', 'linkType', 'itemsType', 'itemsLinkType', true, false, false); $this->assertEquals('id', $field->getId()); $this->assertEquals('name', $field->getName()); $this->assertEquals('type', $field->getType()); $this->assertEquals('linkType', $field->getLinkType()); $this->assertEquals('itemsLinkType', $field->getItemsLinkType()); $this->assertEquals('itemsType', $field->getItemsType()); $this->assertEquals(true, $field->isRequired()); $this->assertEquals(false, $field->isLocalized()); $this->assertEquals(false, $field->isDisabled()); }
/** * Fields that reference links (or arrays of links) also get a method to get just the ID. * * @param ContentTypeField $field * * @return string */ protected function generateIdMethod(ContentTypeField $field) { $parameters = $field->isLocalized() ? '$locale = null' : ''; $lines = ['<spaces>/**']; if ($field->isLocalized()) { $lines[] = '<spaces> * @param Locale|string|null $locale'; $lines[] = '<spaces> *'; } if ($field->getType() === 'Link') { $lines[] = '<spaces> * @return string'; $lines[] = '<spaces> */'; $lines[] = '<spaces>public function get' . ucfirst($field->getId()) . 'Id(' . $parameters . ')'; $lines[] = '<spaces>{'; if ($field->isLocalized()) { $lines[] = '<spaces><spaces>$locale = $this->getLocaleFromInput($locale);'; $lines[] = ''; $lines[] = '<spaces><spaces>return $this->' . $this->getPropertyName($field) . '->$locale->getId();'; } else { $lines[] = '<spaces><spaces>return $this->' . $this->getPropertyName($field) . '->getId();'; } } if (false && $field->getType() === 'Array' && $field->getItemsType() === 'Link') { $lines[] = '<spaces> * @return string[]'; $lines[] = '<spaces> */'; $lines[] = '<spaces>public function get' . ucfirst($field->getId()) . 'Id(' . $parameters . ')'; $lines[] = '<spaces>{'; if ($field->isLocalized()) { $lines[] = '<spaces><spaces>$locale = $this->getLocaleFromInput($locale);'; $lines[] = ''; $lines[] = '<spaces><spaces>$result = $this->' . $this->getPropertyName($field) . '->$locale->getId();'; } else { $lines[] = '<spaces><spaces>$result = $this->' . $this->getPropertyName($field) . '->getId();'; } $lines[] = '<spaces><spaces>return array_map(function ($value) use ($client) {'; $lines[] = '<spaces><spaces><spaces>return $value->getId();'; $lines[] = '<spaces><spaces>}, $result);'; } $lines[] = '<spaces>}'; return implode("\n", $lines); }