mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-09-03 22:01:00 +00:00
* refactor: stabilize model identities for domain migration * refactor: extract module platform context * refactor: assign models to domain contexts * refactor: extract ai platform context * refactor: extract storage platform context * refactor: extract mail platform context * refactor: extract pdf platform context * refactor: extract operations platform context * refactor: move installation into operations platform * refactor: extract money domain context * refactor: extract taxation domain context * refactor: extract catalog domain context * refactor: extract metadata domain context * refactor: extract reporting domain context * refactor: extract purchases domain context * refactor: extract receivables domain context * refactor: extract accounts domain context * refactor: complete reporting statement boundary * refactor: extract contacts domain context * refactor: extract sales domain context * refactor: remove legacy application layers * fix: migrate legacy bouncer role identities
37 lines
1.3 KiB
PHP
37 lines
1.3 KiB
PHP
<?php
|
|
|
|
use App\Platform\Ai\Prompting\PromptLoader;
|
|
|
|
test('load substitutes placeholders in the chat-system template', function () {
|
|
$prompt = PromptLoader::load('chat-system', [
|
|
'user_name' => 'Jane Doe',
|
|
'company_name' => 'Acme Corp',
|
|
'today' => '2026-04-11',
|
|
]);
|
|
|
|
// Substituted values present
|
|
expect($prompt)->toContain('Jane Doe');
|
|
expect($prompt)->toContain('Acme Corp');
|
|
expect($prompt)->toContain('2026-04-11');
|
|
|
|
// Raw placeholders are gone
|
|
expect($prompt)->not->toContain('{{user_name}}');
|
|
expect($prompt)->not->toContain('{{company_name}}');
|
|
expect($prompt)->not->toContain('{{today}}');
|
|
});
|
|
|
|
test('load returns a trimmed template when no placeholders are provided', function () {
|
|
$prompt = PromptLoader::load('text-generation');
|
|
|
|
expect($prompt)->not->toBe('');
|
|
// No leading/trailing whitespace — trim() stripped the trailing newline.
|
|
expect($prompt)->toBe(trim($prompt));
|
|
// Sanity-check a word known to appear in the preamble.
|
|
expect($prompt)->toContain('writing assistant');
|
|
});
|
|
|
|
test('load throws when the template file is missing', function () {
|
|
expect(fn () => PromptLoader::load('definitely-not-a-real-prompt'))
|
|
->toThrow(RuntimeException::class, 'Missing AI prompt template: definitely-not-a-real-prompt');
|
|
});
|