Files
InvoiceShelf/tests/Unit/PromptLoaderTest.php
T
Darko Gjorgjijoski 5ef7804e60 refactor: adopt modular domain architecture (#747)
* 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
2026-08-05 17:40:03 +02:00

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');
});