250 lines
8.2 KiB
PHP
250 lines
8.2 KiB
PHP
<?php
|
|
|
|
namespace Zoomyboy\LaravelNami\Tests\Unit\Api;
|
|
|
|
use Zoomyboy\LaravelNami\Data\BankAccount;
|
|
use Zoomyboy\LaravelNami\Data\Member;
|
|
use Zoomyboy\LaravelNami\Fakes\MemberFake;
|
|
use Zoomyboy\LaravelNami\Tests\TestCase;
|
|
|
|
class PutMemberTest extends TestCase
|
|
{
|
|
public function testPushASingleMember(): void
|
|
{
|
|
app(MemberFake::class)->stores(103, 16);
|
|
$member = Member::toFactory()->toMember([
|
|
'firstname' => 'Max',
|
|
'lastname' => 'Nach1',
|
|
'nickname' => 'spitz1',
|
|
'groupId' => 103,
|
|
'genderId' => 17,
|
|
'confessionId' => 33,
|
|
'joinedAt' => '2021-02-02 00:00:00',
|
|
'birthday' => '2021-02-02 00:00:00',
|
|
'email' => 'aa@b.de',
|
|
'countryId' => 78,
|
|
'regionId' => 11,
|
|
'nationalityId' => 12,
|
|
'beitragsartId' => null,
|
|
'emailParents' => 'a@b.de',
|
|
'location' => 'SG',
|
|
'zip' => 55555,
|
|
'address' => 'Maxstr 5',
|
|
'fax' => '+49 111',
|
|
'mainPhone' => '+49 222',
|
|
'mobilePhone' => '+49 333',
|
|
'workPhone' => '+49 3333',
|
|
'keepdata' => true,
|
|
'sendNewspaper' => true,
|
|
'otherCountry' => 'Land',
|
|
'furtherAddress' => 'Name',
|
|
'version' => 40,
|
|
]);
|
|
$response = $this->login()->putMember($member, 78, 79);
|
|
|
|
$this->assertEquals(16, $response);
|
|
|
|
app(MemberFake::class)->assertStored(103, [
|
|
'spitzname' => 'spitz1',
|
|
'vorname' => 'Max',
|
|
'nachname' => 'Nach1',
|
|
'geschlechtId' => 17,
|
|
'email' => 'aa@b.de',
|
|
'beitragsartId' => null,
|
|
'geburtsDatum' => '2021-02-02 00:00:00',
|
|
'konfessionId' => 33,
|
|
'landId' => 78,
|
|
'regionId' => 11,
|
|
'staatsangehoerigkeitId' => 12,
|
|
'ersteTaetigkeitId' => 78,
|
|
'ersteUntergliederungId' => 79,
|
|
'emailVertretungsberechtigter' => 'a@b.de',
|
|
'ort' => 'SG',
|
|
'plz' => '55555',
|
|
'strasse' => 'Maxstr 5',
|
|
'telefax' => '+49 111',
|
|
'telefon1' => '+49 222',
|
|
'telefon2' => '+49 333',
|
|
'telefon3' => '+49 3333',
|
|
'wiederverwendenFlag' => true,
|
|
'zeitschriftenversand' => true,
|
|
'staatsangehoerigkeitText' => 'Land',
|
|
'nameZusatz' => 'Name',
|
|
'version' => 40,
|
|
'eintrittsdatum' => '2021-02-02 00:00:00',
|
|
]);
|
|
}
|
|
|
|
public function testItPutsEmptyKontoverbindung(): void
|
|
{
|
|
app(MemberFake::class)->stores(103, 16);
|
|
$member = Member::toFactory()
|
|
->withBankAccount(BankAccount::toFactory()->empty())
|
|
->toMember(['groupId' => 103]);
|
|
$response = $this->login()->putMember($member, 78, 79);
|
|
|
|
$this->assertEquals(16, $response);
|
|
|
|
app(MemberFake::class)->assertStored(103, [
|
|
'kontoverbindung' => json_encode([
|
|
'id' => '',
|
|
'zahlungsKonditionId' => null,
|
|
'mitgliedsNummer' => null,
|
|
'institut' => '',
|
|
'kontoinhaber' => '',
|
|
'kontonummer' => '',
|
|
'bankleitzahl' => '',
|
|
'iban' => '',
|
|
'bic' => '',
|
|
]),
|
|
]);
|
|
}
|
|
|
|
public function testItPutsFilledKontoverbindung(): void
|
|
{
|
|
app(MemberFake::class)->stores(103, 16);
|
|
$member = Member::toFactory()
|
|
->withBankAccount(BankAccount::toFactory()->empty()->state([
|
|
'zahlungsKonditionId' => 1,
|
|
'institut' => 'institut',
|
|
'kontoinhaber' => 'kontoinhaber',
|
|
'kontonummer' => 'kontonummer',
|
|
'bankleitzahl' => 'bankleitzahl',
|
|
'iban' => 'iban',
|
|
'bic' => 'bic',
|
|
]))
|
|
->toMember(['groupId' => 103]);
|
|
$response = $this->login()->putMember($member, 78, 79);
|
|
|
|
$this->assertEquals(16, $response);
|
|
|
|
app(MemberFake::class)->assertStored(103, [
|
|
'kontoverbindung' => json_encode([
|
|
'id' => '',
|
|
'zahlungsKonditionId' => 1,
|
|
'mitgliedsNummer' => null,
|
|
'institut' => 'institut',
|
|
'kontoinhaber' => 'kontoinhaber',
|
|
'kontonummer' => 'kontonummer',
|
|
'bankleitzahl' => 'bankleitzahl',
|
|
'iban' => 'iban',
|
|
'bic' => 'bic',
|
|
]),
|
|
]);
|
|
}
|
|
|
|
public function testItUpdatesKontoverbindung(): void
|
|
{
|
|
app(MemberFake::class)
|
|
->updatesSuccessfully(103, 16)
|
|
->shows(103, 16);
|
|
$member = Member::toFactory()
|
|
->withBankAccount(BankAccount::toFactory()->state([
|
|
'id' => 555,
|
|
'zahlungsKonditionId' => 1,
|
|
'institut' => 'institut',
|
|
'kontoinhaber' => 'kontoinhaber',
|
|
'kontonummer' => 'kontonummer',
|
|
'bankleitzahl' => 'bankleitzahl',
|
|
'iban' => 'iban',
|
|
'bic' => 'bic',
|
|
]))
|
|
->toMember(['groupId' => 103, 'id' => 16, 'mitgliedsNummer' => 18]);
|
|
$response = $this->login()->putMember($member);
|
|
|
|
$this->assertEquals(16, $response);
|
|
|
|
app(MemberFake::class)->assertUpdated(103, 16, [
|
|
'kontoverbindung' => json_encode([
|
|
'id' => 555,
|
|
'zahlungsKonditionId' => 1,
|
|
'mitgliedsNummer' => 18,
|
|
'institut' => 'institut',
|
|
'kontoinhaber' => 'kontoinhaber',
|
|
'kontonummer' => 'kontonummer',
|
|
'bankleitzahl' => 'bankleitzahl',
|
|
'iban' => 'iban',
|
|
'bic' => 'bic',
|
|
]),
|
|
]);
|
|
}
|
|
|
|
public function testUpdateAMemberWithForeignAttributes(): void
|
|
{
|
|
app(MemberFake::class)
|
|
->updatesSuccessfully(103, 16)
|
|
->shows(103, 16);
|
|
$member = Member::toFactory()->toMember([
|
|
'firstname' => 'Max',
|
|
'lastname' => 'Nach1',
|
|
'nickname' => 'spitz1',
|
|
'groupId' => 103,
|
|
'genderId' => 17,
|
|
'confessionId' => 33,
|
|
'joinedAt' => '2021-02-02 00:00:00',
|
|
'birthday' => '2021-02-02 00:00:00',
|
|
'email' => 'aa@b.de',
|
|
'countryId' => 78,
|
|
'keepdata' => false,
|
|
'sendNewspaper' => false,
|
|
'regionId' => 11,
|
|
'nationalityId' => 12,
|
|
'beitragsartId' => null,
|
|
'id' => 16,
|
|
]);
|
|
$response = $this->login()->putMember($member);
|
|
|
|
$this->assertEquals(16, $response);
|
|
|
|
app(MemberFake::class)->assertUpdated(103, 16, [
|
|
'spitzname' => 'spitz1',
|
|
'vorname' => 'Max',
|
|
'nachname' => 'Nach1',
|
|
'geschlechtId' => 17,
|
|
'email' => 'aa@b.de',
|
|
'beitragsartId' => null,
|
|
'geburtsDatum' => '2021-02-02 00:00:00',
|
|
'konfessionId' => 33,
|
|
'landId' => 78,
|
|
'wiederverwendenFlag' => false,
|
|
'zeitschriftenversand' => false,
|
|
'regionId' => 11,
|
|
'staatsangehoerigkeitId' => 12,
|
|
]);
|
|
}
|
|
|
|
public function testEmailCanBeNull(): void
|
|
{
|
|
app(MemberFake::class)
|
|
->updatesSuccessfully(103, 16)
|
|
->shows(103, 16);
|
|
$member = Member::toFactory()->toMember([
|
|
'email' => null,
|
|
'groupId' => 103,
|
|
'id' => 16,
|
|
]);
|
|
$response = $this->login()->putMember($member);
|
|
|
|
$this->assertEquals(16, $response);
|
|
|
|
app(MemberFake::class)->assertUpdated(103, 16, [
|
|
'email' => null,
|
|
]);
|
|
}
|
|
|
|
public function testUpdateToDefaultGenderIdAndRegionIdIfTheyAreNull(): void
|
|
{
|
|
app(MemberFake::class)
|
|
->updatesSuccessfully(103, 16)
|
|
->shows(103, 16, []);
|
|
$response = $this->login()->putMember(Member::toFactory()->inNami(103, 16)->toMember(['genderId' => null, 'regionId' => null]));
|
|
|
|
$this->assertEquals(16, $response);
|
|
|
|
app(MemberFake::class)->assertUpdated(103, 16, [
|
|
'geschlechtId' => 23,
|
|
'regionId' => 23,
|
|
]);
|
|
}
|
|
}
|