Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 public function addModel(Model $model)
 {
     $this->models->{$model->getId()} = $model;
 }