Use uri for the like and bookmark permalinks

`uri` is the attribute every other postable model uses for its absolute
permalink on this site. Add it to Like, which had none, and rename
Bookmark's `local_uri` to match. `url` stays as the thing being liked or
bookmarked.

Refs #148

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jonny Barnes 2026-11-01 15:28:30 +00:00
commit 5481956d78
Signed by: jonny
SSH key fingerprint: SHA256:CTuSlns5U7qlD9jqHvtnVmfYV3Zwl2Z7WnJ4/dqOaL8
4 changed files with 18 additions and 3 deletions

View file

@ -25,7 +25,7 @@ class Bookmark extends Model
return $this->belongsToMany('App\Models\Tag'); return $this->belongsToMany('App\Models\Tag');
} }
protected function localUri(): Attribute protected function uri(): Attribute
{ {
return Attribute::get( return Attribute::get(
get: fn () => config('app.url').'/bookmarks/'.$this->id, get: fn () => config('app.url').'/bookmarks/'.$this->id,

View file

@ -18,6 +18,13 @@ class Like extends Model
use FilterHtml; use FilterHtml;
use HasFactory; use HasFactory;
protected function uri(): Attribute
{
return Attribute::get(
get: fn () => config('app.url').'/likes/'.$this->id,
);
}
protected function url(): Attribute protected function url(): Attribute
{ {
return Attribute::set( return Attribute::set(

View file

@ -92,10 +92,10 @@ class BookmarksTest extends TestCase
} }
#[Test] #[Test]
public function bookmark_local_uri_attribute_returns_correct_url(): void public function bookmark_uri_attribute_returns_correct_url(): void
{ {
$bookmark = Bookmark::factory()->create(); $bookmark = Bookmark::factory()->create();
$this->assertEquals(config('app.url').'/bookmarks/'.$bookmark->id, $bookmark->local_uri); $this->assertEquals(config('app.url').'/bookmarks/'.$bookmark->id, $bookmark->uri);
} }
#[Test] #[Test]

View file

@ -13,6 +13,14 @@ class LikesTest extends TestCase
{ {
use RefreshDatabase; use RefreshDatabase;
#[Test]
public function like_uri_attribute_returns_our_permalink(): void
{
$like = Like::factory()->create();
$this->assertEquals(config('app.url').'/likes/'.$like->id, $like->uri);
}
#[Test] #[Test]
public function we_can_set_the_author_url(): void public function we_can_set_the_author_url(): void
{ {