diff --git a/phpdraft b/phpdraft index 658e869f..16be3800 100755 --- a/phpdraft +++ b/phpdraft @@ -19,6 +19,7 @@ use PHPDraft\Parse\ParserFactory; use PHPDraft\Parse\ResourceException; define('VERSION', '0'); +#define('ID_STATIC', 'SOME_ID'); try { // Define the cli options. diff --git a/src/PHPDraft/Model/Category.php b/src/PHPDraft/Model/Category.php index 65d221fa..7ac6155e 100644 --- a/src/PHPDraft/Model/Category.php +++ b/src/PHPDraft/Model/Category.php @@ -11,6 +11,7 @@ namespace PHPDraft\Model; +use PHPDraft\Model\Elements\BasicStructureElement; use PHPDraft\Model\Elements\ObjectStructureElement; use stdClass; @@ -54,7 +55,7 @@ public function parse(stdClass $object) break; case 'dataStructure': $deps = []; - $struct = new ObjectStructureElement(); + $struct = BasicStructureElement::get_class($item->content); $struct->deps = $deps; $struct->parse($item->content, $deps); diff --git a/src/PHPDraft/Model/Elements/ArrayStructureElement.php b/src/PHPDraft/Model/Elements/ArrayStructureElement.php index 7863456c..f2746c36 100644 --- a/src/PHPDraft/Model/Elements/ArrayStructureElement.php +++ b/src/PHPDraft/Model/Elements/ArrayStructureElement.php @@ -30,13 +30,13 @@ public function parse(?object $object, array &$dependencies): StructureElement $this->parse_common($object, $dependencies); - if (!isset($object->content->value->content)) { + if (!isset($object->content)) { $this->value = []; return $this; } - foreach ($object->content->value->content as $sub_item) { + foreach ($object->content as $sub_item) { if (!in_array($sub_item->element, self::DEFAULTS)) { $dependencies[] = $sub_item->element; } @@ -58,28 +58,22 @@ public function parse(?object $object, array &$dependencies): StructureElement */ public function __toString(): string { - $return = ''; - - return $return; + return ''; } /** diff --git a/src/PHPDraft/Model/Elements/BasicStructureElement.php b/src/PHPDraft/Model/Elements/BasicStructureElement.php index 54ab5551..7e82c0e4 100644 --- a/src/PHPDraft/Model/Elements/BasicStructureElement.php +++ b/src/PHPDraft/Model/Elements/BasicStructureElement.php @@ -130,7 +130,7 @@ protected function parse_common(object $object, array &$dependencies): void $this->description_as_html(); - if (!in_array($this->type, self::DEFAULTS)) { + if (!in_array($this->type, self::DEFAULTS) && $this->type !== NULL) { $dependencies[] = $this->type; } } @@ -145,6 +145,23 @@ public function description_as_html(): void $this->description = MarkdownExtra::defaultTransform($this->description); } + /** + * Represent the element in HTML. + * + * @param string $element Element name + * + * @return string HTML string + */ + protected function get_element_as_html($element): string + { + if (in_array($element, self::DEFAULTS)) { + return '' . $element . ''; + } + + $link_name = str_replace(' ', '-', strtolower($element)); + return '' . $element . ''; + } + /** * Get a string representation of the value. * @@ -155,12 +172,12 @@ public function description_as_html(): void public function string_value($flat = FALSE) { if (is_array($this->value)) { - $key = rand(0, count($this->value)); - if (is_subclass_of($this->value[$key], StructureElement::class) && $flat === FALSE) { - return $this->value[$key]->string_value($flat); + $value_key = rand(0, count($this->value)); + if (is_subclass_of($this->value[$value_key], StructureElement::class) && $flat === FALSE) { + return $this->value[$value_key]->string_value($flat); } - return $this->value[$key]; + return $this->value[$value_key]; } if (is_subclass_of($this->value, BasicStructureElement::class) && $flat === TRUE) { @@ -168,4 +185,29 @@ public function string_value($flat = FALSE) } return $this->value; } + + /** + * Get what element to parse with. + * + * @param object $object The object to parse. + * + * @return BasicStructureElement The element to parse to + */ + public static function get_class(object $object): BasicStructureElement + { + switch ($object->element) { + default: + case 'object': + $struct = new ObjectStructureElement(); + break; + case 'array': + $struct = new ArrayStructureElement(); + break; + case 'enum': + $struct = new EnumStructureElement(); + break; + } + + return $struct; + } } diff --git a/src/PHPDraft/Model/Elements/EnumStructureElement.php b/src/PHPDraft/Model/Elements/EnumStructureElement.php index 18417dd1..8625af1a 100644 --- a/src/PHPDraft/Model/Elements/EnumStructureElement.php +++ b/src/PHPDraft/Model/Elements/EnumStructureElement.php @@ -23,21 +23,40 @@ class EnumStructureElement extends BasicStructureElement */ public function parse(?object $object, array &$dependencies): StructureElement { - $this->element = (isset($object->element)) ? $object->element : 'enum'; + $this->element = $object->element; $this->parse_common($object, $dependencies); - $this->key = $this->key ?? $object->content ?? 'UNKNOWN'; - $this->type = $this->type ?? $object->element; + $this->key = $this->key ?? $object->content->content ?? NULL; + $this->type = $this->type ?? $object->content->element ?? NULL; - if (!isset($object->content->value->content)) { + if (!isset($object->content) && !isset($object->attributes)) { $this->value = $this->key; return $this; } - $enumerations = $object->content->value->attributes->enumerations->content ?? $object->content->value->content; - foreach ($enumerations as $sub_item) { + if (isset($object->attributes->default)) { + if (!in_array($object->attributes->default->content->element ?? '', self::DEFAULTS)) { + $dependencies[] = $object->attributes->default->content->element; + } + $this->value = $object->attributes->default->content->content; + $this->deps = $dependencies; + + return $this; + } + + if (isset($object->content)) { + if (!in_array($object->content->element, self::DEFAULTS)) { + $dependencies[] = $object->content->element; + } + $this->value = $object->content->content; + $this->deps = $dependencies; + + return $this; + } + + foreach ($object->attributes->enumerations->content as $sub_item) { if (!in_array($sub_item->element, self::DEFAULTS)) { $dependencies[] = $sub_item->element; } @@ -57,36 +76,21 @@ public function parse(?object $object, array &$dependencies): StructureElement */ public function __toString(): string { - $return = ''; - - return $return; + return ''; } /** diff --git a/src/PHPDraft/Model/Elements/ObjectStructureElement.php b/src/PHPDraft/Model/Elements/ObjectStructureElement.php index f9681323..21c417dd 100644 --- a/src/PHPDraft/Model/Elements/ObjectStructureElement.php +++ b/src/PHPDraft/Model/Elements/ObjectStructureElement.php @@ -42,9 +42,6 @@ public function parse(?object $object, array &$dependencies): StructureElement $this->element = $object->element; $this->parse_common($object, $dependencies); - if (!isset($object->content) && isset($object->meta)) { - return $this; - } if (isset($object->content) && is_array($object->content)) { $this->parse_array_content($object, $dependencies); @@ -74,25 +71,30 @@ public function parse(?object $object, array &$dependencies): StructureElement /** * Parse $this->value as a structure based on given content. * - * @param mixed $value APIB content - * @param array $dependencies Object dependencies + * @param object $object APIB content + * @param array $dependencies Object dependencies * * @return void */ - protected function parse_value_structure($value, array &$dependencies) + protected function parse_value_structure(object $object, array &$dependencies) { - switch ($this->type) { + $type = $this->element === 'member' ? $this->type : $this->element; + if (!isset($object->content->value) && !isset($object->attributes->enumerations)) { + return; + } + + $value = $object->content->value ?? $object; + switch ($type) { + default: + case 'object': + $struct = $this->new_instance(); + break; case 'array': $struct = new ArrayStructureElement(); break; case 'enum': $struct = new EnumStructureElement(); break; - default: - case 'object': - $value = $value->content->value ?? null; - $struct = $this->new_instance(); - break; } $this->value = $struct->parse($value, $dependencies); @@ -113,25 +115,26 @@ protected function new_instance(): StructureElement /** * Parse content formed as an array. * - * @param mixed $object APIB content - * @param array $dependencies Object dependencies + * @param object|null $object APIB content + * @param array $dependencies Object dependencies * * @return void */ - protected function parse_array_content($object, array &$dependencies): void + protected function parse_array_content(?object $object, array &$dependencies): void { foreach ($object->content as $value) { - switch ($this->type){ + $type = $this->element === 'member' ? $this->type : $this->element; + switch ($type){ + default: + case 'object': + $struct = $this->new_instance(); + break; case 'enum': $struct = new EnumStructureElement(); break; case 'array': $struct = new ArrayStructureElement(); break; - default: - case 'object': - $struct = $this->new_instance(); - break; } $this->value[] = $struct->parse($value, $dependencies); @@ -154,24 +157,22 @@ public function __toString(): string } if (is_array($this->value)) { - $return = ''; + $return = ''; foreach ($this->value as $object) { - if (is_string($object) || is_subclass_of(get_class($object), BasicStructureElement::class)) { + if (is_string($object) || is_subclass_of(get_class($object), StructureElement::class)) { $return .= $object; } } - $return .= '
'; - - return $this->description . $return; + return "$return
"; } if ($this->ref !== null) { - return '

