From 7f40f55343fe7e801c6de0cd0d1fa63f442b8349 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 16 Sep 2024 13:52:02 -0700 Subject: [PATCH] Add tests for delete supplier endpoint --- database/factories/UserFactory.php | 5 ++ .../Suppliers/Api/DeleteSupplierTest.php | 51 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 tests/Feature/Suppliers/Api/DeleteSupplierTest.php diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index dd92f38f67..b375142196 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -361,6 +361,11 @@ class UserFactory extends Factory return $this->appendPermission(['statuslabels.delete' => '1']); } + public function deleteSuppliers() + { + return $this->appendPermission(['suppliers.delete' => '1']); + } + private function appendPermission(array $permission) { return $this->state(function ($currentState) use ($permission) { diff --git a/tests/Feature/Suppliers/Api/DeleteSupplierTest.php b/tests/Feature/Suppliers/Api/DeleteSupplierTest.php new file mode 100644 index 0000000000..795ff2b576 --- /dev/null +++ b/tests/Feature/Suppliers/Api/DeleteSupplierTest.php @@ -0,0 +1,51 @@ +create(); + + $this->actingAsForApi(User::factory()->create()) + ->deleteJson(route('api.suppliers.destroy', $supplier)) + ->assertForbidden(); + } + + public function testCannotDeleteSupplierWithDataStillAssociated() + { + $supplierWithAsset = Supplier::factory()->hasAssets()->create(); + $supplierWithAssetMaintenance = Supplier::factory()->has(AssetMaintenance::factory(), 'asset_maintenances')->create(); + $supplierWithLicense = Supplier::factory()->hasLicenses()->create(); + + $actor = $this->actingAsForApi(User::factory()->deleteSuppliers()->create()); + + $actor->deleteJson(route('api.suppliers.destroy', $supplierWithAsset))->assertStatusMessageIs('error'); + $actor->deleteJson(route('api.suppliers.destroy', $supplierWithAssetMaintenance))->assertStatusMessageIs('error'); + $actor->deleteJson(route('api.suppliers.destroy', $supplierWithLicense))->assertStatusMessageIs('error'); + + $this->assertNotSoftDeleted($supplierWithAsset); + $this->assertNotSoftDeleted($supplierWithAssetMaintenance); + $this->assertNotSoftDeleted($supplierWithLicense); + } + + public function testCanDeleteSupplier() + { + $supplier = Supplier::factory()->create(); + + $this->actingAsForApi(User::factory()->deleteSuppliers()->create()) + ->deleteJson(route('api.suppliers.destroy', $supplier)) + ->assertOk() + ->assertStatusMessageIs('success'); + + $this->assertSoftDeleted($supplier); + } +}