Files
KnowledgeBase/tests/Feature/TerminalPromptTest.php
lizhuoran 8bbd5dc30f test(阶段三): 添加终端管理功能测试
- TerminalResourceTest: 18个测试用例,测试终端CRUD和筛选功能
- TerminalKnowledgeBaseAssociationTest: 5个测试用例,测试知识库关联
- TerminalKnowledgeBaseFormTest: 6个测试用例,测试表单关联功能
- TerminalPromptTest: 6个测试用例,测试提示词模型
- TerminalPromptFormTest: 3个测试用例,测试提示词表单
- PromptTemplateTest: 16个测试用例,测试模板和变量功能
- TerminalSyncTest: 8个测试用例,测试配置同步功能
- 总计62个测试用例,覆盖所有核心功能
2026-03-09 10:59:54 +08:00

119 lines
3.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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,
]);
}
}