mirror of
https://github.com/snipe/snipe-it.git
synced 2026-04-03 06:20:22 +00:00
104 lines
2.7 KiB
PHP
104 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Models;
|
|
|
|
use App\Enums\ActionType;
|
|
use App\Models\License;
|
|
use App\Models\User;
|
|
use Tests\TestCase;
|
|
|
|
class LicenseTest extends TestCase
|
|
{
|
|
public function test_adding_seats_is_logged_when_updating()
|
|
{
|
|
$user = User::factory()->create();
|
|
$this->actingAs($user);
|
|
|
|
$license = License::factory()->create(['seats' => 2]);
|
|
|
|
$license->update(['seats' => 6]);
|
|
|
|
$this->assertDatabaseHas('action_logs', [
|
|
'created_by' => $user->id,
|
|
'action_type' => ActionType::AddSeats,
|
|
'item_type' => License::class,
|
|
'item_id' => $license->id,
|
|
'deleted_at' => null,
|
|
// relevant for this test:
|
|
'quantity' => 4,
|
|
'note' => 'added 4 seats',
|
|
]);
|
|
}
|
|
|
|
public function test_removing_seats_is_logged_when_updating()
|
|
{
|
|
$user = User::factory()->create();
|
|
$this->actingAs($user);
|
|
|
|
$license = License::factory()->create(['seats' => 6]);
|
|
|
|
$license->update(['seats' => 3]);
|
|
|
|
$this->assertDatabaseHas('action_logs', [
|
|
'created_by' => $user->id,
|
|
'action_type' => ActionType::DeleteSeats,
|
|
'item_type' => License::class,
|
|
'item_id' => $license->id,
|
|
'deleted_at' => null,
|
|
// relevant for this test:
|
|
'quantity' => 3,
|
|
'note' => 'deleted 3 seats',
|
|
]);
|
|
}
|
|
|
|
public function test_percent_remaining_returns_zero_when_seats_are_zero()
|
|
{
|
|
$license = new class extends License
|
|
{
|
|
public int $remaining = 8;
|
|
|
|
public function remaincount(): int
|
|
{
|
|
return $this->remaining;
|
|
}
|
|
};
|
|
$license->seats = 0;
|
|
|
|
$this->assertEquals(0, $license->percentRemaining());
|
|
}
|
|
|
|
public function test_percent_remaining_returns_expected_available_ratio()
|
|
{
|
|
$license = new class extends License
|
|
{
|
|
public int $remaining = 6;
|
|
|
|
public function remaincount(): int
|
|
{
|
|
return $this->remaining;
|
|
}
|
|
};
|
|
$license->seats = 12;
|
|
|
|
$this->assertEquals(50.0, $license->percentRemaining());
|
|
}
|
|
|
|
public function test_percent_remaining_clamps_remaining_to_valid_bounds()
|
|
{
|
|
$license = new class extends License
|
|
{
|
|
public int $remaining = -3;
|
|
|
|
public function remaincount(): int
|
|
{
|
|
return $this->remaining;
|
|
}
|
|
};
|
|
$license->seats = 10;
|
|
$this->assertEquals(0.0, $license->percentRemaining());
|
|
|
|
$license->remaining = 99;
|
|
$this->assertEquals(100.0, $license->percentRemaining());
|
|
}
|
|
}
|