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); }