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, ]); } }