mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-26 22:19:41 -08:00
a54403ef01
Signed-off-by: snipe <snipe@snipe.net>
167 lines
5.2 KiB
PHP
167 lines
5.2 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature\Assets\Ui;
|
|
|
|
use App\Models\Accessory;
|
|
use App\Models\Actionlog;
|
|
use App\Models\Asset;
|
|
use App\Models\User;
|
|
use Tests\TestCase;
|
|
|
|
class BulkDeleteAssetsTest extends TestCase
|
|
{
|
|
public function testUserWithPermissionsCanAccessPage()
|
|
{
|
|
$user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create();
|
|
$assets = Asset::factory()->count(2)->create();
|
|
|
|
$id_array = $assets->pluck('id')->toArray();
|
|
|
|
$this->actingAs($user)->post('/hardware/bulkedit', [
|
|
'ids' => $id_array,
|
|
'order' => 'asc',
|
|
'bulk_actions' => 'delete',
|
|
'sort' => 'id'
|
|
])->assertStatus(200);
|
|
}
|
|
|
|
public function testStandardUserCannotAccessPage()
|
|
{
|
|
$user = User::factory()->create();
|
|
$assets = Asset::factory()->count(2)->create();
|
|
|
|
$id_array = $assets->pluck('id')->toArray();
|
|
|
|
$this->actingAs($user)->post('/hardware/bulkdelete', [
|
|
'ids' => $id_array,
|
|
'bulk_actions' => 'delete',
|
|
])->assertStatus(403);
|
|
}
|
|
|
|
public function testPageRedirectFromInterstitialIfNoAssetsSelectedToDelete()
|
|
{
|
|
$user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create();
|
|
$response = $this->actingAs($user)
|
|
->post('/hardware/bulkdelete', [
|
|
'ids' => null,
|
|
'bulk_actions' => 'delete',
|
|
])
|
|
->assertStatus(302)
|
|
->assertRedirect(route('hardware.index'));
|
|
|
|
$this->followRedirects($response)->assertSee('alert-danger');
|
|
}
|
|
|
|
public function testPageRedirectFromInterstitialIfNoAssetsSelectedToRestore()
|
|
{
|
|
$user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create();
|
|
$response = $this->actingAs($user)
|
|
->from(route('hardware.index'))
|
|
->post('/hardware/bulkrestore', [
|
|
'ids' => null,
|
|
'bulk_actions' => 'delete',
|
|
])
|
|
->assertStatus(302)
|
|
->assertRedirect(route('hardware.index'));
|
|
|
|
$this->followRedirects($response)->assertSee('alert-danger');
|
|
}
|
|
|
|
|
|
public function testBulkDeleteSelectedAssetsFromInterstitial()
|
|
{
|
|
$user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create();
|
|
$assets = Asset::factory()->count(2)->create();
|
|
|
|
$id_array = $assets->pluck('id')->toArray();
|
|
|
|
$response = $this->actingAs($user)
|
|
->from(route('hardware/bulkedit'))
|
|
->post('/hardware/bulkdelete', [
|
|
'ids' => $id_array,
|
|
'bulk_actions' => 'delete',
|
|
])->assertStatus(302);
|
|
|
|
Asset::findMany($id_array)->each(function (Asset $asset) {
|
|
$this->assertNotNull($asset->deleted_at);
|
|
});
|
|
|
|
$this->followRedirects($response)->assertSee('alert-success');
|
|
}
|
|
|
|
public function testBulkRestoreSelectedAssetsFromInterstitial()
|
|
{
|
|
$user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create();
|
|
$asset = Asset::factory()->deleted()->create();
|
|
|
|
$asset->refresh();
|
|
$id_array = $asset->pluck('id')->toArray();
|
|
|
|
// Check that the assets are deleted
|
|
Asset::findMany($id_array)->each(function (Asset $asset) {
|
|
$this->assertNull($asset->deleted_at);
|
|
});
|
|
|
|
$response = $this->actingAs($user)
|
|
->from(route('hardware/bulkedit'))
|
|
->post(route('hardware/bulkrestore'), [
|
|
'ids' => [$asset->id],
|
|
])->assertStatus(302);
|
|
|
|
$this->followRedirects($response)->assertSee('alert-success');
|
|
|
|
Asset::findMany($id_array)->each(function (Asset $asset) {
|
|
$this->assertNull($asset->deleted_at);
|
|
});
|
|
}
|
|
|
|
|
|
public function testActionLogCreatedUponBulkDelete()
|
|
{
|
|
$user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create();
|
|
$asset = Asset::factory()->create();
|
|
|
|
$this->actingAs($user)
|
|
->from(route('hardware/bulkedit'))
|
|
->post('/hardware/bulkdelete', [
|
|
'ids' => [$asset->id],
|
|
'bulk_actions' => 'delete',
|
|
]);
|
|
|
|
$this->assertDatabaseHas('action_logs',
|
|
[
|
|
'action_type' => 'delete',
|
|
'target_id' => null,
|
|
'target_type' => null,
|
|
'item_id' => $asset->id,
|
|
'item_type' => Asset::class,
|
|
]
|
|
);
|
|
}
|
|
|
|
public function testActionLogCreatedUponBulkRestore()
|
|
{
|
|
$user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create();
|
|
$asset = Asset::factory()->deleted()->create();
|
|
|
|
$this->actingAs($user)
|
|
->from(route('hardware/bulkedit'))
|
|
->post(route('hardware/bulkrestore'), [
|
|
'ids' => [$asset->id],
|
|
'bulk_actions' => 'restore',
|
|
]);
|
|
|
|
$this->assertDatabaseHas('action_logs',
|
|
[
|
|
'action_type' => 'restore',
|
|
'target_id' => null,
|
|
'target_type' => null,
|
|
'item_id' => $asset->id,
|
|
'item_type' => Asset::class,
|
|
]
|
|
);
|
|
}
|
|
|
|
|
|
}
|