public function testSerialize() { $model = new Model('Order', 'Order object'); $model->addProperty(new Property('id', 'integer')); $model->addProperty(new Property('type', 'string')); $model->addProperty(new PropertyReference('customer', 'Customer')); $model->addProperty(new Property('petId', 'integer')); $model->addProperty(new Property('shipDate', 'string')); $model->setRequired(array('type', 'customer', 'petId')); $model->setSubTypes(array('PetOrder', 'FooOrder')); $model->setDiscriminator('type'); $content = <<<'JSON' { "id": "Order", "description": "Order object", "required": ["type", "customer", "petId"], "discriminator": "type", "subTypes": ["PetOrder", "FooOrder"], "properties": { "id": { "id": "id", "type": "integer" }, "type": { "id": "type", "type": "string" }, "customer": { "id": "customer", "$ref": "Customer" }, "petId": { "id": "petId", "type": "integer" }, "shipDate": { "id": "shipDate", "type": "string" } } } JSON; $this->assertRecordEqualsContent($model, $content); }
public function testSerialize() { $operation = new Operation('PUT', 'updatePet', 'Update an existing pet'); $api = new Api('/foo', 'Foobar'); $api->addOperation($operation); $model = new Model('Order', 'Order object'); $model->addProperty(new Property('id', 'integer')); $model->addProperty(new PropertyReference('customer', 'Customer')); $model->addProperty(new Property('petId', 'integer')); $model->addProperty(new Property('quantity', 'integer')); $model->addProperty(new Property('status', 'string')); $model->addProperty(new Property('shipDate', 'string')); $declaration = new Declaration('1.0.0', 'http://petstore.swagger.wordnik.com/api', '/store'); $declaration->addApi($api); $declaration->addModel($model); $content = <<<'JSON' { "apiVersion": "1.0.0", "swaggerVersion": "1.2", "basePath": "http://petstore.swagger.wordnik.com/api", "resourcePath": "/store", "apis": [{ "path": "/foo", "description": "Foobar", "operations": [{ "method": "PUT", "nickname": "updatePet", "summary": "Update an existing pet", "parameters": [], "responseMessages": [] }] }], "models": { "Order": { "id": "Order", "description": "Order object", "properties": { "id": { "id": "id", "type": "integer" }, "customer": { "id": "customer", "$ref": "Customer" }, "petId": { "id": "petId", "type": "integer" }, "quantity": { "id": "quantity", "type": "integer" }, "status": { "id": "status", "type": "string" }, "shipDate": { "id": "shipDate", "type": "string" } } } } } JSON; $this->assertRecordEqualsContent($declaration, $content); }
protected function getModels(Resource $resource) { $generator = new JsonSchema($this->targetNamespace); $data = json_decode($generator->generate($resource)); $models = new \stdClass(); $properties = $data->properties; foreach ($properties as $name => $property) { $description = isset($property->description) ? $property->description : null; $required = isset($property->required) ? $property->required : null; $properties = isset($property->properties) ? $property->properties : null; $model = new Model($name, $description, $required); $model->setProperties($properties); $models->{$name} = $model; } $definitions = $data->definitions; foreach ($definitions as $name => $definition) { $description = isset($definition->description) ? $definition->description : null; $required = isset($definition->required) ? $definition->required : null; $properties = isset($definition->properties) ? $definition->properties : null; $model = new Model($name, $description, $required); $model->setProperties($properties); $models->{$name} = $model; } return $models; }
public function addModel(Model $model) { $this->models->{$model->getId()} = $model; }