Inherits from ' . $this->ref . '

' . $this->description; + return '

Inherits from ' . $this->ref . '

'; } if ($this->value === null && $this->key === null && $this->description !== null) { - return "
$this->description
"; + return ''; } if ($this->value === null && $this->key === null && $this->description === null) { @@ -218,15 +219,8 @@ protected function construct_string_return(string $value): string if ($this->type === NULL) { return $value; } - if (!in_array($this->type, self::DEFAULTS)) { - $type = '' . $this->type . ''; - } else { - $type = '' . $this->type . ''; - } + + $type = $this->get_element_as_html($this->type); $variable = ''; if ($this->is_variable) { $variable = ''; diff --git a/src/PHPDraft/Model/Elements/Tests/ArrayStructureElementTest.php b/src/PHPDraft/Model/Elements/Tests/ArrayStructureElementTest.php index 8eb668e8..f0fc8447 100644 --- a/src/PHPDraft/Model/Elements/Tests/ArrayStructureElementTest.php +++ b/src/PHPDraft/Model/Elements/Tests/ArrayStructureElementTest.php @@ -57,90 +57,74 @@ public function parseObjectProvider(): array { $return = []; $base1 = new ArrayStructureElement(); - $base1->key = 'greet_list'; - $base1->value = [['' => 'string']]; - $base1->status = 'required'; - $base1->element = 'member'; - $base1->type = 'array'; + $base1->key = NULL; + $base1->value = [['Swift' => 'string'], ['Objective-C' => 'string']]; + $base1->status = NULL; + $base1->element = 'array'; + $base1->type = NULL; $base1->is_variable = false; $base1->description = "\n"; $base1->deps = []; $base2 = new ArrayStructureElement(); - $base2->key = 'car_id_list'; - $base2->value = [['Truck' => 'Car identifier']]; - $base2->status = 'optional'; - $base2->element = 'member'; - $base2->type = 'array'; + $base2->key = NULL; + $base2->value = [['item' => 'string'], ['another item' => 'string']]; + $base2->status = NULL; + $base2->element = 'array'; + $base2->type = 'Some simple array'; $base2->is_variable = false; - $base2->description = "

