From 298140e387d93928da01808bc720322171a99700 Mon Sep 17 00:00:00 2001 From: philipp lang Date: Wed, 28 Aug 2024 13:26:30 +0200 Subject: [PATCH] Set default member model as meta --- app/Member/MemberController.php | 1 - app/Member/MemberResource.php | 89 +++++++++++++---------------- resources/js/views/member/VForm.vue | 4 +- tests/EndToEnd/MemberIndexTest.php | 28 +++++---- 4 files changed, 56 insertions(+), 66 deletions(-) diff --git a/app/Member/MemberController.php b/app/Member/MemberController.php index 95b7986d..19bf94b0 100644 --- a/app/Member/MemberController.php +++ b/app/Member/MemberController.php @@ -33,7 +33,6 @@ class MemberController extends Controller session()->put('title', 'Mitglied erstellen'); return Inertia::render('member/VForm', [ - 'data' => MemberResource::defaultModel(), 'mode' => 'create', 'meta' => MemberResource::meta(), ]); diff --git a/app/Member/MemberResource.php b/app/Member/MemberResource.php index c3e2171d..4d68d368 100644 --- a/app/Member/MemberResource.php +++ b/app/Member/MemberResource.php @@ -162,54 +162,47 @@ class MemberResource extends JsonResource 'activity_ids' => [], 'subactivity_ids' => [] ], - ]; - } - - /** - * @return array - */ - public static function defaultModel(): array - { - return [ - 'gender_id' => null, - 'salutation' => '', - 'nationality_id' => null, - 'firstname' => '', - 'lastname' => '', - 'address' => '', - 'further_address' => '', - 'zip' => '', - 'location' => '', - 'birthday' => '', - 'region_id' => null, - 'country_id' => Country::default(), - 'other_country' => '', - 'main_phone' => '', - 'mobile_phone' => '', - 'work_phone' => '', - 'children_phone' => '', - 'email' => '', - 'email_parents' => '', - 'fax' => '', - 'letter_address' => '', - 'bill_kind' => null, - 'subscription_id' => null, - 'has_nami' => false, - 'send_newspaper' => false, - 'joined_at' => now()->format('Y-m-d'), - 'comment' => '', - 'first_activity_id' => null, - 'first_subactivity_id' => null, - 'efz' => null, - 'ps_at' => null, - 'more_ps_at' => null, - 'without_education_at' => null, - 'recertified_at' => null, - 'without_efz_at' => null, - 'has_vk' => false, - 'has_svk' => false, - 'multiply_pv' => false, - 'multiply_more_pv' => false, + 'default' => [ + 'gender_id' => null, + 'salutation' => '', + 'nationality_id' => null, + 'firstname' => '', + 'lastname' => '', + 'address' => '', + 'further_address' => '', + 'zip' => '', + 'location' => '', + 'birthday' => '', + 'region_id' => null, + 'country_id' => Country::default(), + 'other_country' => '', + 'main_phone' => '', + 'mobile_phone' => '', + 'work_phone' => '', + 'children_phone' => '', + 'email' => '', + 'email_parents' => '', + 'fax' => '', + 'letter_address' => '', + 'bill_kind' => null, + 'subscription_id' => null, + 'has_nami' => false, + 'send_newspaper' => false, + 'joined_at' => now()->format('Y-m-d'), + 'comment' => '', + 'first_activity_id' => null, + 'first_subactivity_id' => null, + 'efz' => null, + 'ps_at' => null, + 'more_ps_at' => null, + 'without_education_at' => null, + 'recertified_at' => null, + 'without_efz_at' => null, + 'has_vk' => false, + 'has_svk' => false, + 'multiply_pv' => false, + 'multiply_more_pv' => false, + ] ]; } } diff --git a/resources/js/views/member/VForm.vue b/resources/js/views/member/VForm.vue index 37c61d2b..b202a9e6 100644 --- a/resources/js/views/member/VForm.vue +++ b/resources/js/views/member/VForm.vue @@ -153,8 +153,8 @@ export default { }, data: function () { return { - original: {...this.data}, - inner: {...this.data}, + original: this.mode === 'create' ? {...this.meta.default} : {...this.data}, + inner: this.mode === 'create' ? {...this.meta.default} : {...this.data}, active: 0, }; }, diff --git a/tests/EndToEnd/MemberIndexTest.php b/tests/EndToEnd/MemberIndexTest.php index 4ac08fc1..a790c111 100644 --- a/tests/EndToEnd/MemberIndexTest.php +++ b/tests/EndToEnd/MemberIndexTest.php @@ -3,6 +3,7 @@ namespace Tests\EndToEnd; use App\Activity; +use App\Country; use App\Group; use App\Invoice\BillKind; use App\Invoice\Enums\InvoiceStatus; @@ -16,9 +17,15 @@ use Tests\EndToEndTestCase; class MemberIndexTest extends EndToEndTestCase { + public function setUp(): void + { + parent::setUp(); + Country::factory()->create(['name' => 'Deutschland']); + $this->withoutExceptionHandling()->login()->loginNami(); + } + public function testItHandlesFullTextSearch(): void { - $this->withoutExceptionHandling()->login()->loginNami(); Member::factory()->defaults()->count(2)->create(['firstname' => 'Alexander']); Member::factory()->defaults()->create(['firstname' => 'Heinrich']); @@ -29,9 +36,13 @@ class MemberIndexTest extends EndToEndTestCase ->assertInertiaCount('data.data', 1); } + public function testItGetsDefaultCountryFromDefaultModel(): void + { + $this->callFilter('member.index', [])->assertInertiaPath('data.meta.default.country_id', Country::firstWhere('name', 'Deutschland')->id); + } + public function testItHandlesAddress(): void { - $this->withoutExceptionHandling()->login()->loginNami(); Member::factory()->defaults()->create(['address' => '']); Member::factory()->defaults()->create(['zip' => '']); Member::factory()->defaults()->create(['location' => '']); @@ -52,7 +63,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItHandlesBirthday(): void { - $this->withoutExceptionHandling()->login()->loginNami(); Member::factory()->defaults()->create(['birthday' => null]); Member::factory()->defaults()->count(2)->create(); @@ -65,7 +75,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItHandlesBillKind(): void { - $this->withoutExceptionHandling()->login()->loginNami(); Member::factory()->defaults()->postBillKind()->create(); Member::factory()->defaults()->emailBillKind()->count(2)->create(); @@ -80,7 +89,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItHandlesGroupIds(): void { - $this->withoutExceptionHandling()->login()->loginNami(); $group = Group::factory()->create(); $otherGroup = Group::factory()->create(); $thirdGroup = Group::factory()->create(); @@ -101,7 +109,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItHandlesActivitiesAndSubactivities(): void { - $this->withoutExceptionHandling()->login()->loginNami(); $mitglied = Activity::factory()->name('€ Mitglied')->create(); $schnuppermitglied = Activity::factory()->name('Schnuppermitgliedschaft')->create(); $woelfling = Subactivity::factory()->name('Wölfling')->create(); @@ -127,7 +134,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItHandlesActivityAndSubactivityForSingleMembership(): void { - $this->withoutExceptionHandling()->login()->loginNami(); $mitglied = Activity::factory()->name('€ Mitglied')->create(); $schnuppermitglied = Activity::factory()->name('Schnuppermitgliedschaft')->create(); $woelfling = Subactivity::factory()->name('Wölfling')->create(); @@ -144,7 +150,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItIgnoresInactiveMemberships(): void { - $this->withoutExceptionHandling()->login()->loginNami(); $mitglied = Activity::factory()->name('€ Mitglied')->create(); $woelfling = Subactivity::factory()->name('Wölfling')->create(); Member::factory()->defaults()->has(Membership::factory()->for($mitglied)->for($woelfling)->ended())->create(); @@ -158,7 +163,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItListensForMembershipDeletion(): void { - $this->withoutExceptionHandling()->login()->loginNami(); $mitglied = Activity::factory()->name('€ Mitglied')->create(); $member = Member::factory()->defaults()->has(Membership::factory()->for($mitglied))->create(); $member->memberships->first()->delete(); @@ -171,7 +175,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItFiltersForMemberships(): void { - $this->withoutExceptionHandling()->login()->loginNami(); $mitglied = Activity::factory()->create(); $woelfling = Subactivity::factory()->create(); $juffi = Subactivity::factory()->create(); @@ -201,7 +204,6 @@ class MemberIndexTest extends EndToEndTestCase public function testGroupOfMembershipsFilterCanBeEmpty(): void { - $this->withoutExceptionHandling()->login()->loginNami(); $mitglied = Activity::factory()->create(); $woelfling = Subactivity::factory()->create(); $group = Group::factory()->create(); @@ -221,7 +223,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItFiltersForSearchButNotForPayments(): void { - $this->withoutExceptionHandling()->login()->loginNami(); Member::factory()->defaults() ->has(InvoicePosition::factory()->for(Invoice::factory())) ->create(['firstname' => 'firstname']); @@ -234,7 +235,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItIgnoresPaidInvoices(): void { - $this->withoutExceptionHandling()->login()->loginNami(); Member::factory()->defaults() ->has(InvoicePosition::factory()->for(Invoice::factory()->status(InvoiceStatus::PAID))) ->create(); @@ -247,7 +247,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItIncludesMembers(): void { - $this->withoutExceptionHandling()->login()->loginNami(); $member = Member::factory()->defaults()->create(['birthday' => null, 'location' => '']); sleep(1); @@ -259,7 +258,6 @@ class MemberIndexTest extends EndToEndTestCase public function testItExcludesMembers(): void { - $this->withoutExceptionHandling()->login()->loginNami(); $member = Member::factory()->defaults()->create(['birthday' => null]); sleep(1);