From 144af1bf71964c61b987e442fa9bec0c5d643fab Mon Sep 17 00:00:00 2001 From: philipp lang Date: Sun, 6 Jul 2025 02:42:12 +0200 Subject: [PATCH] Add Country field to forms --- app/Contribution/Enums/Country.php | 256 +++++++++++++ app/Form/Actions/FormStoreAction.php | 1 + app/Form/Actions/FormUpdateAction.php | 1 + app/Form/Models/Form.php | 3 +- app/Form/Resources/FormResource.php | 4 + ..._06_022536_create_forms_country_column.php | 28 ++ resources/js/views/form/Index.vue | 19 +- tests/EndToEnd/Form/FormIndexActionTest.php | 337 +++++++++--------- tests/Feature/Form/FormStoreActionTest.php | 3 + tests/Feature/Form/FormUpdateActionTest.php | 5 +- 10 files changed, 476 insertions(+), 181 deletions(-) create mode 100644 app/Contribution/Enums/Country.php create mode 100644 database/migrations/2025_07_06_022536_create_forms_country_column.php diff --git a/app/Contribution/Enums/Country.php b/app/Contribution/Enums/Country.php new file mode 100644 index 00000000..0ba8c0da --- /dev/null +++ b/app/Contribution/Enums/Country.php @@ -0,0 +1,256 @@ + + */ + public static function forSelect(): array + { + return collect(static::cases()) + ->map(fn ($case) => ['id' => $case->value, 'name' => $case->value]) + ->toArray(); + } +} + diff --git a/app/Form/Actions/FormStoreAction.php b/app/Form/Actions/FormStoreAction.php index cdc6b020..1551e1ea 100644 --- a/app/Form/Actions/FormStoreAction.php +++ b/app/Form/Actions/FormStoreAction.php @@ -38,6 +38,7 @@ class FormStoreAction 'prevention_conditions' => 'array', 'zip' => 'present|nullable|string', 'location' => 'present|nullable|string', + 'country' => 'nullable|string|max:255', ]; } diff --git a/app/Form/Actions/FormUpdateAction.php b/app/Form/Actions/FormUpdateAction.php index 3fcc91c1..593d9046 100644 --- a/app/Form/Actions/FormUpdateAction.php +++ b/app/Form/Actions/FormUpdateAction.php @@ -37,6 +37,7 @@ class FormUpdateAction 'prevention_conditions' => 'array', 'location' => 'present|nullable|string', 'zip' => 'present|nullable|string', + 'country' => 'nullable|string|max:255', ]; } diff --git a/app/Form/Models/Form.php b/app/Form/Models/Form.php index a3e22399..78f64634 100644 --- a/app/Form/Models/Form.php +++ b/app/Form/Models/Form.php @@ -2,6 +2,7 @@ namespace App\Form\Models; +use App\Contribution\Enums\Country; use App\Form\Actions\UpdateParticipantSearchIndexAction; use App\Form\Data\ExportData; use App\Form\Data\FieldCollection; @@ -48,6 +49,7 @@ class Form extends Model implements HasMedia 'to' => 'datetime', 'registration_from' => 'datetime', 'registration_until' => 'datetime', + 'country' => Country::class ]; /** @@ -68,7 +70,6 @@ class Form extends Model implements HasMedia return $this->hasMany(Participant::class); } - public function registerMediaCollections(): void { $this->addMediaCollection('headerImage') diff --git a/app/Form/Resources/FormResource.php b/app/Form/Resources/FormResource.php index ea7e8448..fcafe9d5 100644 --- a/app/Form/Resources/FormResource.php +++ b/app/Form/Resources/FormResource.php @@ -2,6 +2,7 @@ namespace App\Form\Resources; +use App\Contribution\Enums\Country; use App\Form\Data\ExportData; use App\Form\Enums\NamiType; use App\Form\Enums\SpecialType; @@ -55,6 +56,7 @@ class FormResource extends JsonResource 'prevention_conditions' => $this->prevention_conditions, 'zip' => $this->zip, 'location' => $this->location, + 'country' => $this->country, 'links' => [ 'participant_index' => route('form.participant.index', ['form' => $this->getModel(), 'parent' => null]), 'participant_root_index' => route('form.participant.index', ['form' => $this->getModel(), 'parent' => -1]), @@ -85,6 +87,7 @@ class FormResource extends JsonResource 'templates' => FormtemplateResource::collection(Formtemplate::get()), 'namiTypes' => NamiType::forSelect(), 'specialTypes' => SpecialType::forSelect(), + 'countries' => Country::forSelect(), 'default' => [ 'description' => [], 'is_active' => true, @@ -106,6 +109,7 @@ class FormResource extends JsonResource 'prevention_conditions' => ['mode' => 'all', 'ifs' => []], 'zip' => '', 'location' => '', + 'country' => null, ], 'section_default' => [ 'name' => '', diff --git a/database/migrations/2025_07_06_022536_create_forms_country_column.php b/database/migrations/2025_07_06_022536_create_forms_country_column.php new file mode 100644 index 00000000..13b1593e --- /dev/null +++ b/database/migrations/2025_07_06_022536_create_forms_country_column.php @@ -0,0 +1,28 @@ +string('country')->nullable()->after('location'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('forms', function (Blueprint $table) { + $table->dropColumn('country'); + }); + } +}; diff --git a/resources/js/views/form/Index.vue b/resources/js/views/form/Index.vue index b681de48..13564b38 100644 --- a/resources/js/views/form/Index.vue +++ b/resources/js/views/form/Index.vue @@ -20,14 +20,15 @@
-
-
+
+
-
- - -
-
- - -
+ + + + +
diff --git a/tests/EndToEnd/Form/FormIndexActionTest.php b/tests/EndToEnd/Form/FormIndexActionTest.php index db6fe54d..a1c06dbe 100644 --- a/tests/EndToEnd/Form/FormIndexActionTest.php +++ b/tests/EndToEnd/Form/FormIndexActionTest.php @@ -2,6 +2,7 @@ namespace Tests\EndToEnd\Form; +use App\Contribution\Enums\Country; use App\Fileshare\Data\FileshareResourceData; use App\Form\Data\ExportData; use App\Form\FormSettings; @@ -11,192 +12,192 @@ use App\Form\Models\Participant; use Carbon\Carbon; use Tests\Feature\Form\FormtemplateSectionRequest; use Tests\RequestFactories\EditorRequestFactory; +use Tests\Lib\CreatesFormFields; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use Tests\EndToEndTestCase; -class FormIndexActionTest extends FormTestCase -{ +uses(CreatesFormFields::class); +uses(DatabaseTransactions::class); +uses(EndToEndTestCase::class); - public function testItDisplaysForms(): void - { - Carbon::setTestNow(Carbon::parse('2023-03-03')); - $this->login()->loginNami()->withoutExceptionHandling(); - $form = Form::factory() - ->name('lala') - ->excerpt('fff') - ->description(EditorRequestFactory::new()->text(10, 'desc')) - ->from('2023-05-05') - ->to('2023-06-07') - ->mailTop(EditorRequestFactory::new()->text(10, 'Guten Tag')) - ->mailBottom(EditorRequestFactory::new()->text(10, 'Cheers')) - ->registrationFrom('2023-05-06 04:00:00') - ->registrationUntil('2023-04-01 05:00:00') - ->sections([FormtemplateSectionRequest::new()->name('sname')->fields([$this->textField()])]) - ->has(Participant::factory()->count(5)) - ->zip('12345') - ->location('SG') - ->create(); +it('testItDisplaysForms', function () { + Carbon::setTestNow(Carbon::parse('2023-03-03')); + $this->login()->loginNami()->withoutExceptionHandling(); + $form = Form::factory() + ->name('lala') + ->excerpt('fff') + ->description(EditorRequestFactory::new()->text(10, 'desc')) + ->from('2023-05-05') + ->to('2023-06-07') + ->mailTop(EditorRequestFactory::new()->text(10, 'Guten Tag')) + ->mailBottom(EditorRequestFactory::new()->text(10, 'Cheers')) + ->registrationFrom('2023-05-06 04:00:00') + ->registrationUntil('2023-04-01 05:00:00') + ->sections([FormtemplateSectionRequest::new()->name('sname')->fields([$this->textField()])]) + ->has(Participant::factory()->count(5)) + ->zip('12345') + ->location('SG') + ->country(Country::CH) + ->create(); - sleep(1); - $this->get(route('form.index')) - ->assertOk() - ->assertInertiaPath('data.data.0.name', 'lala') - ->assertInertiaPath('data.data.0.config.sections.0.name', 'sname') - ->assertInertiaPath('data.data.0.id', $form->id) - ->assertInertiaPath('data.data.0.excerpt', 'fff') - ->assertInertiaPath('data.data.0.description.blocks.0.data.text', 'desc') - ->assertInertiaPath('data.data.0.mail_top.blocks.0.data.text', 'Guten Tag') - ->assertInertiaPath('data.data.0.mail_bottom.blocks.0.data.text', 'Cheers') - ->assertInertiaPath('data.data.0.from_human', '05.05.2023') - ->assertInertiaPath('data.data.0.to_human', '07.06.2023') - ->assertInertiaPath('data.data.0.from', '2023-05-05') - ->assertInertiaPath('data.data.0.zip', '12345') - ->assertInertiaPath('data.data.0.location', 'SG') - ->assertInertiaPath('data.data.0.participants_count', 5) - ->assertInertiaPath('data.data.0.to', '2023-06-07') - ->assertInertiaPath('data.data.0.is_active', true) - ->assertInertiaPath('data.data.0.is_private', false) - ->assertInertiaPath('data.data.0.registration_from', '2023-05-06 04:00:00') - ->assertInertiaPath('data.data.0.needs_prevention', false) - ->assertInertiaPath('data.data.0.registration_until', '2023-04-01 05:00:00') - ->assertInertiaPath('data.data.0.links.participant_index', route('form.participant.index', ['form' => $form])) - ->assertInertiaPath('data.data.0.links.export', route('form.export', ['form' => $form])) - ->assertInertiaPath('data.meta.links.store', route('form.store')) - ->assertInertiaPath('data.meta.links.formtemplate_index', route('formtemplate.index')) - ->assertInertiaPath('data.meta.default.name', '') - ->assertInertiaPath('data.meta.default.prevention_conditions', ['mode' => 'all', 'ifs' => []]) - ->assertInertiaPath('data.meta.default.prevention_text.version', '1.0') - ->assertInertiaPath('data.meta.default.description', []) - ->assertInertiaPath('data.meta.default.excerpt', '') - ->assertInertiaPath('data.meta.default.is_active', true) - ->assertInertiaPath('data.meta.default.is_private', false) - ->assertInertiaPath('data.meta.default.mailattachments', []) - ->assertInertiaPath('data.meta.default.export', ['root' => null, 'group_by' => null, 'to_group_field' => null]) - ->assertInertiaPath('data.meta.default.config', null) - ->assertInertiaPath('data.meta.base_url', url('')) - ->assertInertiaPath('data.meta.namiTypes.0', ['id' => 'Vorname', 'name' => 'Vorname']) - ->assertInertiaPath('data.meta.specialTypes.0', ['id' => 'Vorname', 'name' => 'Vorname']) - ->assertInertiaPath('data.meta.section_default.name', '') - ->assertInertiaPath('data.meta.default.zip', '') - ->assertInertiaPath('data.meta.default.location', ''); - } + sleep(1); + $this->get(route('form.index')) + ->assertOk() + ->assertInertiaPath('data.data.0.name', 'lala') + ->assertInertiaPath('data.data.0.config.sections.0.name', 'sname') + ->assertInertiaPath('data.data.0.id', $form->id) + ->assertInertiaPath('data.data.0.excerpt', 'fff') + ->assertInertiaPath('data.data.0.description.blocks.0.data.text', 'desc') + ->assertInertiaPath('data.data.0.mail_top.blocks.0.data.text', 'Guten Tag') + ->assertInertiaPath('data.data.0.mail_bottom.blocks.0.data.text', 'Cheers') + ->assertInertiaPath('data.data.0.from_human', '05.05.2023') + ->assertInertiaPath('data.data.0.to_human', '07.06.2023') + ->assertInertiaPath('data.data.0.from', '2023-05-05') + ->assertInertiaPath('data.data.0.zip', '12345') + ->assertInertiaPath('data.data.0.location', 'SG') + ->assertInertiaPath('data.data.0.country', 'Schweiz') + ->assertInertiaPath('data.data.0.participants_count', 5) + ->assertInertiaPath('data.data.0.to', '2023-06-07') + ->assertInertiaPath('data.data.0.is_active', true) + ->assertInertiaPath('data.data.0.is_private', false) + ->assertInertiaPath('data.data.0.registration_from', '2023-05-06 04:00:00') + ->assertInertiaPath('data.data.0.needs_prevention', false) + ->assertInertiaPath('data.data.0.registration_until', '2023-04-01 05:00:00') + ->assertInertiaPath('data.data.0.links.participant_index', route('form.participant.index', ['form' => $form])) + ->assertInertiaPath('data.data.0.links.export', route('form.export', ['form' => $form])) + ->assertInertiaPath('data.meta.links.store', route('form.store')) + ->assertInertiaPath('data.meta.links.formtemplate_index', route('formtemplate.index')) + ->assertInertiaPath('data.meta.default.name', '') + ->assertInertiaPath('data.meta.default.prevention_conditions', ['mode' => 'all', 'ifs' => []]) + ->assertInertiaPath('data.meta.default.prevention_text.version', '1.0') + ->assertInertiaPath('data.meta.default.description', []) + ->assertInertiaPath('data.meta.default.excerpt', '') + ->assertInertiaPath('data.meta.default.zip', '') + ->assertInertiaPath('data.meta.default.location', '') + ->assertInertiaPath('data.meta.default.country', null) + ->assertInertiaPath('data.meta.default.is_active', true) + ->assertInertiaPath('data.meta.default.is_private', false) + ->assertInertiaPath('data.meta.default.mailattachments', []) + ->assertInertiaPath('data.meta.default.export', ['root' => null, 'group_by' => null, 'to_group_field' => null]) + ->assertInertiaPath('data.meta.default.config', null) + ->assertInertiaPath('data.meta.countries.0.id', 'Andorra') + ->assertInertiaPath('data.meta.countries.0.name', 'Andorra') + ->assertInertiaPath('data.meta.base_url', url('')) + ->assertInertiaPath('data.meta.namiTypes.0', ['id' => 'Vorname', 'name' => 'Vorname']) + ->assertInertiaPath('data.meta.specialTypes.0', ['id' => 'Vorname', 'name' => 'Vorname']) + ->assertInertiaPath('data.meta.section_default.name', '') + ->assertInertiaPath('data.meta.default.zip', '') + ->assertInertiaPath('data.meta.default.location', ''); +}); - public function testFormtemplatesHaveData(): void - { - $this->login()->loginNami()->withoutExceptionHandling(); - Formtemplate::factory()->name('tname')->sections([FormtemplateSectionRequest::new()->name('sname')->fields([ - $this->textField('vorname') - ])]) - ->mailTop(EditorRequestFactory::new()->text(10, 'lala')) - ->mailBottom(EditorRequestFactory::new()->text(10, 'lalb')) - ->create(); +it('testFormtemplatesHaveData', function () { + $this->login()->loginNami()->withoutExceptionHandling(); + Formtemplate::factory()->name('tname')->sections([FormtemplateSectionRequest::new()->name('sname')->fields([ + $this->textField('vorname') + ])]) + ->mailTop(EditorRequestFactory::new()->text(10, 'lala')) + ->mailBottom(EditorRequestFactory::new()->text(10, 'lalb')) + ->create(); - sleep(1); - $this->get(route('form.index')) - ->assertOk() - ->assertInertiaPath('data.meta.templates.0.name', 'tname') - ->assertInertiaPath('data.meta.templates.0.name', 'tname') - ->assertInertiaPath('data.meta.templates.0.config.sections.0.name', 'sname') - ->assertInertiaPath('data.meta.templates.0.config.sections.0.fields.0.key', 'vorname') - ->assertInertiaPath('data.meta.templates.0.mail_top.blocks.0.data.text', 'lala') - ->assertInertiaPath('data.meta.templates.0.mail_bottom.blocks.0.data.text', 'lalb'); - } + sleep(1); + $this->get(route('form.index')) + ->assertOk() + ->assertInertiaPath('data.meta.templates.0.name', 'tname') + ->assertInertiaPath('data.meta.templates.0.name', 'tname') + ->assertInertiaPath('data.meta.templates.0.config.sections.0.name', 'sname') + ->assertInertiaPath('data.meta.templates.0.config.sections.0.fields.0.key', 'vorname') + ->assertInertiaPath('data.meta.templates.0.mail_top.blocks.0.data.text', 'lala') + ->assertInertiaPath('data.meta.templates.0.mail_bottom.blocks.0.data.text', 'lalb'); +}); - public function testItDisplaysExport(): void - { - $this->login()->loginNami()->withoutExceptionHandling(); - Form::factory() - ->name('lala') - ->export(ExportData::from(['root' => FileshareResourceData::from(['connection_id' => 2, 'resource' => '/dir']), 'group_by' => 'lala', 'to_group_field' => 'abc'])) - ->create(); +it('testItDisplaysExport', function () { + $this->login()->loginNami()->withoutExceptionHandling(); + Form::factory() + ->name('lala') + ->export(ExportData::from(['root' => FileshareResourceData::from(['connection_id' => 2, 'resource' => '/dir']), 'group_by' => 'lala', 'to_group_field' => 'abc'])) + ->create(); - sleep(1); - $this->get(route('form.index')) - ->assertInertiaPath('data.data.0.export.group_by', 'lala') - ->assertInertiaPath('data.data.0.export.root.connection_id', 2) - ->assertInertiaPath('data.data.0.export.root.resource', '/dir') - ->assertInertiaPath('data.data.0.export.to_group_field', 'abc'); - } + sleep(1); + $this->get(route('form.index')) + ->assertInertiaPath('data.data.0.export.group_by', 'lala') + ->assertInertiaPath('data.data.0.export.root.connection_id', 2) + ->assertInertiaPath('data.data.0.export.root.resource', '/dir') + ->assertInertiaPath('data.data.0.export.to_group_field', 'abc'); +}); - public function testItHandlesFullTextSearch(): void - { - $this->withoutExceptionHandling()->login()->loginNami(); - Form::factory()->to(now()->addYear())->name('ZEM 2024')->create(); - Form::factory()->to(now()->addYear())->name('Rover-Spek 2025')->create(); +it('testItHandlesFullTextSearch', function () { + $this->withoutExceptionHandling()->login()->loginNami(); + Form::factory()->to(now()->addYear())->name('ZEM 2024')->create(); + Form::factory()->to(now()->addYear())->name('Rover-Spek 2025')->create(); - sleep(1); - $this->callFilter('form.index', ['search' => 'ZEM']) - ->assertInertiaCount('data.data', 1); - $this->callFilter('form.index', []) - ->assertInertiaCount('data.data', 2); - } + sleep(1); + $this->callFilter('form.index', ['search' => 'ZEM']) + ->assertInertiaCount('data.data', 1); + $this->callFilter('form.index', []) + ->assertInertiaCount('data.data', 2); +}); - public function testItDisplaysParentLinkForFormWithNamiFields(): void - { - $this->withoutExceptionHandling()->login()->loginNami(); - $form = Form::factory()->fields([$this->namiField('mitglieder')])->create(); +it('testItDisplaysParentLinkForFormWithNamiFields', function () { + $this->withoutExceptionHandling()->login()->loginNami(); + $form = Form::factory()->fields([$this->namiField('mitglieder')])->create(); - sleep(1); - $this->callFilter('form.index', []) - ->assertInertiaPath('data.data.0.has_nami_field', true) - ->assertInertiaPath('data.data.0.links.participant_root_index', route('form.participant.index', ['form' => $form, 'parent' => -1])) - ->assertInertiaPath('data.data.0.links.participant_index', route('form.participant.index', ['form' => $form, 'parent' => null])); - } + sleep(1); + $this->callFilter('form.index', []) + ->assertInertiaPath('data.data.0.has_nami_field', true) + ->assertInertiaPath('data.data.0.links.participant_root_index', route('form.participant.index', ['form' => $form, 'parent' => -1])) + ->assertInertiaPath('data.data.0.links.participant_index', route('form.participant.index', ['form' => $form, 'parent' => null])); +}); - public function testItDisplaysRegisterUrl(): void - { - $this->withoutExceptionHandling()->login()->loginNami(); - FormSettings::fake(['registerUrl' => 'https://example.com/form/{slug}/register']); - Form::factory()->to(now()->addYear())->name('ZEM 2024')->create(); +it('testItDisplaysRegisterUrl', function () { + $this->withoutExceptionHandling()->login()->loginNami(); + FormSettings::fake(['registerUrl' => 'https://example.com/form/{slug}/register']); + Form::factory()->to(now()->addYear())->name('ZEM 2024')->create(); - sleep(1); - $this->callFilter('form.index', [])->assertInertiaPath('data.data.0.links.frontend', 'https://example.com/form/zem-2024/register'); - } + sleep(1); + $this->callFilter('form.index', [])->assertInertiaPath('data.data.0.links.frontend', 'https://example.com/form/zem-2024/register'); +}); - public function testItDisplaysCopyUrl(): void - { - $this->withoutExceptionHandling()->login()->loginNami(); - $form = Form::factory()->create(); +it('testItDisplaysCopyUrl', function () { + $this->withoutExceptionHandling()->login()->loginNami(); + $form = Form::factory()->create(); - sleep(1); - $this->callFilter('form.index', [])->assertInertiaPath('data.data.0.links.copy', route('form.copy', $form)); - } + sleep(1); + $this->callFilter('form.index', [])->assertInertiaPath('data.data.0.links.copy', route('form.copy', $form)); +}); - public function testItDoesntReturnInactiveForms(): void - { - $this->withoutExceptionHandling()->login()->loginNami(); - Form::factory()->isActive(false)->count(1)->create(); - Form::factory()->isActive(true)->count(2)->create(); +it('testItDoesntReturnInactiveForms', function () { + $this->withoutExceptionHandling()->login()->loginNami(); + Form::factory()->isActive(false)->count(1)->create(); + Form::factory()->isActive(true)->count(2)->create(); - sleep(1); - $this->callFilter('form.index', [])->assertInertiaCount('data.data', 2); - $this->callFilter('form.index', ['inactive' => true])->assertInertiaCount('data.data', 3); - $this->callFilter('form.index', ['inactive' => false])->assertInertiaCount('data.data', 2); - } + sleep(1); + $this->callFilter('form.index', [])->assertInertiaCount('data.data', 2); + $this->callFilter('form.index', ['inactive' => true])->assertInertiaCount('data.data', 3); + $this->callFilter('form.index', ['inactive' => false])->assertInertiaCount('data.data', 2); +}); - public function testItOrdersByStartDateDesc(): void - { - $this->withoutExceptionHandling()->login()->loginNami(); - $form1 = Form::factory()->from(now()->addDays(4))->to(now()->addYear())->create(); - $form2 = Form::factory()->from(now()->addDays(3))->to(now()->addYear())->create(); - $form3 = Form::factory()->from(now()->addDays(2))->to(now()->addYear())->create(); +it('testItOrdersByStartDateDesc', function () { + $this->withoutExceptionHandling()->login()->loginNami(); + $form1 = Form::factory()->from(now()->addDays(4))->to(now()->addYear())->create(); + $form2 = Form::factory()->from(now()->addDays(3))->to(now()->addYear())->create(); + $form3 = Form::factory()->from(now()->addDays(2))->to(now()->addYear())->create(); - sleep(1); - $this->callFilter('form.index', []) - ->assertInertiaPath('data.data.0.id', $form3->id) - ->assertInertiaPath('data.data.1.id', $form2->id) - ->assertInertiaPath('data.data.2.id', $form1->id); - } + sleep(1); + $this->callFilter('form.index', []) + ->assertInertiaPath('data.data.0.id', $form3->id) + ->assertInertiaPath('data.data.1.id', $form2->id) + ->assertInertiaPath('data.data.2.id', $form1->id); +}); - public function testItShowsPastEvents(): void - { - $this->withoutExceptionHandling()->login()->loginNami(); - Form::factory()->count(5)->to(now()->subDays(2))->create(); - Form::factory()->count(3)->to(now()->subDays(5))->create(); - Form::factory()->count(2)->to(now()->addDays(3))->create(); +it('testItShowsPastEvents', function () { + $this->withoutExceptionHandling()->login()->loginNami(); + Form::factory()->count(5)->to(now()->subDays(2))->create(); + Form::factory()->count(3)->to(now()->subDays(5))->create(); + Form::factory()->count(2)->to(now()->addDays(3))->create(); - sleep(1); - $this->callFilter('form.index', ['past' => true]) - ->assertInertiaCount('data.data', 10); - $this->callFilter('form.index', []) - ->assertInertiaCount('data.data', 2); - } -} + sleep(1); + $this->callFilter('form.index', ['past' => true]) + ->assertInertiaCount('data.data', 10); + $this->callFilter('form.index', []) + ->assertInertiaCount('data.data', 2); +}); diff --git a/tests/Feature/Form/FormStoreActionTest.php b/tests/Feature/Form/FormStoreActionTest.php index 29930dc7..776c8584 100644 --- a/tests/Feature/Form/FormStoreActionTest.php +++ b/tests/Feature/Form/FormStoreActionTest.php @@ -2,6 +2,7 @@ namespace Tests\Feature\Form; +use App\Contribution\Enums\Country; use App\Fileshare\Data\FileshareResourceData; use App\Form\Data\ExportData; use App\Form\Enums\NamiType; @@ -34,6 +35,7 @@ it('testItStoresForm', function () { ->headerImage('htzz.jpg') ->zip('12345') ->location('Solingen') + ->country('Schweiz') ->sections([FormtemplateSectionRequest::new()->name('sname')->fields([$this->textField()->namiType(NamiType::BIRTHDAY)->forMembers(false)->hint('hhh')])]) ->fake(); @@ -59,6 +61,7 @@ it('testItStoresForm', function () { $this->assertEquals('formname.jpg', $form->getMedia('headerImage')->first()->file_name); $this->assertEquals('Solingen', $form->location); $this->assertEquals('12345', $form->zip); + $this->assertEquals(Country::CH, $form->country); Event::assertDispatched(Succeeded::class, fn(Succeeded $event) => $event->message === 'Veranstaltung gespeichert.'); $this->assertFrontendCacheCleared(); }); diff --git a/tests/Feature/Form/FormUpdateActionTest.php b/tests/Feature/Form/FormUpdateActionTest.php index b42a45c8..ba065f4a 100644 --- a/tests/Feature/Form/FormUpdateActionTest.php +++ b/tests/Feature/Form/FormUpdateActionTest.php @@ -118,16 +118,17 @@ it('testItUpdatesActiveState', function () { $this->assertTrue($form->fresh()->is_active); }); -it('updates zip and location', function () { +it('updates meta info', function () { $this->login()->loginNami()->withoutExceptionHandling(); $form = Form::factory()->create(); - $request = FormRequest::new()->zip('12345')->location('Musterstadt')->create(); + $request = FormRequest::new()->zip('12345')->location('Musterstadt')->country('Schweiz')->create(); $this->patchJson(route('form.update', ['form' => $form]), $request)->assertOk(); test()->assertDatabaseHas('forms', [ 'id' => $form->id, 'zip' => '12345', 'location' => 'Musterstadt', + 'country' => 'Schweiz', ]); });