Skip to content
Snippets Groups Projects
Unverified Commit 09f0e9fb authored by Taylor Otwell's avatar Taylor Otwell Committed by GitHub
Browse files

Merge pull request #47 from ksassnowski/master

Adds support for closure inside context with enum property
parents 3cdb166c 5f1eb725
No related branches found
No related tags found
No related merge requests found
......@@ -242,7 +242,7 @@ class Native implements Serializable
}
unset($value);
} elseif (is_object($data) && ! $data instanceof static) {
} elseif (is_object($data) && ! $data instanceof static && ! $data instanceof UnitEnum) {
if (isset($storage[$data])) {
$data = $storage[$data];
......
......@@ -3,12 +3,6 @@
use Tests\Fixtures\Model;
use Tests\Fixtures\ModelAttribute;
enum SerializerGlobalEnum {
case Admin;
case Guest;
case Moderator;
}
test('enums', function () {
$f = function (SerializerGlobalEnum $role) {
return $role;
......@@ -57,11 +51,16 @@ test('enums', function () {
expect($f())->toBe(SerializerScopedEnum::Admin);
})->with('serializers');
enum SerializerGlobalBackedEnum: string {
case Admin = 'Administrator';
case Guest = 'Guest';
case Moderator = 'Moderator';
}
test('enums properties', function () {
$object = new ClassWithEnumProperty();
$f = $object->getClosure();
$f = s($f);
expect($f())
->name->toBe('Admin')
->value->toBeNull();
})->with('serializers');
test('backed enums', function () {
$f = function (SerializerGlobalBackedEnum $role) {
......@@ -112,6 +111,17 @@ test('backed enums', function () {
expect($f())->toBe(SerializerScopedBackedEnum::Admin);
})->with('serializers');
test('backed enums properties', function () {
$object = new ClassWithBackedEnumProperty();
$f = $object->getClosure();
$f = s($f);
expect($f())
->name->toBe('Admin')
->value->toBe('Administrator');
})->with('serializers');
test('array unpacking', function () {
$f = function () {
$array1 = ['a' => 1];
......@@ -468,6 +478,18 @@ class SerializerPhp81Controller
}
}
enum SerializerGlobalEnum {
case Admin;
case Guest;
case Moderator;
}
enum SerializerGlobalBackedEnum: string {
case Admin = 'Administrator';
case Guest = 'Guest';
case Moderator = 'Moderator';
}
#[Attribute(Attribute::TARGET_METHOD|Attribute::TARGET_FUNCTION)]
class MyAttribute
{
......@@ -477,3 +499,26 @@ class MyAttribute
}
}
class ClassWithEnumProperty
{
public SerializerGlobalEnum $enum = SerializerGlobalEnum::Admin;
public function getClosure()
{
return function () {
return $this->enum;
};
}
}
class ClassWithBackedEnumProperty
{
public SerializerGlobalBackedEnum $enum = SerializerGlobalBackedEnum::Admin;
public function getClosure()
{
return function () {
return $this->enum;
};
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment