Merge remote-tracking branch 'origin/develop'

This commit is contained in:
snipe 2024-07-19 22:55:09 +01:00
commit a98ad76c6a
3 changed files with 168 additions and 6 deletions

View file

@ -3,14 +3,10 @@
namespace App\Importer; namespace App\Importer;
use App\Models\Asset; use App\Models\Asset;
use App\Models\AssetModel;
use App\Models\Statuslabel; use App\Models\Statuslabel;
use App\Models\User; use App\Models\User;
use App\Events\CheckoutableCheckedIn; use App\Events\CheckoutableCheckedIn;
use Carbon\CarbonImmutable; use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
class AssetImporter extends ItemImporter class AssetImporter extends ItemImporter
{ {

View file

@ -0,0 +1,166 @@
<?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,
]
);
}
}

View file

@ -8,7 +8,7 @@ use App\Models\CheckoutAcceptance;
use App\Models\User; use App\Models\User;
use App\Notifications\AcceptanceAssetAcceptedNotification; use App\Notifications\AcceptanceAssetAcceptedNotification;
use App\Notifications\AcceptanceAssetDeclinedNotification; use App\Notifications\AcceptanceAssetDeclinedNotification;
use Notification; use Illuminate\Support\Facades\Notification;
use Tests\TestCase; use Tests\TestCase;
class AccessoryAcceptanceTest extends TestCase class AccessoryAcceptanceTest extends TestCase