'api.example.com']); } public function testModelComplexDocumentationBazinga() { $this->assertEquals([ 'type' => 'object', 'properties' => [ '_links' => [ 'readOnly' => true, 'properties' => [ 'example' => [ 'properties' => [ 'href' => [ 'type' => 'string', ], 'str_att' => [ 'type' => 'string', 'default' => 'bar', ], 'float_att' => [ 'type' => 'number', 'default' => 5.6, ], 'bool_att' => [ 'type' => 'boolean', 'default' => false, ], ], 'type' => 'object', ], 'route' => [ 'properties' => [ 'href' => [ 'type' => 'string', ], ], 'type' => 'object', ], ], ], '_embedded' => [ 'readOnly' => true, 'properties' => [ 'route' => [ 'type' => 'object', ], 'embed_with_group' => [ 'type' => 'object', ], ], ], ], 'schema' => 'BazingaUser', ], json_decode($this->getModel('BazingaUser')->toJson(), true)); } public function testWithGroup() { $this->assertEquals([ 'type' => 'object', 'properties' => [ '_embedded' => [ 'readOnly' => true, 'properties' => [ 'embed_with_group' => [ 'type' => 'object', ], ], ], ], 'schema' => 'BazingaUser_grouped', ], json_decode($this->getModel('BazingaUser_grouped')->toJson(), true)); } public function testWithType() { try { new \ReflectionMethod(Embedded::class, 'getType'); } catch (\ReflectionException $e) { $this->markTestSkipped('Typed embedded properties require at least willdurand/hateoas 3.0'); } $this->assertEquals([ 'type' => 'object', 'properties' => [ '_embedded' => [ 'readOnly' => true, 'properties' => [ 'typed_bazinga_users' => [ 'items' => [ '$ref' => '#/components/schemas/BazingaUser', ], 'type' => 'array', ], 'typed_bazinga_name' => [ 'type' => 'string', ], ], ], ], 'schema' => 'BazingaUserTyped', ], json_decode($this->getModel('BazingaUserTyped')->toJson(), true)); } protected static function createKernel(array $options = []) { return new TestKernel(TestKernel::USE_JMS | TestKernel::USE_BAZINGA); } }