From 6d8c51c2e4eacd2ee8484c322e43fc46ad91dd5c Mon Sep 17 00:00:00 2001 From: Philipp Reinking Date: Sat, 15 Oct 2022 11:23:45 +0200 Subject: [PATCH] add is_required field to form blocks --- app/Http/Requests/FormBlockUpdateRequest.php | 1 + app/Models/FormBlock.php | 5 ++-- ...29_add_is_required_field_to_form_block.php | 23 +++++++++++++++++++ tests/Feature/Forms/BlockTest.php | 16 +++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 database/migrations/2022_10_15_092129_add_is_required_field_to_form_block.php diff --git a/app/Http/Requests/FormBlockUpdateRequest.php b/app/Http/Requests/FormBlockUpdateRequest.php index b42b857e..d93f7011 100644 --- a/app/Http/Requests/FormBlockUpdateRequest.php +++ b/app/Http/Requests/FormBlockUpdateRequest.php @@ -32,6 +32,7 @@ public function rules() 'webhook_url' => 'url|nullable', 'options' => 'array|nullable', 'title' => 'string|nullable', + 'is_required' => 'boolean|nullable', 'type' => [new Enum(FormBlockType::class)] ]; } diff --git a/app/Models/FormBlock.php b/app/Models/FormBlock.php index 7b66303a..7e4a11c1 100644 --- a/app/Models/FormBlock.php +++ b/app/Models/FormBlock.php @@ -30,9 +30,8 @@ class FormBlock extends Model protected $with = ['formBlockInteractions']; protected $casts = [ - 'responses' => 'array', - 'is_skippable' => 'boolean', - 'is_child' => 'boolean', + 'has_parent_interaction' => 'boolean', + 'is_required' => 'boolean', 'form_id' => 'integer', 'options' => 'array', 'type' => FormBlockType::class, diff --git a/database/migrations/2022_10_15_092129_add_is_required_field_to_form_block.php b/database/migrations/2022_10_15_092129_add_is_required_field_to_form_block.php new file mode 100644 index 00000000..dfb6fecb --- /dev/null +++ b/database/migrations/2022_10_15_092129_add_is_required_field_to_form_block.php @@ -0,0 +1,23 @@ +boolean('is_required') + ->default(false) + ->nullable() + ->after('uuid'); + }); + } +}; diff --git a/tests/Feature/Forms/BlockTest.php b/tests/Feature/Forms/BlockTest.php index d59b1661..851cb427 100644 --- a/tests/Feature/Forms/BlockTest.php +++ b/tests/Feature/Forms/BlockTest.php @@ -214,6 +214,22 @@ public function can_remove_a_title_for_the_results_view() $this->assertNull($block->fresh()->title); } + /** @test */ + public function can_make_a_block_required_for_form_user() + { + $block = FormBlock::factory()->create(); + + $this->actingAs($block->form->user) + ->json('POST', route('api.blocks.update', $block->id), ['is_required' => true]); + + $this->assertTrue($block->fresh()->is_required); + + $this->actingAs($block->form->user) + ->json('POST', route('api.blocks.update', $block->id), ['is_required' => false]); + + $this->assertFalse($block->fresh()->is_required); + } + /** @test */ public function can_save_information_in_an_options_field() {