Files
hr/tests/Feature/ActivityLogTest.php
2026-07-30 17:24:40 +05:00

70 lines
2.1 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\Department;
use App\Models\Employee;
use App\Models\Position;
use App\Models\Shift;
use App\Services\Employee\EmployeeService;
use Spatie\Activitylog\Models\Activity;
it('logs activity when an employee is created', function (): void {
$department = Department::factory()->create();
$position = Position::factory()->create();
$shift = Shift::factory()->create();
$employee = app(EmployeeService::class)->create([
'employee_number' => 'EMP-LOG-001',
'full_name' => 'Activity Test Employee',
'gender' => 'male',
'birth_date' => '1992-08-20',
'phone' => '+993 61 92 92 48',
'department_id' => $department->id,
'position_id' => $position->id,
'shift_id' => $shift->id,
'employment_status' => 'active',
'hire_date' => '2023-01-15',
]);
$activity = Activity::query()
->where('subject_type', Employee::class)
->where('subject_id', $employee->id)
->first();
expect($activity)->not->toBeNull()
->and($activity->event)->toBe('created')
->and($activity->description)->toContain('created');
});
it('logs activity when an employee is created via the model', function (): void {
$employee = Employee::factory()->create([
'employee_number' => 'EMP-LOG-002',
]);
expect(
Activity::query()
->where('subject_type', Employee::class)
->where('subject_id', $employee->id)
->where('event', 'created')
->exists(),
)->toBeTrue();
});
it('logs updated attributes when an employee is modified', function (): void {
$employee = Employee::factory()->create([
'full_name' => 'Original Name',
]);
$employee->update(['full_name' => 'Updated Name']);
$activity = Activity::query()
->where('subject_type', Employee::class)
->where('subject_id', $employee->id)
->where('event', 'updated')
->first();
expect($activity)->not->toBeNull()
->and($activity->properties->get('attributes'))->toHaveKey('full_name', 'Updated Name');
});