3
0
mirror of https://github.com/snipe/snipe-it.git synced 2026-02-05 16:45:32 +00:00
Files
snipe-it/tests/Unit/BladeComponents/UserFullNameTest.php
Marcus Moore bea426d8e6 Add test
2025-05-22 16:54:52 -07:00

92 lines
3.4 KiB
PHP

<?php
namespace Tests\Unit\BladeComponents;
use App\Models\User;
use Generator;
use Illuminate\Support\Facades\View;
use PHPUnit\Framework\Assert;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
class UserFullNameTest extends TestCase
{
public static function provider(): Generator
{
yield 'Renders link to user if they exist and the authenticated user can view them' => [
function () {
return [
'actor' => User::factory()->viewUsers()->create(),
'user' => User::factory()->create(['first_name' => 'Jim', 'last_name' => 'Bagg']),
'assertions' => function ($rendered) {
Assert::assertStringContainsString('<a ', $rendered);
Assert::assertStringContainsString('Jim Bagg', $rendered);
},
];
}
];
yield 'Renders struck-through link to user if they are deleted and the authenticated user can view them' => [
function () {
return [
'actor' => User::factory()->viewUsers()->create(),
'user' => User::factory()->deleted()->create(['first_name' => 'Jim', 'last_name' => 'Bagg']),
'assertions' => function ($rendered) {
Assert::assertStringContainsString('<s><a ', $rendered);
Assert::assertStringContainsString('Jim Bagg', $rendered);
},
];
}
];
yield 'Renders name without link if the authenticated user cannot view them' => [
function () {
return [
'actor' => User::factory()->create(),
'user' => User::factory()->create(['first_name' => 'Jim', 'last_name' => 'Bagg']),
'assertions' => function ($rendered) {
Assert::assertStringContainsString('<span>Jim Bagg', $rendered);
Assert::assertStringNotContainsString('<a ', $rendered);
},
];
}
];
yield 'Renders struck-through name without link if the user is deleted and the authenticated user cannot view them' => [
function () {
return [
'actor' => User::factory()->create(),
'user' => User::factory()->deleted()->create(['first_name' => 'Jim', 'last_name' => 'Bagg']),
'assertions' => function ($rendered) {
Assert::assertStringContainsString('<s><span>Jim Bagg', $rendered);
},
];
}
];
yield 'Renders nothing if the provided user is null' => [
function () {
return [
'actor' => User::factory()->create(),
'user' => null,
'assertions' => function ($rendered) {
Assert::assertEmpty($rendered);
},
];
}
];
}
#[DataProvider('provider')]
public function testComponent($provided)
{
['actor' => $actor, 'user' => $user, 'assertions' => $assertions] = $provided();
$this->actingAs($actor);
$renderedTemplateString = View::make('blade.full-user-name', ['user' => $user])->render();
$assertions($renderedTemplateString);
}
}