routes added, tests scratched but need writing

This commit is contained in:
spencerrlongg
2025-07-09 23:01:58 -05:00
parent 5f835aa009
commit 4d8c5a86a4
11 changed files with 148 additions and 6 deletions

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api;
use App\Actions\Manufacturers\DestroyManufacturerAction;
use App\Exceptions\ModelStillHasAccessories;
use App\Exceptions\ModelStillHasAssets;
use App\Exceptions\ModelStillHasChildren;
use App\Exceptions\ModelStillHasComponents;
use App\Exceptions\ModelStillHasConsumables;
use App\Exceptions\ModelStillHasLicenses;
@@ -195,7 +196,7 @@ class ManufacturersController extends Controller
$this->authorize('delete', $manufacturer);
try {
DestroyManufacturerAction::run($manufacturer);
} catch (ModelStillHasAccessories|ModelStillHasAssets|ModelStillHasComponents|ModelStillHasConsumables|ModelStillHasLicenses $e) {
} catch (ModelStillHasChildren $e) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/manufacturers/message.assoc_users')));
} catch (\Exception $e) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'something went wrong'));

View File

@@ -5,7 +5,6 @@ namespace App\Http\Controllers\Api;
use App\Actions\Suppliers\DestroySupplierAction;
use App\Exceptions\ModelStillHasAssetMaintenances;
use App\Exceptions\ModelStillHasAssets;
use App\Exceptions\ModelStillHasChildren;
use App\Exceptions\ModelStillHasLicenses;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
@@ -201,8 +200,12 @@ class SuppliersController extends Controller
$this->authorize('delete', $supplier);
try {
DestroySupplierAction::run(supplier: $supplier);
} catch (ModelStillHasChildren $e) {
} catch (ModelStillHasAssets $e) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/suppliers/message.delete.assoc_assets', ['asset_count' => (int) $supplier->assets_count])));
} catch (ModelStillHasAssetMaintenances $e) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/suppliers/message.delete.assoc_maintenances', ['asset_maintenances_count' => $supplier->asset_maintenances_count])));
} catch (ModelStillHasLicenses $e) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/suppliers/message.delete.assoc_licenses', ['licenses_count' => (int) $supplier->licenses_count])));
} catch (\Throwable $e) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'something went wrong'));
}

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Actions\Manufacturers\DestroyManufacturerAction;
use App\Exceptions\ModelStillHasAccessories;
use App\Exceptions\ModelStillHasAssets;
use App\Exceptions\ModelStillHasChildren;
use App\Exceptions\ModelStillHasComponents;
use App\Exceptions\ModelStillHasConsumables;
use App\Exceptions\ModelStillHasLicenses;
@@ -169,7 +170,7 @@ class ManufacturersController extends Controller
$this->authorize('delete', $manufacturer);
try {
DestroyManufacturerAction::run($manufacturer);
} catch (ModelStillHasAccessories|ModelStillHasAssets|ModelStillHasComponents|ModelStillHasConsumables|ModelStillHasLicenses $e) {
} catch (ModelStillHasChildren $e) {
return redirect()->route('manufacturers.index')->with('error', trans('admin/manufacturers/message.assoc_users'));
} catch (\Exception $e) {
return redirect()->route('manufacturers.index')->with('error', 'something went wrong');

View File

@@ -5,7 +5,6 @@ namespace App\Http\Controllers;
use App\Actions\Suppliers\DestroySupplierAction;
use App\Exceptions\ModelStillHasAssetMaintenances;
use App\Exceptions\ModelStillHasAssets;
use App\Exceptions\ModelStillHasChildren;
use App\Exceptions\ModelStillHasLicenses;
use App\Http\Requests\ImageUploadRequest;
use App\Models\Supplier;
@@ -129,8 +128,12 @@ class SuppliersController extends Controller
$this->authorize('delete', Supplier::class);
try {
DestroySupplierAction::run(supplier: $supplier);
} catch (ModelStillHasChildren $e) {
} catch (ModelStillHasAssets $e) {
return redirect()->route('suppliers.index')->with('error', trans('admin/suppliers/message.delete.assoc_assets', ['asset_count' => (int) $supplier->assets_count]));
} catch (ModelStillHasAssetMaintenances $e) {
return redirect()->route('suppliers.index')->with('error', trans('admin/suppliers/message.delete.assoc_maintenances', ['asset_maintenances_count' => $supplier->asset_maintenances_count]));
} catch (ModelStillHasLicenses $e) {
return redirect()->route('suppliers.index')->with('error', trans('admin/suppliers/message.delete.assoc_licenses', ['licenses_count' => (int) $supplier->licenses_count]));
} catch (\Throwable $e) {
report($e);
return redirect()->route('suppliers.index')->with('error', trans('admin/suppliers/message.delete.error'));

View File

@@ -5,6 +5,9 @@ use App\Http\Controllers\ActionlogController;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\ResetPasswordController;
use App\Http\Controllers\BulkCategoriesController;
use App\Http\Controllers\BulkManufacturersController;
use App\Http\Controllers\BulkSuppliersController;
use App\Http\Controllers\CategoriesController;
use App\Http\Controllers\CompaniesController;
use App\Http\Controllers\DashboardController;
@@ -43,6 +46,8 @@ Route::group(['middleware' => 'auth'], function () {
Route::resource('categories', CategoriesController::class, [
'parameters' => ['category' => 'category_id'],
]);
Route::delete('categories/bulk/delete', [BulkCategoriesController::class, 'destroy'])->name('categories.bulk.delete');
/*
* Labels
@@ -66,11 +71,15 @@ Route::group(['middleware' => 'auth'], function () {
Route::resource('manufacturers', ManufacturersController::class);
Route::delete('manufacturers/bulk/delete', [BulkManufacturersController::class, 'destroy'])->name('manufacturers.bulk.delete');
/*
* Suppliers
*/
Route::resource('suppliers', SuppliersController::class);
Route::delete('suppliers/bulk/delete', [BulkSuppliersController::class, 'destroy'])->name('suppliers.bulk.delete');
/*
* Depreciations
*/

View File

@@ -0,0 +1,26 @@
<?php
namespace Tests\Feature\Categories\Ui;
use Tests\Concerns\TestsPermissionsRequirement;
use Tests\TestCase;
class BulkDeleteCategoriesTest extends TestCase implements TestsPermissionsRequirement
{
public function testRequiresPermission()
{
// TODO: implement
}
public function test_category_cannot_be_bulk_deleted_if_models_still_associated()
{
// TODO: implement
}
public function test_category_can_be_bulk_deleted_if_no_models_associated()
{
// TODO: implement
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace Tests\Feature\Manufacturers\Ui;
use Tests\Concerns\TestsPermissionsRequirement;
use Tests\TestCase;
class BulkDeleteManufacturersTest extends TestCase implements TestsPermissionsRequirement
{
public function testRequiresPermission()
{
// TODO: Implement testRequiresPermission() method.
}
public function test_manufacturer_cannot_be_bulk_deleted_if_models_still_associated()
{
// TODO: implement
}
public function test_manufacturers_can_be_bulk_deleted()
{
// TODO: implement
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Tests\Feature\Manufacturers\Ui;
use Tests\Concerns\TestsPermissionsRequirement;
use Tests\TestCase;
class DeleteManufacturersTest extends TestCase implements TestsPermissionsRequirement
{
public function testRequiresPermission()
{
// TODO: Implement testRequiresPermission() method.
}
public function test_manufacturer_cannot_be_deleted_if_models_still_associated()
{
// TODO: implement
}
public function test_manufacturer_can_be_deleted()
{
// TODO: implement
}
}

View File

@@ -33,6 +33,7 @@ class DeleteSuppliersTest extends TestCase implements TestsPermissionsRequiremen
$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);

View File

@@ -0,0 +1,24 @@
<?php
namespace Tests\Feature\Suppliers\Ui;
use Tests\Concerns\TestsPermissionsRequirement;
use Tests\TestCase;
class BulkDeleteSuppliersTest extends TestCase implements TestsPermissionsRequirement
{
public function testRequiresPermission()
{
// TODO: implement
}
public function test_suppliers_cannot_be_bulk_deleted_if_models_still_associated()
{
// TODO: implement
}
public function test_supplier_can_be_bulk_deleted()
{
// TODO: implement
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace Tests\Feature\Suppliers\Ui;
use Tests\Concerns\TestsPermissionsRequirement;
use Tests\TestCase;
class DeleteSuppliersTest extends TestCase implements TestsPermissionsRequirement
{
public function testRequiresPermission()
{
// TODO: Implement testRequiresPermission() method.
}
public function test_cannot_delete_supplier_with_data_still_associated()
{
// TODO: Implement
}
public function test_can_delete_supplier()
{
// TODO: implement
}
}