59 lines
1.8 KiB
PHP
59 lines
1.8 KiB
PHP
<?php
|
|
|
|
use App\Application\Reports\ReportInputFactory;
|
|
use App\Models\Department;
|
|
use App\Models\User;
|
|
use App\Services\DateRange;
|
|
use App\Services\DateRangeService;
|
|
use Carbon\Carbon;
|
|
|
|
it('builds manual generate report input from validated payload', function () {
|
|
$user = new User;
|
|
$user->id = 15;
|
|
|
|
$factory = new ReportInputFactory(app(DateRangeService::class));
|
|
|
|
$input = $factory->forManualSave($user, [
|
|
'departmentId' => 10,
|
|
'userId' => 5015,
|
|
'dates' => [1744063200, 1744149600],
|
|
'metrics' => ['metrika_item_4' => 11],
|
|
'observationPatients' => [['id' => 100]],
|
|
'unwantedEvents' => [['title' => 'A']],
|
|
'status' => 'draft',
|
|
'reportId' => 55,
|
|
]);
|
|
|
|
expect($input->departmentId)->toBe(10)
|
|
->and($input->userId)->toBe(5015)
|
|
->and($input->actorUserId)->toBe(15)
|
|
->and($input->reportId)->toBe(55)
|
|
->and($input->metrics)->toBe(['metrika_item_4' => 11])
|
|
->and($input->rawPayload['actorUserId'])->toBe(15);
|
|
});
|
|
|
|
it('builds auto fill generate report input from scoped user and date range', function () {
|
|
$user = new User;
|
|
$user->id = 15;
|
|
$user->rf_lpudoctor_id = 5015;
|
|
|
|
$department = new Department;
|
|
$department->department_id = 10;
|
|
|
|
$dateRange = new DateRange(
|
|
startDate: Carbon::parse('2026-04-08 06:00:00', 'Asia/Yakutsk'),
|
|
endDate: Carbon::parse('2026-04-09 06:00:00', 'Asia/Yakutsk'),
|
|
startDateRaw: '2026-04-08 06:00:00',
|
|
endDateRaw: '2026-04-09 06:00:00',
|
|
isOneDay: true,
|
|
);
|
|
|
|
$factory = new ReportInputFactory(app(DateRangeService::class));
|
|
$input = $factory->forAutoFill($user, $department, $dateRange);
|
|
|
|
expect($input->autoFill)->toBeTrue()
|
|
->and($input->status)->toBe('submitted')
|
|
->and($input->departmentId)->toBe(10)
|
|
->and($input->userId)->toBe(5015);
|
|
});
|