diff --git a/app/User.php b/app/User.php index 73c93b3..6798447 100644 --- a/app/User.php +++ b/app/User.php @@ -320,7 +320,7 @@ class User extends Authenticatable return $this->hasMany(UserMetadata::class, 'user_id', 'id'); } - public function getMetadata($key = null) + public function getMetadata($key = null, $defaultValue = null) { $metadata = $this->metadata; @@ -340,5 +340,7 @@ class User extends Authenticatable if ($meta) { return $meta->value; } + + return $defaultValue; } } diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php index 9f139de..5ead72a 100644 --- a/tests/Unit/UserTest.php +++ b/tests/Unit/UserTest.php @@ -159,6 +159,24 @@ class UserTest extends TestCase } /** @test */ + public function user_model_get_metadata_method_accepts_a_default_value() + { + $user = factory(User::class)->create(); + + $this->assertEquals('Default value', $user->getMetadata('some_missing_key', 'Default value')); + + DB::table('user_metadata')->insert([ + 'id' => Uuid::uuid4()->toString(), + 'user_id' => $user->id, + 'key' => 'some_missing_key', + 'value' => 'Some value', + ]); + $user = $user->fresh(); + + $this->assertEquals('Some value', $user->getMetadata('some_missing_key', 'Default value')); + } + + /** @test */ public function user_have_mother_link_method() { $mother = factory(User::class)->create();