create([ 'username' => 'admin_list', 'password_hash' => 'unused', 'name' => '管理员', 'status' => 'active', ])); $competition = Competition::query()->create([ 'slug' => 'xxf', 'name' => '测试赛', 'published' => true, ]); $active = Application::query()->create([ 'user_id' => User::query()->create(['mobile' => '13800138001'])->id, 'competition_id' => $competition->id, 'status' => 'submitted', 'project_name' => '有效项目', ]); $deleted = Application::query()->create([ 'user_id' => User::query()->create(['mobile' => '13800138002'])->id, 'competition_id' => $competition->id, 'status' => 'submitted', 'project_name' => '已删除项目', ]); $deleted->forceFill(['deleted_at' => now()])->save(); $response = $this->getJson("/api/v1/admin/competitions/{$competition->id}/applications?status=submitted") ->assertOk(); $ids = collect($response->json('data'))->pluck('id')->all(); $this->assertContains($active->id, $ids); $this->assertNotContains($deleted->id, $ids); } public function test_admin_application_list_filters_by_review_result(): void { Sanctum::actingAs(AdminUser::query()->create([ 'username' => 'admin_filter', 'password_hash' => 'unused', 'name' => '管理员', 'status' => 'active', ])); $competition = Competition::query()->create([ 'slug' => 'xxf-filter', 'name' => '筛选测试赛', 'published' => true, ]); $passed = Application::query()->create([ 'user_id' => User::query()->create(['mobile' => '13800138011'])->id, 'competition_id' => $competition->id, 'status' => 'submitted', 'project_name' => '已通过项目', 'review_result' => 'passed', ]); Application::query()->create([ 'user_id' => User::query()->create(['mobile' => '13800138012'])->id, 'competition_id' => $competition->id, 'status' => 'submitted', 'project_name' => '待评定项目', 'review_result' => null, ]); $response = $this->getJson("/api/v1/admin/competitions/{$competition->id}/applications?status=submitted&review_result=passed") ->assertOk(); $ids = collect($response->json('data'))->pluck('id')->all(); $this->assertContains($passed->id, $ids); $this->assertCount(1, $ids); } }