setRawAttributes([ 'payment_purpose' => $purpose, ], true); // Amount-Casts umgehen und die Value-Objects direkt setzen. $participant->amount = new Amount($amount, ' Euro'); $participant->amount_paid = new Amount($amountPaid, ' Euro'); return $participant; } public function test_account_transfer_summary_builds_lines_from_config(): void { $module = new AccountTransferPaymentModule(); $request = new RegistrationSummaryRequest( $this->participant(50.0, 0.0, 'Camp - Beitrag'), ['account_owner' => 'Kasse', 'iban' => 'DE123', 'bic' => 'XY'], ); $summary = $module->registrationSummary($request); $this->assertTrue($summary->hasPaymentInformation); $this->assertTrue($summary->showGiroCode); $this->assertNull($summary->html); $byLabel = []; foreach ($summary->lines as $line) { $byLabel[$line['label']] = $line['value']; } $this->assertSame('Kasse', $byLabel['Kontoinhaber']); $this->assertSame('DE123', $byLabel['IBAN']); $this->assertSame('Camp - Beitrag', $byLabel['Verwendungszweck']); $this->assertArrayHasKey('Betrag', $byLabel); } public function test_account_transfer_without_open_amount_has_no_payment_information(): void { $module = new AccountTransferPaymentModule(); $summary = $module->registrationSummary(new RegistrationSummaryRequest( $this->participant(50.0, 50.0), ['account_owner' => 'Kasse', 'iban' => 'DE123'], )); $this->assertFalse($summary->hasPaymentInformation); $this->assertFalse($summary->showGiroCode); } public function test_cash_summary_returns_configured_html(): void { $module = new UndefinedPaymentModule(); $summary = $module->registrationSummary(new RegistrationSummaryRequest( $this->participant(50.0, 0.0), ['payment_information' => '
Bitte bar vor Ort zahlen.
'], )); $this->assertTrue($summary->hasPaymentInformation); $this->assertFalse($summary->showGiroCode); $this->assertSame('Bitte bar vor Ort zahlen.
', $summary->html); $this->assertSame([], $summary->lines); } public function test_cash_summary_empty_when_no_text_configured(): void { $module = new UndefinedPaymentModule(); $summary = $module->registrationSummary(new RegistrationSummaryRequest( $this->participant(50.0, 0.0), [], )); $this->assertFalse($summary->hasPaymentInformation); } public function test_cash_module_requires_payment_information_option(): void { $module = new UndefinedPaymentModule(); $this->assertSame(['payment_information'], $module->requiredOptionKeys()); $this->assertFalse($module->isConfigurationComplete([])); $this->assertTrue($module->isConfigurationComplete(['payment_information' => 'Text
'])); } }