create([ 'subtitle' => 'Eine sinnvolle Subline', 'boilerplate_override' => 'PM-spezifischer Boilerplate-Text.', 'scheduled_at' => now()->addDay(), 'embargo_at' => now()->addDays(2), ]); $fresh = $pr->fresh(); expect($fresh->subtitle)->toBe('Eine sinnvolle Subline'); expect($fresh->boilerplate_override)->toBe('PM-spezifischer Boilerplate-Text.'); expect($fresh->scheduled_at)->not->toBeNull(); expect($fresh->embargo_at)->not->toBeNull(); }); test('company accepts a boilerplate field', function () { $company = Company::factory()->create([ 'boilerplate' => 'Über die Beispiel GmbH: gegründet 1900, …', ]); expect($company->fresh()->boilerplate)->toBe('Über die Beispiel GmbH: gegründet 1900, …'); }); test('press release attachments table works via factory and relation', function () { $pr = PressRelease::factory()->create(); $attachment = PressReleaseAttachment::factory()->create([ 'press_release_id' => $pr->id, 'original_name' => 'pressemappe.pdf', 'mime' => 'application/pdf', 'size' => 1_234_567, 'sort_order' => 1, ]); expect($pr->fresh()->attachments)->toHaveCount(1); expect($pr->fresh()->attachments->first()->original_name)->toBe('pressemappe.pdf'); expect($attachment->pressRelease->is($pr))->toBeTrue(); }); test('attachment is removed when press release is force-deleted', function () { $pr = PressRelease::factory()->create(); PressReleaseAttachment::factory()->for($pr)->create(); $pr->forceDelete(); expect(PressReleaseAttachment::query()->withTrashed()->count())->toBe(0); });