From 51af9d427ee97c114e88a71ffb99e498185550b7 Mon Sep 17 00:00:00 2001 From: philipp lang Date: Mon, 23 Jun 2025 22:33:18 +0200 Subject: [PATCH] Fix: Compile contribution documents without gender --- app/Contribution/Data/MemberData.php | 2 +- tests/Feature/Contribution/StoreTest.php | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/Contribution/Data/MemberData.php b/app/Contribution/Data/MemberData.php index b5882564..0502f63d 100644 --- a/app/Contribution/Data/MemberData.php +++ b/app/Contribution/Data/MemberData.php @@ -47,7 +47,7 @@ class MemberData extends Data return collect($data)->map(fn ($member) => self::factory()->withoutMagicalCreation()->from([ ...$member, 'birthday' => Carbon::parse($member['birthday'])->toAtomString(), - 'gender' => Gender::fromString($member['gender']), + 'gender' => $member['gender'] ? Gender::fromString($member['gender']) : null, 'isLeader' => $member['is_leader'], ])); } diff --git a/tests/Feature/Contribution/StoreTest.php b/tests/Feature/Contribution/StoreTest.php index ac2ac610..f4396d82 100644 --- a/tests/Feature/Contribution/StoreTest.php +++ b/tests/Feature/Contribution/StoreTest.php @@ -100,6 +100,28 @@ it('testItCompilesContributionDocumentsViaApi', function (string $type, array $b Tex::assertCompiled($type, fn ($document) => $document->hasAllContent($bodyChecks)); })->with('contribution-assertions'); +it('compiles when gender is null', function () { + $this->withoutExceptionHandling(); + Tex::spy(); + Passport::actingAsClient(Client::factory()->create(), ['contribution-generate']); + + $response = $this->postJson('/api/contribution-generate', [ + 'country' => Country::factory()->create()->id, + 'dateFrom' => '1991-06-15', + 'dateUntil' => '1991-06-16', + 'eventName' => 'Super tolles Lager', + 'type' => CitySolingenDocument::class, + 'zipLocation' => '42777 SG', + 'members' => [ + ContributionMemberApiRequestFactory::new()->create(['address' => 'Maxstr 44', 'zip' => '42719', 'firstname' => 'Jane', 'lastname' => 'Muster', 'gender' => null]), + ], + ]); + + $response->assertSessionDoesntHaveErrors(); + $response->assertOk(); + Tex::assertCompiled(CitySolingenDocument::class, fn () => true); +}); + it('testInputShouldBeBase64EncodedJson', function (string $payload) { $this->login()->loginNami();