Add: Fetch Bank account data from member

This commit is contained in:
philipp lang 2025-03-29 01:26:08 +01:00
parent 8adf858abc
commit 9e74212d84
4 changed files with 92 additions and 0 deletions

30
src/Data/BankAccount.php Normal file
View File

@ -0,0 +1,30 @@
<?php
namespace Zoomyboy\LaravelNami\Data;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Attributes\MapInputName;
class BankAccount extends Data
{
public function __construct(
public int $id,
#[MapInputName('mitgliedsNummer')]
public int $memberId,
#[MapInputName('bankleitzahl')]
public ?string $blz = null,
public ?string $bic = null,
public ?string $iban = null,
#[MapInputName('institut')]
public ?string $bankName = null,
#[MapInputName('kontoinhaber')]
public ?string $person = null,
#[MapInputName('kontonummer')]
public ?string $accountNumber = null,
#[MapInputName('zahlungsKonditionId')]
public ?int $conditionId = null,
) {
}
}

View File

@ -122,6 +122,9 @@ class Member extends Data
#[MapInputName('zeitschriftenversand')]
public bool $sendNewspaper,
#[MapInputName('kontoverbindung')]
public BankAccount $bankAccount,
) {
}

View File

@ -56,6 +56,7 @@ class MemberFake extends Fake
'vorname' => '::firstname::',
'wiederverwendenFlag' => false,
'zeitschriftenversand' => true,
'kontoverbindung' => ['mitgliedsNummer' => 55, 'id' => 5656],
], $data));
}
});

View File

@ -78,6 +78,64 @@ class FetchMemberTest extends TestCase
$this->assertSame('Gruppe', $member->groupName);
}
public function testItGetsMembersBankAccountData(): void
{
app(MemberFake::class)->shows(1000, 1001, [
'kontoverbindung' => [
'bankleitzahl' => '34255555',
'bic' => 'SOLSDE33XXX',
'iban' => 'DE4534250000185577622',
'id' => 123,
'institut' => 'Bank',
'kontoinhaber' => 'Max',
'kontonummer' => '77622',
'mitgliedsNummer' => 1001,
'zahlungsKonditionId' => 500,
]
]);
$member = $this->login()->member(1000, 1001);
$this->assertSame('34255555', $member->bankAccount->blz);
$this->assertSame('SOLSDE33XXX', $member->bankAccount->bic);
$this->assertSame('DE4534250000185577622', $member->bankAccount->iban);
$this->assertSame(123, $member->bankAccount->id);
$this->assertSame('Bank', $member->bankAccount->bankName);
$this->assertSame('Max', $member->bankAccount->person);
$this->assertSame('77622', $member->bankAccount->accountNumber);
$this->assertSame(1001, $member->bankAccount->memberId);
$this->assertSame(500, $member->bankAccount->conditionId);
}
public function testItGetsMinimalBankAccountData(): void
{
app(MemberFake::class)->shows(1000, 1001, [
'kontoverbindung' => [
'bankleitzahl' => null,
'bic' => null,
'iban' => null,
'id' => 123,
'institut' => null,
'kontoinhaber' => null,
'kontonummer' => null,
'mitgliedsNummer' => 1001,
'zahlungsKonditionId' => null,
]
]);
$member = $this->login()->member(1000, 1001);
$this->assertNull($member->bankAccount->blz);
$this->assertNull($member->bankAccount->bic);
$this->assertNull($member->bankAccount->iban);
$this->assertSame(123, $member->bankAccount->id);
$this->assertNull($member->bankAccount->bankName);
$this->assertNull($member->bankAccount->person);
$this->assertNull($member->bankAccount->accountNumber);
$this->assertSame(1001, $member->bankAccount->memberId);
$this->assertNull($member->bankAccount->conditionId);
}
public function testGetMinimalData(): void
{
app(MemberFake::class)->shows(1000, 1001, [