File: /home/xedaptot/be.naniguide.com/tests/Feature/TemplateServiceFeatureTest.php
<?php
uses(Tests\TestCase::class, Illuminate\Foundation\Testing\DatabaseTransactions::class)
->group('templateService');
use App\Model\SystemTemplate;
use App\Model\Template;
use App\Services\TemplateService;
test('TemplateService keeps cascade-backed wrapper subjects alive when replacing templates', function () {
$currentTemplate = Template::factory()->create(['name' => 'Current Wrapper Template']);
$sourceTemplate = Template::factory()->create(['name' => 'Source Catalog Template']);
$systemTemplate = new SystemTemplate();
$systemTemplate->alias = 'template-service-' . uniqid();
$systemTemplate->template()->associate($currentTemplate);
$systemTemplate->save();
$subjectId = $systemTemplate->id;
$oldTemplateId = $currentTemplate->id;
$assignedTemplate = TemplateService::for($systemTemplate)->setTemplate($sourceTemplate, 'Reassigned Page Template');
$freshSubject = SystemTemplate::find($subjectId);
expect($freshSubject)->not->toBeNull();
expect($freshSubject->template_id)->toBe($assignedTemplate->id);
expect($freshSubject->template_id)->not->toBe($oldTemplateId);
expect(Template::find($oldTemplateId))->toBeNull();
});