Tag blog posts and sign them with a member
Some checks failed
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
Tests / test-postgres (push) Has been cancelled
Tests / mcp (push) Has been cancelled

Tags are named in every language and made from the page form; the byline is
the member who signs a post on the site. The public API sends both, filters
posts by tag and lists the tags in use.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 11:01:18 +02:00
parent 6fc600e6a1
commit 9f970808ca
27 changed files with 809 additions and 12 deletions

View File

@@ -19,6 +19,7 @@ use App\Models\ReplyTemplate;
use App\Models\Repository;
use App\Models\Service;
use App\Models\Setting;
use App\Models\Tag;
use App\Models\Talk;
use App\Models\Technology;
use App\Models\Testimonial;
@@ -118,6 +119,7 @@ class AdminApiContractTest extends TestCase
$application = Application::factory()->for($call)->create();
$application->replies()->create(['user_id' => $this->caller->id, 'user_name' => $this->caller->name, 'subject' => 'Re', 'body' => 'Hola', 'channel' => 'mail']);
ReplyTemplate::factory()->create();
$page->tags()->attach(Tag::factory()->create());
$redirect = Redirect::factory()->create();
$missingUrl = MissingUrl::factory()->create();
$repository = Repository::factory()->create();
@@ -158,6 +160,7 @@ class AdminApiContractTest extends TestCase
'application' => ["/v1/applications/{$application->id}", '/v1/applications/{application}'],
'replies' => ["/v1/applications/{$application->id}/replies", '/v1/applications/{application}/replies'],
'reply templates' => ['/v1/reply-templates', '/v1/reply-templates'],
'tags' => ['/v1/tags', '/v1/tags'],
'redirects' => ['/v1/redirects', '/v1/redirects'],
'redirect' => ["/v1/redirects/{$redirect->id}", '/v1/redirects/{redirect}'],
'missing-urls' => ['/v1/missing-urls', '/v1/missing-urls'],