diff --git a/app/Models/Page.php b/app/Models/Page.php index 210de9d..ab31e45 100644 --- a/app/Models/Page.php +++ b/app/Models/Page.php @@ -20,6 +20,7 @@ class Page extends Model protected $fillable = [ 'url', 'status', + 'language', 'title', 'instance_id', 'posted_at', diff --git a/database/migrations/2026_04_25_234157_create_pages_table.php b/database/migrations/2026_04_25_234157_create_pages_table.php index 541d384..e1df51f 100644 --- a/database/migrations/2026_04_25_234157_create_pages_table.php +++ b/database/migrations/2026_04_25_234157_create_pages_table.php @@ -15,6 +15,7 @@ public function up(): void $table->id(); $table->text('url')->unique(); $table->string('status')->default(PageStatusEnum::Discovered->value)->index(); + $table->string('language', 35)->nullable()->index(); $table->string('title')->nullable(); $table->foreignId('instance_id') ->nullable() diff --git a/tests/Unit/Models/PageTest.php b/tests/Unit/Models/PageTest.php index 02d6f54..8319510 100644 --- a/tests/Unit/Models/PageTest.php +++ b/tests/Unit/Models/PageTest.php @@ -76,6 +76,27 @@ public function test_page_outgoing_and_incoming_links_relationships(): void $this->assertSame($target->id, $freshSource->outgoingLinks->first()->target_page_id); } + public function test_page_language_is_fillable_and_persists(): void + { + $page = Page::create([ + 'url' => 'https://example.com/crawled', + 'status' => 'discovered', + 'language' => 'en', + ]); + + $fresh = $page->fresh(); + + $this->assertNotNull($fresh); + $this->assertSame('en', $fresh->language); + + $unset = Page::create([ + 'url' => 'https://example.com/no-language', + 'status' => 'discovered', + ]); + + $this->assertNull($unset->fresh()->language); + } + public function test_page_status_is_cast_to_enum(): void { $cases = [