fix(cms): allow archiving already-imported article documents

This commit is contained in:
2026-02-11 09:20:44 +08:00
parent ec2b1d21f4
commit 7095be82d5
2 changed files with 55 additions and 0 deletions

View File

@@ -127,4 +127,45 @@ class ImportArticleDocumentsCommandTest extends TestCase
$this->assertNotNull($article->archived_at);
$this->assertDatabaseCount('documents', 1);
}
public function test_it_can_archive_already_imported_source_articles(): void
{
Storage::fake('public');
Storage::fake('private');
$user = User::factory()->create();
DocumentCategory::factory()->create([
'slug' => 'organization-public-disclosure',
'name' => '組織公開資訊',
'default_access_level' => 'public',
]);
$article = Article::factory()->create([
'title' => '先匯入後封存',
'slug' => 'legacy-import-then-archive',
'content_type' => Article::CONTENT_TYPE_DOCUMENT,
'status' => Article::STATUS_PUBLISHED,
'access_level' => Article::ACCESS_LEVEL_PUBLIC,
'created_by_user_id' => $user->id,
'last_updated_by_user_id' => $user->id,
]);
$this->artisan('articles:import-documents', [
'--fallback-user-id' => $user->id,
])->assertExitCode(0);
$this->assertDatabaseCount('documents', 1);
$article->refresh();
$this->assertSame(Article::STATUS_PUBLISHED, $article->status);
$this->artisan('articles:import-documents', [
'--fallback-user-id' => $user->id,
'--mark-archived' => true,
])->assertExitCode(0);
$article->refresh();
$this->assertSame(Article::STATUS_ARCHIVED, $article->status);
$this->assertNotNull($article->archived_at);
$this->assertDatabaseCount('documents', 1);
}
}