Allow optional name and description fields for project type
parent
b6826f3523
commit
cc55b56dd7
|
@ -3,7 +3,26 @@
|
||||||
"name": "Package",
|
"name": "Package",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"required": [ "name", "description" ],
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"not": {
|
||||||
|
"enum": ["project"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": ["name", "description"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"enum": ["project"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": ["type"]
|
||||||
|
}
|
||||||
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
"name": {
|
"name": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
|
|
|
@ -198,7 +198,7 @@ class JsonFile
|
||||||
|
|
||||||
if ($schema === self::LAX_SCHEMA) {
|
if ($schema === self::LAX_SCHEMA) {
|
||||||
$schemaData->additionalProperties = true;
|
$schemaData->additionalProperties = true;
|
||||||
$schemaData->required = array();
|
$schemaData->oneOf = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$validator = new Validator();
|
$validator = new Validator();
|
||||||
|
|
|
@ -41,18 +41,35 @@ class ComposerSchemaTest extends TestCase
|
||||||
{
|
{
|
||||||
$json = '{ }';
|
$json = '{ }';
|
||||||
$result = $this->check($json);
|
$result = $this->check($json);
|
||||||
$this->assertContains(array('property' => 'name', 'message' => 'The property name is required', 'constraint' => 'required'), $result);
|
$this->assertContains(array('property' => 'type', 'message' => 'The property type is required', 'constraint' => 'required'), $result);
|
||||||
$this->assertContains(array('property' => 'description', 'message' => 'The property description is required', 'constraint' => 'required'), $result);
|
|
||||||
|
|
||||||
$json = '{ "name": "vendor/package" }';
|
$json = '{ "name": "vendor/package" }';
|
||||||
$this->assertEquals(array(
|
$this->assertEquals(array(
|
||||||
|
array('property' => 'type', 'message' => 'The property type is required', 'constraint' => 'required'),
|
||||||
array('property' => 'description', 'message' => 'The property description is required', 'constraint' => 'required'),
|
array('property' => 'description', 'message' => 'The property description is required', 'constraint' => 'required'),
|
||||||
|
array('property' => '', 'message' => 'Failed to match exactly one schema', 'constraint' => 'oneOf'),
|
||||||
), $this->check($json));
|
), $this->check($json));
|
||||||
|
|
||||||
$json = '{ "description": "generic description" }';
|
$json = '{ "description": "generic description" }';
|
||||||
$this->assertEquals(array(
|
$this->assertEquals(array(
|
||||||
|
array('property' => 'type', 'message' => 'The property type is required', 'constraint' => 'required'),
|
||||||
array('property' => 'name', 'message' => 'The property name is required', 'constraint' => 'required'),
|
array('property' => 'name', 'message' => 'The property name is required', 'constraint' => 'required'),
|
||||||
|
array('property' => '', 'message' => 'Failed to match exactly one schema', 'constraint' => 'oneOf'),
|
||||||
), $this->check($json));
|
), $this->check($json));
|
||||||
|
|
||||||
|
$json = '{ "type": "library" }';
|
||||||
|
$this->assertEquals(array(
|
||||||
|
array('property' => 'type', 'message' => 'Does not have a value in the enumeration ["project"]', 'constraint' => 'enum', 'enum' => array('project')),
|
||||||
|
array('property' => 'name', 'message' => 'The property name is required', 'constraint' => 'required'),
|
||||||
|
array('property' => 'description', 'message' => 'The property description is required', 'constraint' => 'required'),
|
||||||
|
array('property' => '', 'message' => 'Failed to match exactly one schema', 'constraint' => 'oneOf'),
|
||||||
|
), $this->check($json));
|
||||||
|
|
||||||
|
$json = '{ "type": "project" }';
|
||||||
|
$this->assertTrue($this->check($json));
|
||||||
|
|
||||||
|
$json = '{ "name": "vendor/package", "description": "description" }';
|
||||||
|
$this->assertTrue($this->check($json));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testOptionalAbandonedProperty()
|
public function testOptionalAbandonedProperty()
|
||||||
|
|
Loading…
Reference in New Issue