KI-generierte Bilder: eigener Lizenztyp, Anbieter-Bestätigung, Kennzeichnung

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-06-12 16:04:12 +00:00
parent 6e0b2b1814
commit cc7b3c3379
9 changed files with 255 additions and 31 deletions

View file

@ -272,6 +272,63 @@ test('switching the license type clears the stale license detail', function () {
->assertSet('newLicenseDetail', '');
});
test('ai generated images require tool and provider terms confirmation', function () {
/** @var TestCase $this */
['owner' => $owner, 'pr' => $pr] = makeImageDraftOwner();
$this->actingAs($owner);
LivewireVolt::test('components.press-release-images-manager', ['pressReleaseId' => $pr->id])
->set('newImage', UploadedFile::fake()->image('ki-bild.jpg', 1200, 800))
->set('newAuthor', 'Beispiel GmbH')
->set('newLicenseType', ImageLicenseType::AiGenerated->value)
->set('newPeopleRightsStatus', 'none')
->set('newPropertyRightsStatus', 'none')
->set('newRightsConfirmed', true)
->call('saveImage')
->assertHasErrors(['newLicenseDetail', 'newAiTermsConfirmed']);
});
test('a valid ai generated upload stores tool and ai flag', function () {
/** @var TestCase $this */
['owner' => $owner, 'pr' => $pr] = makeImageDraftOwner();
$this->actingAs($owner);
LivewireVolt::test('components.press-release-images-manager', ['pressReleaseId' => $pr->id])
->set('newImage', UploadedFile::fake()->image('ki-bild.jpg', 1200, 800))
->set('newAuthor', 'Beispiel GmbH')
->set('newLicenseType', ImageLicenseType::AiGenerated->value)
->set('newLicenseDetail', 'Midjourney v7')
->set('newPeopleRightsStatus', 'none')
->set('newPropertyRightsStatus', 'none')
->set('newRightsConfirmed', true)
->set('newAiTermsConfirmed', true)
->call('saveImage')
->assertHasNoErrors();
$image = $pr->images()->first();
expect($image)->not->toBeNull();
expect($image->license_type)->toBe(ImageLicenseType::AiGenerated);
expect($image->license_detail)->toBe('Midjourney v7');
expect($image->is_ai_generated)->toBeTrue();
expect($image->copyright)->toBe('Bild: KI-generiert (Midjourney v7)');
});
test('the ai copyright suggestion follows the tool but respects manual input', function () {
/** @var TestCase $this */
['owner' => $owner, 'pr' => $pr] = makeImageDraftOwner();
$this->actingAs($owner);
LivewireVolt::test('components.press-release-images-manager', ['pressReleaseId' => $pr->id])
->set('newLicenseType', ImageLicenseType::AiGenerated->value)
->assertSet('newCopyright', 'Bild: KI-generiert')
->set('newLicenseDetail', 'DALL·E 3')
->assertSet('newCopyright', 'Bild: KI-generiert (DALL·E 3)')
->set('newCopyright', 'Eigener Nachweis')
->set('newLicenseDetail', 'Midjourney v7')
->assertSet('newCopyright', 'Eigener Nachweis');
});
test('existing title image hides upload form and can be removed', function () {
/** @var TestCase $this */
['owner' => $owner, 'pr' => $pr] = makeImageDraftOwner();