List of car identifiers to retrieve

\n"; - $base2->deps = ['Car identifier']; + $base2->description = "\n"; + $base2->deps = ['Some simple array']; $base3 = new ArrayStructureElement(); $base3->key = 'car_id_list'; - $base3->value = []; + $base3->value = [['car_id_list' => 'string'], ['' => 'array']]; $base3->status = 'optional'; $base3->element = 'member'; $base3->type = 'array'; $base3->is_variable = false; $base3->description = "

List of car identifiers to retrieve

\n"; - $base3->deps = null; + $base3->deps = []; $return['generic value type'] = [ '{ - "element": "member", - "attributes": { - "typeAttributes": [ - "required" - ] + "element": "array", + "content": [ + { + "element": "string", + "content": "Swift" }, - "content": { - "key": { - "element": "string", - "content": "greet_list" - }, - "value": { - "element": "array", - "content": [ - { - "element": "string" - } - ] - } + { + "element": "string", + "content": "Objective-C" } + ] }', $base1, ]; $return['custom value type'] = [ '{ - "element": "member", - "meta": { - "description": "List of car identifiers to retrieve" - }, - "attributes": { - "typeAttributes": [ - "optional" - ] + "element": "array", + "meta": { + "id": { + "element": "string", + "content": "Some simple array" + } + }, + "content": [ + { + "element": "string", + "content": "item" }, - "content": { - "key": { - "element": "string", - "content": "car_id_list" - }, - "value": { - "element": "array", - "content": [ - { - "element": "Car identifier", - "content": "Truck" - } - ] - } + { + "element": "string", + "content": "another item" } + ] }', $base2, ]; - $return[] = [ + $return['other'] = [ '{ "element": "member", "meta": { @@ -178,15 +162,6 @@ public function testNewInstance(): void $this->assertInstanceOf(ArrayStructureElement::class, $return); } - /** - * Test setup of new instances - */ - public function testToString(): void - { - $return = $this->class->__toString(); - $this->assertSame('[ ]', $return); - } - /** * Test setup of new instances */ @@ -194,17 +169,7 @@ public function testToStringWithArray(): void { $this->class->value = [['string' => 'stuff'], ['int' => 'class']]; $return = $this->class->__toString(); - $this->assertSame('', $return); - } - - /** - * Test setup of new instances - */ - public function testToStringWithString(): void - { - $this->class->value = 'hello'; - $return = $this->class->__toString(); - $this->assertSame('[ ]', $return); + $this->assertSame('', $return); } /** @@ -214,6 +179,6 @@ public function testToStringWithComplexArray(): void { $this->class->value = [['type'=>'Bike'], ['stuff'=>'car']]; $return = $this->class->__toString(); - $this->assertSame('', $return); + $this->assertSame('', $return); } } diff --git a/src/PHPDraft/Model/Elements/Tests/EnumStructureElementTest.php b/src/PHPDraft/Model/Elements/Tests/EnumStructureElementTest.php index 8defa0bd..385420f9 100644 --- a/src/PHPDraft/Model/Elements/Tests/EnumStructureElementTest.php +++ b/src/PHPDraft/Model/Elements/Tests/EnumStructureElementTest.php @@ -49,15 +49,6 @@ public function testNewInstance(): void $this->assertInstanceOf(EnumStructureElement::class, $return); } - /** - * Test setup of new instances - */ - public function testToString(): void - { - $return = $this->class->__toString(); - $this->assertSame('//list of options', $return); - } - /** * Test setup of new instances */ @@ -65,7 +56,7 @@ public function testToStringWithArray(): void { $this->class->value = ['hello' => 'string', 'test' => 'int']; $return = $this->class->__toString(); - $this->assertSame('', $return); + $this->assertSame('', $return); } /** @@ -89,7 +80,7 @@ public function testToStringWithStringComplex(): void $this->class->key = 'key'; $this->class->element = 'Car'; $return = $this->class->__toString(); - $this->assertSame('keyCar', $return); + $this->assertSame('keyCar', $return); } /** @@ -99,7 +90,7 @@ public function testToStringWithComplexArray(): void { $this->class->value = ['hello' => 'bike', 'test' => 'Car']; $return = $this->class->__toString(); - $this->assertSame('', $return); + $this->assertSame('', $return); } /** @@ -110,7 +101,7 @@ public function testToStringWithComplexArray(): void * @param string $object JSON Object * @param EnumStructureElement $expected Expected Object output * - * @covers \PHPDraft\Model\Elements\EnumStructureElement::parse + * @covers \PHPDraft\Model\Elements\EnumStructureElement::parse */ public function testSuccesfulParse($object, $expected) { @@ -128,51 +119,76 @@ public function parseObjectProvider(): array { $return = []; $base1 = new EnumStructureElement(); - $base1->key = 'greet_list'; - $base1->value = ['world' => 'hello']; - $base1->status = 'required'; - $base1->element = 'member'; - $base1->type = 'array'; + $base1->key = NULL; + $base1->value = [ 'item' => 'string', 'another item' => 'string']; + $base1->status = NULL; + $base1->element = 'enum'; + $base1->type = 'Some simple enum'; + $base1->is_variable = false; $base1->description = "\n"; - $base1->deps = ['hello']; + $base1->deps = ['Some simple enum']; $base2 = new EnumStructureElement(); $base2->key = 'car_id_list'; - $base2->value = ['world' => 'Car identifier']; - $base2->status = 'optional'; - $base2->element = 'member'; - $base2->type = 'array'; - $base2->description = "

