test(阶段三): 添加终端管理功能测试

- TerminalResourceTest: 18个测试用例,测试终端CRUD和筛选功能
- TerminalKnowledgeBaseAssociationTest: 5个测试用例,测试知识库关联
- TerminalKnowledgeBaseFormTest: 6个测试用例,测试表单关联功能
- TerminalPromptTest: 6个测试用例,测试提示词模型
- TerminalPromptFormTest: 3个测试用例,测试提示词表单
- PromptTemplateTest: 16个测试用例,测试模板和变量功能
- TerminalSyncTest: 8个测试用例,测试配置同步功能
- 总计62个测试用例,覆盖所有核心功能
This commit is contained in:
2026-03-09 10:59:54 +08:00
parent 6b6afd1b75
commit 8bbd5dc30f
7 changed files with 1374 additions and 0 deletions

View File

@@ -0,0 +1,118 @@
<?php
namespace Tests\Feature;
use App\Models\Terminal;
use App\Models\TerminalPrompt;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class TerminalPromptTest extends TestCase
{
use RefreshDatabase;
protected User $user;
protected function setUp(): void
{
parent::setUp();
$this->user = User::factory()->create();
}
/** @test */
public function terminal_can_have_prompt()
{
$terminal = Terminal::factory()->create();
$prompt = TerminalPrompt::create([
'terminal_id' => $terminal->id,
'prompt_template' => '你是一个智能助手,当前用户是 {user}。',
'variables' => ['user', 'station', 'time'],
]);
$this->assertInstanceOf(TerminalPrompt::class, $terminal->prompt);
$this->assertEquals($prompt->id, $terminal->prompt->id);
$this->assertEquals('你是一个智能助手,当前用户是 {user}。', $terminal->prompt->prompt_template);
}
/** @test */
public function prompt_belongs_to_terminal()
{
$terminal = Terminal::factory()->create();
$prompt = TerminalPrompt::create([
'terminal_id' => $terminal->id,
'prompt_template' => '测试提示词',
'variables' => [],
]);
$this->assertInstanceOf(Terminal::class, $prompt->terminal);
$this->assertEquals($terminal->id, $prompt->terminal->id);
}
/** @test */
public function prompt_variables_are_cast_to_array()
{
$terminal = Terminal::factory()->create();
$prompt = TerminalPrompt::create([
'terminal_id' => $terminal->id,
'prompt_template' => '测试提示词',
'variables' => ['user', 'station', 'time'],
]);
$this->assertIsArray($prompt->variables);
$this->assertEquals(['user', 'station', 'time'], $prompt->variables);
}
/** @test */
public function deleting_terminal_deletes_prompt()
{
$terminal = Terminal::factory()->create();
$prompt = TerminalPrompt::create([
'terminal_id' => $terminal->id,
'prompt_template' => '测试提示词',
'variables' => [],
]);
$promptId = $prompt->id;
// 使用forceDelete来真正删除记录触发级联删除
$terminal->forceDelete();
$this->assertDatabaseMissing('terminal_prompts', ['id' => $promptId]);
}
/** @test */
public function prompt_template_can_be_empty()
{
$terminal = Terminal::factory()->create();
$prompt = TerminalPrompt::create([
'terminal_id' => $terminal->id,
'prompt_template' => '',
'variables' => [],
]);
$this->assertEquals('', $prompt->prompt_template);
}
/** @test */
public function prompt_logs_activity()
{
$terminal = Terminal::factory()->create();
$prompt = TerminalPrompt::create([
'terminal_id' => $terminal->id,
'prompt_template' => '测试提示词',
'variables' => [],
]);
$this->assertDatabaseHas('activity_log', [
'subject_type' => TerminalPrompt::class,
'subject_id' => $prompt->id,
]);
}
}