/** * generate the resource with all its bits and parts * * @param BundleInterface $bundle bundle * @param string $document document name * @param string $format format of config files (please use xml) * @param array $fields fields to add * @param boolean $withRepository generate repository class * * @return void */ public function generate(BundleInterface $bundle, $document, $format, array $fields, $withRepository) { $dir = $bundle->getPath(); $basename = $this->getBundleBaseName($document); $bundleNamespace = substr(get_class($bundle), 0, 0 - strlen($bundle->getName())); if (!is_null($this->json)) { $this->json->setNamespace($bundleNamespace); } // add more info to the fields array $mapper = $this->mapper; $fields = array_map(function ($field) use($mapper) { return $mapper->map($field, $this->json); }, $fields); $parameters = $this->parameterBuilder->setParameter('document', $document)->setParameter('base', $bundleNamespace)->setParameter('bundle', $bundle->getName())->setParameter('format', $format)->setParameter('json', $this->json)->setParameter('fields', $fields)->setParameter('basename', $basename)->setParameter('isrecordOriginFlagSet', $this->json->isRecordOriginFlagSet())->setParameter('recordOriginModifiable', $this->json->isRecordOriginModifiable())->setParameter('collection', $this->json->getServiceCollection())->getParameters(); $this->generateDocument($parameters, $dir, $document, $withRepository); $this->generateSerializer($parameters, $dir, $document); $this->generateModel($parameters, $dir, $document); if ($this->json instanceof JsonDefinition && $this->json->hasFixtures() === true) { $this->generateFixtures($parameters, $dir, $document); } if ($this->generateController) { $this->generateController($parameters, $dir, $document); } $this->generateParameters($dir); }
/** * Test JsonDefinitionHash::getDefAsArray() with field definition * * @return void */ public function testGetDefAsArrayWithDefinition() { $name = __FUNCTION__ . __LINE__; $id = __FUNCTION__ . __LINE__; $namespace = __NAMESPACE__; $parent = new JsonDefinition((new Schema\Definition())->setId($id)); $parent->setNamespace($namespace); $definition = (new Schema\Field())->setTitle(__FUNCTION__ . __LINE__)->setDescription(__FUNCTION__ . __LINE__)->setExposeAs(__FUNCTION__ . __LINE__)->setReadOnly(true)->setRequired(true); $field = new JsonDefinitionHash($name, $parent, [], $definition); $this->assertEquals(['name' => $field->getName(), 'type' => $field->getType(), 'exposedName' => $definition->getExposeAs(), 'doctrineType' => $field->getTypeDoctrine(), 'serializerType' => $field->getTypeSerializer(), 'relType' => JsonDefinitionHash::REL_TYPE_EMBED, 'isClassType' => true, 'constraints' => [], 'title' => $definition->getTitle(), 'description' => $definition->getDescription(), 'readOnly' => $definition->getReadOnly(), 'required' => $definition->getRequired()], $field->getDefAsArray()); }