List of car identifiers to retrieve

\n"; - $base2->deps = ['Car identifier']; + $base2->value = 'world'; + $base2->status = NULL; + $base2->element = 'enum'; + $base2->type = 'string'; + $base2->description = "\n"; + $base2->is_variable = false; + $base2->deps = []; $base3 = new EnumStructureElement(); - $base3->key = 'car_id_list'; - $base3->value = 'car_id_list'; + $base3->key = '5'; + $base3->value = '5'; $base3->status = 'optional'; $base3->element = 'member'; - $base3->type = 'array'; + $base3->type = 'number'; $base3->description = "

List of car identifiers to retrieve

\n"; - $base3->deps = null; + $base3->is_variable = false; + $base3->deps = []; - $return[] = [ + $return['base enum'] = [ '{ - "element": "member", - "attributes": { - "typeAttributes": [ - "required" - ] + "element":"enum", + "meta":{ + "id":{ + "element":"string", + "content":"Some simple enum" + } }, - "content": { - "key": { - "element": "string", - "content": "greet_list" - }, - "value": { - "element": "array", - "content": [ + "attributes":{ + "enumerations":{ + "element":"array", + "content":[ + { + "element":"string", + "attributes":{ + "typeAttributes":{ + "element":"array", + "content":[ + { + "element":"string", + "content":"fixed" + } + ] + } + }, + "content":"item" + }, { - "element": "hello", - "content": "world" + "element":"string", + "attributes":{ + "typeAttributes":{ + "element":"array","content":[ + { + "element":"string", + "content":"fixed" + } + ] + } + }, + "content":"another item" } ] } @@ -180,36 +196,43 @@ public function parseObjectProvider(): array }', $base1, ]; - $return[] = [ + $return['enum with default'] = [ '{ - "element": "member", - "meta": { - "description": "List of car identifiers to retrieve" - }, - "attributes": { - "typeAttributes": [ - "optional" - ] + "element": "enum", + "attributes": { + "default": { + "element": "enum", + "content": { + "element": "string", + "content": "world" + } }, - "content": { - "key": { - "element": "string", - "content": "car_id_list" + "enumerations": { + "element": "array", + "content": [ + { + "element": "string", + "content": "hello" }, - "value": { - "element": "array", - "content": [ - { - "element": "Car identifier", - "content": "world" - } - ] + { + "element": "string", + "content": "world" + }, + { + "element": "string", + "content": "tests" } + ] } + }, + "content": { + "element": "string", + "content": "car_id_list" + } }', $base2, ]; - $return[] = [ + $return['basic enum'] = [ '{ "element": "member", "meta": { @@ -221,13 +244,8 @@ public function parseObjectProvider(): array ] }, "content": { - "key": { - "element": "string", - "content": "car_id_list" - }, - "value": { - "element": "array" - } + "element": "number", + "content": "5" } }', $base3, diff --git a/src/PHPDraft/Model/Elements/Tests/ObjectStructureElementTest.php b/src/PHPDraft/Model/Elements/Tests/ObjectStructureElementTest.php index bad06c5d..19e9487f 100644 --- a/src/PHPDraft/Model/Elements/Tests/ObjectStructureElementTest.php +++ b/src/PHPDraft/Model/Elements/Tests/ObjectStructureElementTest.php @@ -210,7 +210,7 @@ public function testEmptyParse(): void public function testArrayContentEnumContentParse(): void { $deps = []; - $object = '{"element":"enum","content": [{"content":{"key":{"content":"key"},"value":{"element":"value"}}}]}'; + $object = '{"element":"hrefVariables","content":[{"element":"member","meta":{"description":{"element":"string","content":"Info on things"},"title":{"element":"string","content":"string"}},"attributes":{"typeAttributes":{"element":"array","content":[{"element":"string","content":"required"}]}},"content":{"key":{"element":"string","content":"things"},"value":{"element":"string","content":"1"}}},{"element":"member","meta":{"description":{"element":"string","content":"The id of the Post.\nSome additional info\n"},"title":{"element":"string","content":"string"}},"attributes":{"typeAttributes":{"element":"array","content":[{"element":"string","content":"optional"}]}},"content":{"key":{"element":"string","content":"post_id"},"value":{"element":"string","attributes":{"default":{"element":"string","content":"0"}},"content":"1"}}},{"element":"member","meta":{"description":{"element":"string","content":"Some stuff info\nSome additional info\n"},"title":{"element":"string","content":"string"}},"attributes":{"typeAttributes":{"element":"array","content":[{"element":"string","content":"optional"}]}},"content":{"key":{"element":"string","content":"stuff"},"value":{"element":"enum","attributes":{"default":{"element":"enum","content":{"element":"string","content":"world"}},"enumerations":{"element":"array","content":[{"element":"string","content":"hello"},{"element":"string","content":"world"},{"element":"string","content":"tests"}]}},"content":{"element":"string","content":"hello"}}}}]}'; $return = $this->class->parse(json_decode($object), $deps); $this->assertInstanceOf(ObjectStructureElement::class, $return); @@ -253,7 +253,7 @@ public function testValueStructureEnumContentParse(): void public function testValueStructureArrayContentParse(): void { $deps = []; - $object = '{"element":"enum","content": {"key":{"content":"key"},"value":{"element":"array"}}}'; + $object = '{"element":"array","content": {"element":"array","value": {"element": "array"}}}'; $return = $this->class->parse(json_decode($object), $deps); $this->assertInstanceOf(ObjectStructureElement::class, $return); @@ -266,7 +266,7 @@ public function testValueStructureArrayContentParse(): void public function testValueStructureObjectContentParse(): void { $deps = []; - $object = '{"element":"enum","content": {"key":{"content":"key"},"value":{"element":"object"}}}'; + $object = '{"element":"object","content": {"key":{"content":"key"},"value":{"element":"object"}}}'; $return = $this->class->parse(json_decode($object), $deps); $this->assertInstanceOf(ObjectStructureElement::class, $return); @@ -279,7 +279,7 @@ public function testValueStructureObjectContentParse(): void public function testValueStructureObjectContentParseContent(): void { $deps = []; - $object = '{"element":"enum","content": {"key":{"content":"key"},"value":{"element":"object", "content":{}}}}'; + $object = '{"element":"object","content": {"value":{"element":"object", "content":{}}}}'; $return = $this->class->parse(json_decode($object), $deps); $this->assertInstanceOf(ObjectStructureElement::class, $return); @@ -304,9 +304,12 @@ public function testToStringArray(): void $return = $this->class->__toString(); $this->assertSame('hello
', $return); - $this->class->value = [new ArrayStructureElement()]; + $val = new ArrayStructureElement(); + $val->element = 'things'; + $val->value = 'stuff'; + $this->class->value = [$val]; $return = $this->class->__toString(); - $this->assertSame('[ ]
', $return); + $this->assertSame('
things
', $return); } /** @@ -317,7 +320,7 @@ public function testToStringNullValue(): void $this->class->key = 'hello'; $this->class->type = 'mixed'; $return = $this->class->__toString(); - $this->assertSame('hellomixed ', $return); + $this->assertSame('hellomixed ', $return); } /** @@ -339,9 +342,11 @@ public function testToStringArrayValue(): void { $this->class->key = 'hello'; $this->class->value = new ArrayStructureElement(); + $this->class->value->element = 'value'; + $this->class->value->value = 'value'; $this->class->type = 'array'; $return = $this->class->__toString(); - $this->assertSame('helloarray
[ ]
', $return); + $this->assertSame('helloarray
value
', $return); } /** @@ -351,9 +356,11 @@ public function testToStringEnumValue(): void { $this->class->key = 'hello'; $this->class->value = new EnumStructureElement(); + $this->class->value->element = 'value'; + $this->class->value->value = 'value'; $this->class->type = 'enum'; $return = $this->class->__toString(); - $this->assertSame('helloenum
//list of options
', $return); + $this->assertSame('helloenum
value
', $return); } /** @@ -377,7 +384,7 @@ public function testToStringOtherValue(): void $this->class->value = 'world'; $this->class->type = 'Cow'; $return = $this->class->__toString(); - $this->assertSame('helloCow world', $return); + $this->assertSame('helloCow world', $return); } /** diff --git a/src/PHPDraft/Model/Elements/Tests/RequestBodyElementTest.php b/src/PHPDraft/Model/Elements/Tests/RequestBodyElementTest.php index 1f04e2d7..ae9e7e92 100644 --- a/src/PHPDraft/Model/Elements/Tests/RequestBodyElementTest.php +++ b/src/PHPDraft/Model/Elements/Tests/RequestBodyElementTest.php @@ -266,12 +266,12 @@ public function testEmptyParse(): void public function testArrayContentEnumContentParse(): void { $deps = []; - $object = '{"element":"enum","content": [{"content":{"key":{"content":"key"},"value":{"element":"value"}}}]}'; + $object = '{"element":"enum","content": [{"element":"enum"}]}'; $return = $this->class->parse(json_decode($object), $deps); $this->assertInstanceOf(ObjectStructureElement::class, $return); foreach ($return->value as $item) { - $this->assertInstanceOf(RequestBodyElement::class, $item); + $this->assertInstanceOf(EnumStructureElement::class, $item); } } @@ -296,7 +296,7 @@ public function testArrayContentObjectContentParse(): void public function testValueStructureEnumContentParse(): void { $deps = []; - $object = '{"element":"enum","content": {"key":{"content":"key"},"value":{"element":"enum"}}}'; + $object = '{"element":"enum","content": {"element":"enum","key":{"content":"key"},"value":{"element":"enum"}}}'; $return = $this->class->parse(json_decode($object), $deps); $this->assertInstanceOf(ObjectStructureElement::class, $return); @@ -309,7 +309,7 @@ public function testValueStructureEnumContentParse(): void public function testValueStructureArrayContentParse(): void { $deps = []; - $object = '{"element":"enum","content": {"key":{"content":"key"},"value":{"element":"array"}}}'; + $object = '{"element":"array","content": {"element":"array","key":{"content":"key"},"value":{"element":"array"}}}'; $return = $this->class->parse(json_decode($object), $deps); $this->assertInstanceOf(ObjectStructureElement::class, $return); @@ -322,20 +322,7 @@ public function testValueStructureArrayContentParse(): void public function testValueStructureObjectContentParse(): void { $deps = []; - $object = '{"element":"enum","content": {"key":{"content":"key"},"value":{"element":"object"}}}'; - - $return = $this->class->parse(json_decode($object), $deps); - $this->assertInstanceOf(ObjectStructureElement::class, $return); - $this->assertInstanceOf(ObjectStructureElement::class, $return->value); - } - - /** - * Test the setup of new instances - */ - public function testValueStructureObjectContentParseContent(): void - { - $deps = []; - $object = '{"element":"enum","content": {"key":{"content":"key"},"value":{"element":"object", "content":{}}}}'; + $object = '{"element":"object","content": {"element":"object","key":{"content":"key"},"value":{"element":"object"}}}'; $return = $this->class->parse(json_decode($object), $deps); $this->assertInstanceOf(ObjectStructureElement::class, $return); diff --git a/src/PHPDraft/Model/HTTPRequest.php b/src/PHPDraft/Model/HTTPRequest.php index 04104364..01d4dc31 100644 --- a/src/PHPDraft/Model/HTTPRequest.php +++ b/src/PHPDraft/Model/HTTPRequest.php @@ -161,12 +161,12 @@ public function parse(object $object): self */ private function parse_structure(stdClass $objects): void { - $deps = []; - $struct = new RequestBodyElement(); - $struct->parse($objects->content, $deps); - $struct->deps = $deps; + $deps = []; + $structure = new RequestBodyElement(); + $structure->parse($objects->content, $deps); + $structure->deps = $deps; - $this->struct = $struct; + $this->struct = $structure; } public function get_id(): string diff --git a/src/PHPDraft/Model/HTTPResponse.php b/src/PHPDraft/Model/HTTPResponse.php index 37f0814a..6eca185e 100644 --- a/src/PHPDraft/Model/HTTPResponse.php +++ b/src/PHPDraft/Model/HTTPResponse.php @@ -132,8 +132,8 @@ protected function parse_content(stdClass $object): void } if ($value->element === 'dataStructure') { - $content = is_array($value->content) ? $value->content : [$value->content]; - $this->parse_structure($content); + $data_content = is_array($value->content) ? $value->content : [$value->content]; + $this->parse_structure($data_content); continue; } diff --git a/src/PHPDraft/Model/Tests/CategoryTest.php b/src/PHPDraft/Model/Tests/CategoryTest.php index 5c29db7c..f0d39b97 100644 --- a/src/PHPDraft/Model/Tests/CategoryTest.php +++ b/src/PHPDraft/Model/Tests/CategoryTest.php @@ -86,7 +86,7 @@ public function testParseIsCalledObject(): void { $this->set_reflection_property_value('parent', $this->parent); - $json = '{"content":[{"element":"dataStructure", "content":{"key":{"content":"none"}, "value":{"element":"none"}}}]}'; + $json = '{"content":[{"element":"dataStructure", "content":{"element": "object", "key":{"content":"none"}, "value":{"element":"none"}}}]}'; $this->class->parse(json_decode($json)); @@ -104,7 +104,7 @@ public function testParseIsCalledObjectMetaID(): void { $this->set_reflection_property_value('parent', $this->parent); - $json = '{"content":[{"element":"dataStructure", "content":{"meta":{"id":4}, "key":{"content":"none"}, "value":{"element":"none"}}}]}'; + $json = '{"content":[{"element":"dataStructure", "content":{"element": "object","meta":{"id":4}, "key":{"content":"none"}, "value":{"element":"none"}}}]}'; $this->class->parse(json_decode($json)); diff --git a/src/PHPDraft/Out/HTML/default.phtml b/src/PHPDraft/Out/HTML/default.phtml index 4f70a3b6..f76b3a72 100644 --- a/src/PHPDraft/Out/HTML/default.phtml +++ b/src/PHPDraft/Out/HTML/default.phtml @@ -44,16 +44,16 @@ use PHPDraft\Out\Minifier;
-
@@ -148,7 +148,7 @@ use PHPDraft\Out\Minifier; data-toggle="popover" data-html="true" data-content=""> - + url_variables !== []): ?>
Example URI
@@ -212,7 +212,7 @@ use PHPDraft\Out\Minifier; data-target="#request-coll--get_href() . '-' . $response->statuscode; ?>"> Response statuscode." ".$this->http_status->getReasonPhrase($response->statuscode)?> - +
- + @@ -278,6 +278,7 @@ use PHPDraft\Out\Minifier;
+ description; ?>
@@ -301,7 +302,7 @@ if (!empty($extras)): data-placement="top" data-html="true" data-content=" $value): ?>

:

"> - + js as $js): ?> diff --git a/src/PHPDraft/Out/HTML/material.phtml b/src/PHPDraft/Out/HTML/material.phtml index ce06b329..664f53ad 100644 --- a/src/PHPDraft/Out/HTML/material.phtml +++ b/src/PHPDraft/Out/HTML/material.phtml @@ -35,7 +35,7 @@ use Enjoy\HttpStatusCode\Statuscodes;