3
0
mirror of https://github.com/snipe/snipe-it.git synced 2026-08-18 11:15:42 +00:00
Files
snipe-it/tests/Feature/Users/TransferUserItemsPageAccessTest.php
2026-07-23 15:08:58 +01:00

58 lines
1.6 KiB
PHP

<?php
namespace Tests\Feature\Users;
use App\Models\Asset;
use App\Models\User;
use Tests\TestCase;
class TransferUserItemsPageAccessTest extends TestCase
{
public function test_transfer_page_requires_authentication(): void
{
User::factory()->create();
$source = User::factory()->create();
$this->get(route('users.transfer.show', $source))
->assertRedirect(route('login'));
}
public function test_transfer_page_requires_checkout_permission(): void
{
$source = User::factory()->create();
$this->actingAs(User::factory()->viewUsers()->create())
->get(route('users.transfer.show', $source))
->assertForbidden();
}
public function test_transfer_page_renders_when_source_has_items(): void
{
$source = User::factory()->create();
Asset::factory()->create(['assigned_to' => $source->id, 'assigned_type' => User::class]);
$this->actingAs($this->transferActor())
->get(route('users.transfer.show', $source))
->assertOk()
->assertViewIs('users.transfer');
}
public function test_transfer_page_redirects_when_source_has_no_items(): void
{
$source = User::factory()->create();
$this->actingAs($this->transferActor())
->get(route('users.transfer.show', $source))
->assertRedirect(route('users.show', $source));
}
private function transferActor(): User
{
return User::factory()
->viewUsers()
->checkinAssets()
->checkoutAssets()
->create();
}
}