From 2047cfed09a231a90f1958ab0ce650808e05985d Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Thu, 12 Sep 2024 16:20:32 -0700 Subject: [PATCH] Add tests for delete custom fields endpoint --- database/factories/UserFactory.php | 5 ++ .../Api/DeleteCustomFieldsTest.php | 48 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 tests/Feature/CustomFields/Api/DeleteCustomFieldsTest.php diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 03bc19332..cc884a90b 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -321,6 +321,11 @@ class UserFactory extends Factory return $this->appendPermission(['import' => '1']); } + public function deleteCustomFields() + { + return $this->appendPermission(['customfields.delete' => '1']); + } + private function appendPermission(array $permission) { return $this->state(function ($currentState) use ($permission) { diff --git a/tests/Feature/CustomFields/Api/DeleteCustomFieldsTest.php b/tests/Feature/CustomFields/Api/DeleteCustomFieldsTest.php new file mode 100644 index 000000000..cc16e77ce --- /dev/null +++ b/tests/Feature/CustomFields/Api/DeleteCustomFieldsTest.php @@ -0,0 +1,48 @@ +create(); + + $this->actingAsForApi(User::factory()->create()) + ->deleteJson(route('api.customfields.destroy', $customField)) + ->assertForbidden(); + } + + public function testCustomFieldsCanBeDeleted() + { + $customField = CustomField::factory()->create(); + + $this->actingAsForApi(User::factory()->deleteCustomFields()->create()) + ->deleteJson(route('api.customfields.destroy', $customField)) + ->assertStatusMessageIs('success'); + + $this->assertDatabaseMissing('custom_fields', ['id' => $customField->id]); + } + + public function testCustomFieldsCannotBeDeletedIfTheyHaveAssociatedFieldsets() + { + $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); + + $customField = CustomField::factory()->create(); + $customFieldset = CustomFieldset::factory()->create(); + + $customField->fieldset()->attach($customFieldset, ['order' => 1, 'required' => 'false']); + + $this->actingAsForApi(User::factory()->deleteCustomFields()->create()) + ->deleteJson(route('api.customfields.destroy', $customField)) + ->assertStatusMessageIs('error'); + + $this->assertDatabaseHas('custom_fields', ['id' => $customField->id]); + } +}