From 9063f039ddfbc1752bfb3e0bf4162373c2dc0d04 Mon Sep 17 00:00:00 2001 From: Luke Kuzmish Date: Mon, 14 Aug 2023 16:27:47 -0400 Subject: [PATCH] prove attribute does not interfere with other properties during serialization --- .../Queue/Attributes/WithoutRelations.php | 2 +- .../Queue/ModelSerializationTest.php | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Illuminate/Queue/Attributes/WithoutRelations.php b/src/Illuminate/Queue/Attributes/WithoutRelations.php index 7ac63a922d3..b10f7d8256d 100644 --- a/src/Illuminate/Queue/Attributes/WithoutRelations.php +++ b/src/Illuminate/Queue/Attributes/WithoutRelations.php @@ -4,7 +4,7 @@ use Attribute; -#[Attribute(Attribute::TARGET_PROPERTY|Attribute::TARGET_CLASS)] +#[Attribute(Attribute::TARGET_PROPERTY | Attribute::TARGET_CLASS)] class WithoutRelations { // diff --git a/tests/Integration/Queue/ModelSerializationTest.php b/tests/Integration/Queue/ModelSerializationTest.php index a9f1216def3..254aff380e2 100644 --- a/tests/Integration/Queue/ModelSerializationTest.php +++ b/tests/Integration/Queue/ModelSerializationTest.php @@ -338,16 +338,18 @@ public function test_it_respects_without_relations_attribute_applied_to_class() 'email' => 'taylor@laravel.com', ])->load(['roles']); - $serialized = serialize(new ModelSerializationAttributeTargetsClassTestClass($user)); + $serialized = serialize(new ModelSerializationAttributeTargetsClassTestClass($user, new DataValueObject('hello'))); $this->assertSame( - 'O:83:"Illuminate\Tests\Integration\Queue\ModelSerializationAttributeTargetsClassTestClass":1:{s:4:"user";O:45:"Illuminate\Contracts\Database\ModelIdentifier":5:{s:5:"class";s:39:"Illuminate\Tests\Integration\Queue\User";s:2:"id";i:1;s:9:"relations";a:0:{}s:10:"connection";s:7:"testing";s:15:"collectionClass";N;}}', $serialized + 'O:83:"Illuminate\Tests\Integration\Queue\ModelSerializationAttributeTargetsClassTestClass":2:{s:4:"user";O:45:"Illuminate\Contracts\Database\ModelIdentifier":5:{s:5:"class";s:39:"Illuminate\Tests\Integration\Queue\User";s:2:"id";i:1;s:9:"relations";a:0:{}s:10:"connection";s:7:"testing";s:15:"collectionClass";N;}s:5:"value";O:50:"Illuminate\Tests\Integration\Queue\DataValueObject":1:{s:5:"value";s:5:"hello";}}', + $serialized ); /** @var ModelSerializationAttributeTargetsClassTestClass $unserialized */ $unserialized = unserialize($serialized); $this->assertFalse($unserialized->user->relationLoaded('roles')); + $this->assertEquals('hello', $unserialized->value->value); } public function test_serialization_types_empty_custom_eloquent_collection() @@ -549,10 +551,8 @@ class ModelSerializationAttributeTargetsClassTestClass { use SerializesModels; - public User $user; - - public function __construct(User $user) { - $this->user = $user; + public function __construct(public User $user, public DataValueObject $value) + { } } @@ -579,3 +579,10 @@ public function __construct($users) $this->users = $users; } } + +class DataValueObject +{ + public function __construct(public $value = 1) + { + } +}