From 793f9165810fd856b1653fd2526cecccc13da261 Mon Sep 17 00:00:00 2001 From: philipp lang Date: Fri, 4 Apr 2025 00:53:06 +0200 Subject: [PATCH] Lint tests --- tests/Feature/Member/StoreTest.php | 411 ++++++++---------- .../MemberStoreRequestFactory.php | 52 +++ 2 files changed, 229 insertions(+), 234 deletions(-) create mode 100644 tests/RequestFactories/MemberStoreRequestFactory.php diff --git a/tests/Feature/Member/StoreTest.php b/tests/Feature/Member/StoreTest.php index 5089870b..c5608621 100644 --- a/tests/Feature/Member/StoreTest.php +++ b/tests/Feature/Member/StoreTest.php @@ -17,277 +17,220 @@ use App\Region; use App\Subactivity; use Illuminate\Foundation\Testing\DatabaseTransactions; use Tests\Lib\MergesAttributes; +use Tests\RequestFactories\MemberStoreRequestFactory; use Tests\TestCase; use Zoomyboy\LaravelNami\Fakes\MemberFake; -class StoreTest extends TestCase -{ - use DatabaseTransactions; - use MergesAttributes; +uses(DatabaseTransactions::class); - public function testItCanStoreAMember(): void - { - app(MemberFake::class)->stores(55, 103); - Fee::factory()->create(); - $this->withoutExceptionHandling()->login()->loginNami(); - $country = Country::factory()->create(); - $gender = Gender::factory()->create(); - $region = Region::factory()->create(); - $nationality = Nationality::factory()->create(); - $activity = Activity::factory()->inNami(89)->create(); - $subactivity = Subactivity::factory()->inNami(90)->create(); - $subscription = Subscription::factory()->forFee()->create(); - $confesstion = Confession::factory()->create(['is_null' => true]); - PullMemberAction::shouldRun(); - PullMembershipsAction::shouldRun(); +it('can store a member', function () { + app(MemberFake::class)->stores(55, 103); + Fee::factory()->create(); + $this->withoutExceptionHandling()->login()->loginNami(); + $country = Country::factory()->create(); + $gender = Gender::factory()->create(); + $region = Region::factory()->create(); + $nationality = Nationality::factory()->create(); + $activity = Activity::factory()->inNami(89)->create(); + $subactivity = Subactivity::factory()->inNami(90)->create(); + $subscription = Subscription::factory()->forFee()->create(); + Confession::factory()->create(['is_null' => true]); + PullMemberAction::shouldRun(); + PullMembershipsAction::shouldRun(); - $response = $this - ->from('/member/create') - ->post('/member', $this->attributes([ - 'country_id' => $country->id, - 'gender_id' => $gender->id, - 'region_id' => $region->id, - 'nationality_id' => $nationality->id, - 'first_activity_id' => $activity->id, - 'first_subactivity_id' => $subactivity->id, - 'subscription_id' => $subscription->id, - 'bill_kind' => 'Post', - 'salutation' => 'Doktor', - 'comment' => 'Lorem bla', - ]))->assertSessionHasNoErrors(); - - $response->assertRedirect('/member')->assertSessionHasNoErrors(); - $member = Member::firstWhere('firstname', 'Joe'); - $this->assertDatabaseHas('members', [ - 'address' => 'Bavert 50', - 'bill_kind' => 'Post', - 'birthday' => '2013-02-19', - 'children_phone' => '+49 176 70512778', + $response = $this + ->from('/member/create') + ->post('/member', MemberStoreRequestFactory::new()->create([ 'country_id' => $country->id, - 'email_parents' => 'osloot@aol.com', - 'firstname' => 'Joe', 'gender_id' => $gender->id, - 'joined_at' => '2022-08-12', - 'lastname' => 'Muster', - 'letter_address' => null, - 'location' => 'Solingen', - 'main_phone' => '+49 212 337056', - 'mobile_phone' => '+49 176 70512774', - 'nationality_id' => $nationality->id, 'region_id' => $region->id, - 'send_newspaper' => '1', + 'nationality_id' => $nationality->id, + 'first_activity_id' => $activity->id, + 'first_subactivity_id' => $subactivity->id, 'subscription_id' => $subscription->id, - 'zip' => '42719', - 'fax' => '+49 212 4732223', + 'bill_kind' => 'Post', 'salutation' => 'Doktor', 'comment' => 'Lorem bla', - ]); + ]))->assertSessionHasNoErrors(); - app(MemberFake::class)->assertStored(55, [ - 'ersteTaetigkeitId' => 89, - 'ersteUntergliederungId' => 90, - ]); - } + $response->assertRedirect('/member')->assertSessionHasNoErrors(); + $this->assertDatabaseHas('members', [ + 'address' => 'Bavert 50', + 'bill_kind' => 'Post', + 'birthday' => '2013-02-19', + 'children_phone' => '+49 176 70512778', + 'country_id' => $country->id, + 'email_parents' => 'osloot@aol.com', + 'firstname' => 'Joe', + 'gender_id' => $gender->id, + 'joined_at' => '2022-08-12', + 'lastname' => 'Muster', + 'letter_address' => null, + 'location' => 'Solingen', + 'main_phone' => '+49 212 337056', + 'mobile_phone' => '+49 176 70512774', + 'nationality_id' => $nationality->id, + 'region_id' => $region->id, + 'send_newspaper' => '1', + 'subscription_id' => $subscription->id, + 'zip' => '42719', + 'fax' => '+49 212 4732223', + 'salutation' => 'Doktor', + 'comment' => 'Lorem bla', + ]); - public function testItStoresWiederverwendenFlag(): void - { - app(MemberFake::class)->stores(55, 103); - Fee::factory()->create(); - $this->withoutExceptionHandling()->login()->loginNami(); - $activity = Activity::factory()->inNami(89)->create(); - $subactivity = Subactivity::factory()->inNami(90)->create(); - $subscription = Subscription::factory()->forFee()->create(); - $confesstion = Confession::factory()->create(['is_null' => true]); - PullMemberAction::shouldRun(); - PullMembershipsAction::shouldRun(); + app(MemberFake::class)->assertStored(55, [ + 'ersteTaetigkeitId' => 89, + 'ersteUntergliederungId' => 90, + ]); +}); - $this - ->from('/member/create') - ->post('/member', $this->attributes([ - 'first_activity_id' => $activity->id, - 'first_subactivity_id' => $subactivity->id, - 'subscription_id' => $subscription->id, - 'keepdata' => true, - ]))->assertSessionHasNoErrors(); +it('testItStoresWiederverwendenFlag', function () { + app(MemberFake::class)->stores(55, 103); + Fee::factory()->create(); + $this->withoutExceptionHandling()->login()->loginNami(); + $activity = Activity::factory()->inNami(89)->create(); + $subactivity = Subactivity::factory()->inNami(90)->create(); + $subscription = Subscription::factory()->forFee()->create(); + $confesstion = Confession::factory()->create(['is_null' => true]); + PullMemberAction::shouldRun(); + PullMembershipsAction::shouldRun(); - $this->assertDatabaseHas('members', [ + $this + ->from('/member/create') + ->post('/member', MemberStoreRequestFactory::new()->create([ + 'first_activity_id' => $activity->id, + 'first_subactivity_id' => $subactivity->id, + 'subscription_id' => $subscription->id, 'keepdata' => true, - ]); - app(MemberFake::class)->assertStored(55, [ - 'wiederverwendenFlag' => true, - ]); - } + ]))->assertSessionHasNoErrors(); - public function testItCanStoreAMemberWithoutNami(): void - { - $this->withoutExceptionHandling()->login()->loginNami(); - $activity = Activity::factory()->create(); - $subactivity = Subactivity::factory()->create(); + $this->assertDatabaseHas('members', [ + 'keepdata' => true, + ]); + app(MemberFake::class)->assertStored(55, [ + 'wiederverwendenFlag' => true, + ]); +}); - $response = $this - ->from('/member/create') - ->post('/member', $this->attributes([ - 'first_activity_id' => $activity->id, - 'first_subactivity_id' => $subactivity->id, - 'has_nami' => false, - ])); +it('testItCanStoreAMemberWithoutNami', function () { + $this->withoutExceptionHandling()->login()->loginNami(); + $activity = Activity::factory()->create(); + $subactivity = Subactivity::factory()->create(); - $response->assertSessionHasNoErrors(); - $this->assertDatabaseHas('members', [ - 'nami_id' => null, - ]); - NamiPutMemberAction::spy()->shouldNotHaveReceived('handle'); - } - - public function testItUpdatesPhoneNumber(): void - { - $this->withoutExceptionHandling()->login()->loginNami(); - - $this->post('/member', $this->attributes([ + $response = $this + ->from('/member/create') + ->post('/member', MemberStoreRequestFactory::new()->create([ + 'first_activity_id' => $activity->id, + 'first_subactivity_id' => $subactivity->id, 'has_nami' => false, - 'main_phone' => '02103 4455129', - 'fax' => '02103 4455130', - 'children_phone' => '02103 4455130', ])); - $this->assertDatabaseHas('members', [ - 'main_phone' => '+49 2103 4455129', - 'fax' => '+49 2103 4455130', - 'children_phone' => '+49 2103 4455130', - ]); - } + $response->assertSessionHasNoErrors(); + $this->assertDatabaseHas('members', [ + 'nami_id' => null, + ]); + NamiPutMemberAction::spy()->shouldNotHaveReceived('handle'); +}); - public function testItHasErrorWhenPhoneNumberIsInvalid(): void - { - $this->login()->loginNami(); +it('testItUpdatesPhoneNumber', function () { + $this->withoutExceptionHandling()->login()->loginNami(); - $response = $this->post('/member', $this->attributes([ - 'has_nami' => false, - 'main_phone' => '1111111111111111', - 'mobile_phone' => '1111111111111111', - 'fax' => '1111111111111111', - 'children_phone' => '1111111111111111', - ])); + $this->post('/member', MemberStoreRequestFactory::new()->create([ + 'has_nami' => false, + 'main_phone' => '02103 4455129', + 'fax' => '02103 4455130', + 'children_phone' => '02103 4455130', + ])); - $response->assertSessionHasErrors([ - 'main_phone' => 'Telefon (Eltern) ist keine valide Nummer.', - 'mobile_phone' => 'Handy (Eltern) ist keine valide Nummer.', - 'children_phone' => 'Telefon (Kind) ist keine valide Nummer.', - 'fax' => 'Fax ist keine valide Nummer.', - ]); - } + $this->assertDatabaseHas('members', [ + 'main_phone' => '+49 2103 4455129', + 'fax' => '+49 2103 4455130', + 'children_phone' => '+49 2103 4455130', + ]); +}); - public function testItDoesntRequireBirthdayWhenNotInNami(): void - { - $this->login()->loginNami(); +it('testItHasErrorWhenPhoneNumberIsInvalid', function () { + $this->login()->loginNami(); - $this - ->post('/member', $this->attributes([ - 'nationality_id' => null, - 'birthday' => null, - 'has_nami' => false, - 'address' => null, - 'zip' => null, - 'location' => null, - 'joined_at' => null, - ]))->assertSessionDoesntHaveErrors(); - $this->assertDatabaseHas('members', [ + $response = $this->post('/member', MemberStoreRequestFactory::new()->create([ + 'has_nami' => false, + 'main_phone' => '1111111111111111', + 'mobile_phone' => '1111111111111111', + 'fax' => '1111111111111111', + 'children_phone' => '1111111111111111', + ])); + + $response->assertSessionHasErrors([ + 'main_phone' => 'Telefon (Eltern) ist keine valide Nummer.', + 'mobile_phone' => 'Handy (Eltern) ist keine valide Nummer.', + 'children_phone' => 'Telefon (Kind) ist keine valide Nummer.', + 'fax' => 'Fax ist keine valide Nummer.', + ]); +}); + +it('testItDoesntRequireBirthdayWhenNotInNami', function () { + $this->login()->loginNami(); + + $this + ->post('/member', MemberStoreRequestFactory::new()->create([ 'nationality_id' => null, 'birthday' => null, + 'has_nami' => false, 'address' => null, 'zip' => null, 'location' => null, 'joined_at' => null, - ]); - } + ]))->assertSessionDoesntHaveErrors(); + $this->assertDatabaseHas('members', [ + 'nationality_id' => null, + 'birthday' => null, + 'address' => null, + 'zip' => null, + 'location' => null, + 'joined_at' => null, + ]); +}); - public function testItDoesntNeedSubscription(): void - { - $this->login()->loginNami(); +it('testItDoesntNeedSubscription', function () { + $this->login()->loginNami(); - $this - ->post('/member', $this->attributes([ - 'has_nami' => false, - 'subscription_id' => null, - ]))->assertSessionDoesntHaveErrors(); - $this->assertDatabaseHas('members', [ + $this + ->post('/member', MemberStoreRequestFactory::new()->create([ + 'has_nami' => false, 'subscription_id' => null, - ]); - } + ]))->assertSessionDoesntHaveErrors(); + $this->assertDatabaseHas('members', [ + 'subscription_id' => null, + ]); +}); - public function testItRequiresFields(): void - { - $this->login()->loginNami(); +it('testItRequiresFields', function () { + $this->login()->loginNami(); - $this - ->post('/member', $this->attributes([ - 'nationality_id' => null, - 'birthday' => '', - 'address' => '', - 'zip' => '', - 'location' => '', - 'joined_at' => '', - ])) - ->assertSessionHasErrors(['nationality_id', 'birthday', 'address', 'zip', 'location', 'joined_at']); - } + $this + ->post('/member', MemberStoreRequestFactory::new()->create([ + 'nationality_id' => null, + 'birthday' => '', + 'address' => '', + 'zip' => '', + 'location' => '', + 'joined_at' => '', + ])) + ->assertSessionHasErrors(['nationality_id', 'birthday', 'address', 'zip', 'location', 'joined_at']); +}); - public function testSubscriptionIsRequiredIfFirstActivityIsPaid(): void - { - $this->login()->loginNami(); - $activity = Activity::factory()->name('€ Mitglied')->create(); - $subactivity = Subactivity::factory()->create(); +it('testSubscriptionIsRequiredIfFirstActivityIsPaid', function () { + $this->login()->loginNami(); + $activity = Activity::factory()->name('€ Mitglied')->create(); + $subactivity = Subactivity::factory()->create(); - $this - ->from('/member/create') - ->post('/member', $this->attributes([ - 'first_activity_id' => $activity->id, - 'first_subactivity_id' => $subactivity->id, - 'subscription_id' => null, - ])) - ->assertSessionHasErrors(['subscription_id' => 'Beitragsart ist erforderlich.']); - } - - /** - * @return array - */ - public function defaults(): array - { - $country = Country::factory()->create(); - $nationality = Nationality::factory()->create(); - $subscription = Subscription::factory()->forFee()->create(); - - return [ - 'address' => 'Bavert 50', - 'birthday' => '2013-02-19', - 'children_phone' => '+49 176 70512778', - 'efz' => '', - 'email' => '', - 'email_parents' => 'osloot@aol.com', - 'fax' => '+49 212 4732223', - 'firstname' => 'Joe', - 'further_address' => '', - 'has_nami' => true, - 'has_svk' => false, - 'has_vk' => false, - 'joined_at' => '2022-08-12', - 'lastname' => 'Muster', - 'letter_address' => '', - 'location' => 'Solingen', - 'main_phone' => '+49 212 337056', - 'mobile_phone' => '+49 176 70512774', - 'more_ps_at' => '', - 'multiply_more_pv' => false, - 'multiply_pv' => false, - 'other_country' => '', - 'ps_at' => '', - 'send_newspaper' => true, - 'without_education_at' => '', - 'without_efz_at' => '', - 'work_phone' => '', - 'zip' => '42719', - 'country_id' => $country->id, - 'nationality_id' => $nationality->id, - 'subscription_id' => $subscription->id, - ]; - } -} + $this + ->from('/member/create') + ->post('/member', MemberStoreRequestFactory::new()->create([ + 'first_activity_id' => $activity->id, + 'first_subactivity_id' => $subactivity->id, + 'subscription_id' => null, + ])) + ->assertSessionHasErrors(['subscription_id' => 'Beitragsart ist erforderlich.']); +}); diff --git a/tests/RequestFactories/MemberStoreRequestFactory.php b/tests/RequestFactories/MemberStoreRequestFactory.php new file mode 100644 index 00000000..98bb7969 --- /dev/null +++ b/tests/RequestFactories/MemberStoreRequestFactory.php @@ -0,0 +1,52 @@ +create(); + $nationality = Nationality::factory()->create(); + $subscription = Subscription::factory()->forFee()->create(); + + return [ + 'address' => 'Bavert 50', + 'birthday' => '2013-02-19', + 'children_phone' => '+49 176 70512778', + 'efz' => '', + 'email' => '', + 'email_parents' => 'osloot@aol.com', + 'fax' => '+49 212 4732223', + 'firstname' => 'Joe', + 'further_address' => '', + 'has_nami' => true, + 'has_svk' => false, + 'has_vk' => false, + 'joined_at' => '2022-08-12', + 'lastname' => 'Muster', + 'letter_address' => '', + 'location' => 'Solingen', + 'main_phone' => '+49 212 337056', + 'mobile_phone' => '+49 176 70512774', + 'more_ps_at' => '', + 'multiply_more_pv' => false, + 'multiply_pv' => false, + 'other_country' => '', + 'ps_at' => '', + 'send_newspaper' => true, + 'without_education_at' => '', + 'without_efz_at' => '', + 'work_phone' => '', + 'zip' => '42719', + 'country_id' => $country->id, + 'nationality_id' => $nationality->id, + 'subscription_id' => $subscription->id, + ]; + } +}