From 259591393f33b72e5c97dd72a8b596c0c7f1c4e2 Mon Sep 17 00:00:00 2001 From: philipp lang <philipp@aweos.de> Date: Wed, 16 Nov 2022 22:28:42 +0100 Subject: [PATCH] Add member indexTest --- app/Member/MemberResource.php | 6 ++-- app/Membership/MembershipResource.php | 2 +- tests/Feature/Member/IndexTest.php | 48 ++++++++++++++++++--------- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/app/Member/MemberResource.php b/app/Member/MemberResource.php index 2f8c5bf6..5dd71f51 100644 --- a/app/Member/MemberResource.php +++ b/app/Member/MemberResource.php @@ -57,9 +57,7 @@ class MemberResource extends JsonResource 'payments' => PaymentResource::collection($this->whenLoaded('payments')), 'memberships' => MembershipResource::collection($this->whenLoaded('memberships')), 'pending_payment' => $this->pending_payment ? number_format($this->pending_payment / 100, 2, ',', '.').' €' : null, - 'first_activity_id' => $this->first_activity_id, - 'first_subactivity_id' => $this->first_subactivity_id, - 'age_group_icon' => $this->age_group_icon, + 'age_group_icon' => $this->ageGroupMemberships->first()?->subactivity->slug, 'courses' => CourseResource::collection($this->whenLoaded('courses')), 'efz' => $this->efz, 'efz_link' => $this->getEfzLink(), @@ -72,7 +70,7 @@ class MemberResource extends JsonResource 'multiply_pv' => $this->multiply_pv, 'multiply_more_pv' => $this->multiply_more_pv, 'age' => $this->getModel()->getAge(), - 'is_leader' => $this->is_leader, + 'is_leader' => $this->leaderMemberships->count() > 0, ]; } } diff --git a/app/Membership/MembershipResource.php b/app/Membership/MembershipResource.php index 3f164247..2e060900 100644 --- a/app/Membership/MembershipResource.php +++ b/app/Membership/MembershipResource.php @@ -23,7 +23,7 @@ class MembershipResource extends JsonResource 'activity_id' => $this->activity_id, 'activity_name' => $this->activity->name, 'subactivity_id' => $this->subactivity_id, - 'subactivity_name' => optional($this->subactivity)->name, + 'subactivity_name' => $this->subactivity?->name, 'human_date' => $this->created_at->format('d.m.Y'), ]; } diff --git a/tests/Feature/Member/IndexTest.php b/tests/Feature/Member/IndexTest.php index d5532955..9294bfe9 100644 --- a/tests/Feature/Member/IndexTest.php +++ b/tests/Feature/Member/IndexTest.php @@ -8,6 +8,7 @@ use App\Course\Models\CourseMember; use App\Member\Member; use App\Member\Membership; use App\Subactivity; +use Carbon\Carbon; use Illuminate\Foundation\Testing\DatabaseTransactions; use Tests\TestCase; use Zoomyboy\LaravelNami\Backend\FakeBackend; @@ -37,8 +38,7 @@ class IndexTest extends TestCase 'gruppierung' => '::group::', 'version' => 40, ]); - $this->withoutExceptionHandling(); - $this->login()->loginNami(); + $this->withoutExceptionHandling()->login()->loginNami(); Member::factory()->defaults()->has(CourseMember::factory()->for(Course::factory()), 'courses')->create(['firstname' => '::firstname::']); $response = $this->get('/member'); @@ -49,15 +49,14 @@ class IndexTest extends TestCase public function testItShowsEfzForEfzMembership(): void { - $this->withoutExceptionHandling(); - $this->login()->loginNami(); + $this->withoutExceptionHandling()->login()->loginNami(); $member = Member::factory() ->defaults() - ->has(Membership::factory()->for(Subactivity::factory()->ageGroup())->for(Activity::factory()->state(['has_efz' => true]))) + ->has(Membership::factory()->in('€ LeiterIn', 455, 'Pfadfinder', 15)) ->create(['lastname' => 'A']); Member::factory() ->defaults() - ->has(Membership::factory()->for(Subactivity::factory()->ageGroup())->for(Activity::factory()->state(['has_efz' => false]))) + ->has(Membership::factory()->in('€ Mitglied', 456, 'Pfadfinder', 16)) ->create(['lastname' => 'B']); Member::factory() ->defaults() @@ -75,11 +74,10 @@ class IndexTest extends TestCase public function testItShowsAgeGroupIcon(): void { - $this->withoutExceptionHandling(); - $this->login()->loginNami(); + $this->withoutExceptionHandling()->login()->loginNami(); $member = Member::factory() ->defaults() - ->has(Membership::factory()->for(Subactivity::factory()->ageGroup()->name('Wölfling'))->for(Activity::factory()->state(['has_efz' => false]))) + ->has(Membership::factory()->in('€ Mitglied', 123, 'Wölfling', 12)) ->create(); $response = $this->get('/member'); @@ -89,15 +87,35 @@ class IndexTest extends TestCase public function testItShowsActivitiesAndSubactivities(): void { - $this->withoutExceptionHandling(); - $this->login()->loginNami(); - $activity = Activity::factory()->hasAttached(Subactivity::factory()->name('SG Nahost')->ageGroup()->filterable())->name('Mitglied')->create(); + $this->withoutExceptionHandling()->login()->loginNami(); + $activity = Activity::factory()->hasAttached(Subactivity::factory()->name('Biber'))->name('€ Mitglied')->create(); $subactivity = $activity->subactivities->first(); $response = $this->get('/member'); - $this->assertInertiaHas('SG Nahost', $response, "subactivities.{$activity->id}.{$subactivity->id}"); - $this->assertInertiaHas('SG Nahost', $response, "filterSubactivities.{$subactivity->id}"); - $this->assertInertiaHas('Mitglied', $response, "activities.{$activity->id}"); + $this->assertInertiaHas('Biber', $response, "subactivities.{$activity->id}.{$subactivity->id}"); + $this->assertInertiaHas('Biber', $response, "filterSubactivities.{$subactivity->id}"); + $this->assertInertiaHas('€ Mitglied', $response, "activities.{$activity->id}"); + } + + public function testItShowsActivityAndSubactivityNamesOfMember(): void + { + Carbon::setTestNow(Carbon::parse('2022-11-02 03:00:00')); + $this->withoutExceptionHandling()->login()->loginNami(); + $member = Member::factory() + ->defaults() + ->has(Membership::factory()->in('€ Mitglied', 122, 'Wölfling', 234)) + ->create(); + + $response = $this->get('/member'); + + $this->assertInertiaHas([ + 'activity' => $member->memberships->first()->activity_id, + 'subactivity' => $member->memberships->first()->subactivity_id, + 'activity_name' => '€ Mitglied', + 'subactivity_name' => 'Wölfling', + 'human_date' => '02.11.2022', + 'id' => $member->memberships->first()->id, + ], $response, 'data.data.0.memberships.0'); } }