Hintergründe zum EventInvitePage Layout Customizer hinzugefügt. Badge und CTA entfernt, Textfelder zu Textareas gemacht. Geschenkgutscheine verbessert, E-Mail-Versand ergänzt + Resend + Confirmationseite mit Code-Copy und Link zur Package-Seite, die den Code als URL-Parameter enthält.

This commit is contained in:
Codex Agent
2025-12-08 16:20:04 +01:00
parent 046e2fe3ec
commit 4784c23e70
35 changed files with 1503 additions and 136 deletions

View File

@@ -0,0 +1,52 @@
<?php
namespace Tests\Feature\Api;
use App\Models\GiftVoucher;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class GiftVoucherLookupTest extends TestCase
{
use RefreshDatabase;
public function test_it_returns_voucher_by_checkout_id(): void
{
$voucher = GiftVoucher::factory()->create([
'code' => 'GIFT-TESTCODE',
'amount' => 59.00,
'currency' => 'EUR',
'paddle_checkout_id' => 'chk_look_123',
'status' => GiftVoucher::STATUS_ISSUED,
]);
$response = $this->getJson('/api/v1/marketing/gift-vouchers/lookup?checkout_id=chk_look_123');
$response->assertOk()
->assertJsonPath('data.code', $voucher->code)
->assertJsonPath('data.amount', 59)
->assertJsonPath('data.currency', 'EUR');
}
public function test_it_returns_voucher_by_code(): void
{
$voucher = GiftVoucher::factory()->create([
'code' => 'GIFT-CODE',
'amount' => 29.00,
'currency' => 'EUR',
]);
$response = $this->getJson('/api/v1/marketing/gift-vouchers/lookup?code=gift-code');
$response->assertOk()
->assertJsonPath('data.code', $voucher->code)
->assertJsonPath('data.amount', 29);
}
public function test_it_requires_identifier(): void
{
$response = $this->getJson('/api/v1/marketing/gift-vouchers/lookup');
$response->assertStatus(422);
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace Tests\Feature\Api;
use App\Models\GiftVoucher;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Mail;
use Tests\TestCase;
use App\Mail\GiftVoucherIssued;
class GiftVoucherResendTest extends TestCase
{
use RefreshDatabase;
public function test_it_resends_voucher_emails(): void
{
Mail::fake();
config()->set('gift-vouchers.reminder_days', 0);
config()->set('gift-vouchers.expiry_reminder_days', 0);
$voucher = GiftVoucher::factory()->create([
'code' => 'GIFT-RESEND',
'purchaser_email' => 'buyer@example.com',
'recipient_email' => 'friend@example.com',
]);
$response = $this->postJson('/api/v1/marketing/gift-vouchers/resend', [
'code' => 'gift-resend',
]);
$response->assertOk();
Mail::assertQueued(GiftVoucherIssued::class, 2);
}
public function test_it_requires_code(): void
{
$response = $this->postJson('/api/v1/marketing/gift-vouchers/resend', []);
$response->assertStatus(422);
}
}