Merge remote-tracking branch 'origin/develop'

This commit is contained in:
snipe 2024-07-24 18:10:23 +01:00
commit f76c68f0ed
4 changed files with 430 additions and 407 deletions

View file

@ -576,26 +576,20 @@ class AssetsController extends Controller
* @since [v1.0]
* @return \Illuminate\Contracts\View\View
*/
public function getClone($assetId = null)
public function getClone(Asset $asset)
{
// Check if the asset exists
if (is_null($asset_to_clone = Asset::find($assetId))) {
// Redirect to the asset management page
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist'));
}
$this->authorize('create', $asset_to_clone);
$asset = clone $asset_to_clone;
$asset->id = null;
$asset->asset_tag = '';
$asset->serial = '';
$asset->assigned_to = '';
$this->authorize('create', $asset);
$cloned = clone $asset;
$cloned->id = null;
$cloned->asset_tag = '';
$cloned->serial = '';
$cloned->assigned_to = '';
$cloned->deleted_at = '';
return view('hardware/edit')
->with('statuslabel_list', Helper::statusLabelList())
->with('statuslabel_types', Helper::statusTypeList())
->with('item', $asset);
->with('item', $cloned);
}
/**

File diff suppressed because it is too large Load diff

View file

@ -78,17 +78,14 @@ Route::group(
[AssetsController::class, 'getAssetBySerial']
)->where('any', '.*')->name('findbyserial/hardware');
Route::get('{assetId}/clone',
Route::get('{asset}/clone',
[AssetsController::class, 'getClone']
)->name('clone/hardware');
)->name('clone/hardware')->withTrashed();
Route::get('{assetId}/label',
[AssetsController::class, 'getLabel']
)->name('label/hardware');
Route::post('{assetId}/clone',
[AssetsController::class, 'postCreate']
);
Route::get('{assetId}/checkout',
[AssetCheckoutController::class, 'create']

View file

@ -0,0 +1,37 @@
<?php
namespace Feature\Assets\Ui;
use App\Models\Asset;
use App\Models\User;
use Tests\TestCase;
class CloneAssetTest extends TestCase
{
public function testPermissionRequiredToCreateAssetModel()
{
$asset = Asset::factory()->create();
$this->actingAs(User::factory()->create())
->get(route('clone/hardware', $asset))
->assertForbidden();
}
public function testPageCanBeAccessed(): void
{
$asset = Asset::factory()->create();
$response = $this->actingAs(User::factory()->createAssets()->create())
->get(route('clone/hardware', $asset));
$response->assertStatus(200);
}
public function testAssetCanBeCloned()
{
$asset_to_clone = Asset::factory()->create(['name'=>'Asset to clone']);
$this->actingAs(User::factory()->createAssets()->create())
->get(route('clone/hardware', $asset_to_clone))
->assertOk()
->assertSee([
'Asset to clone'
], false);
}
}