48 lines
1.7 KiB
PHP
48 lines
1.7 KiB
PHP
<?php
|
|
|
|
use App\Application\Reports\CompareLegacyAndNewReportUseCase;
|
|
use App\Application\Reports\DTO\GenerateReportInput;
|
|
use App\Domain\Reports\Contracts\ReportRepository;
|
|
use App\Domain\Reports\Models\ReportSnapshot;
|
|
use App\Infrastructure\Reports\Adapters\LegacyReportServiceAdapter;
|
|
|
|
it('returns matched when saved snapshot equals expected snapshot', function () {
|
|
$input = new GenerateReportInput(
|
|
departmentId: 10,
|
|
userId: 5015,
|
|
actorUserId: 15,
|
|
periodStart: new DateTimeImmutable('2026-04-08 06:00:00'),
|
|
periodEnd: new DateTimeImmutable('2026-04-09 06:00:00'),
|
|
reportType: 'daily',
|
|
rawPayload: [
|
|
'departmentId' => 10,
|
|
'userId' => 5015,
|
|
'dates' => [1744063200, 1744149600],
|
|
'metrics' => ['metrika_item_4' => 11],
|
|
'observationPatients' => [],
|
|
'unwantedEvents' => [],
|
|
],
|
|
persistedReportId: 55,
|
|
);
|
|
|
|
$snapshot = new ReportSnapshot(
|
|
departmentId: 10,
|
|
userId: 5015,
|
|
actorUserId: 15,
|
|
periodStart: new DateTimeImmutable('2026-04-08 06:00:00'),
|
|
periodEnd: new DateTimeImmutable('2026-04-09 06:00:00'),
|
|
metrics: [4 => 11],
|
|
);
|
|
|
|
$repository = \Mockery::mock(ReportRepository::class);
|
|
$repository->shouldReceive('findSnapshot')->once()->with(55)->andReturn($snapshot);
|
|
|
|
$adapter = \Mockery::mock(LegacyReportServiceAdapter::class);
|
|
$adapter->shouldReceive('buildSnapshotFromInput')->once()->with($input)->andReturn($snapshot);
|
|
|
|
$result = (new CompareLegacyAndNewReportUseCase($repository, $adapter))->handle($input);
|
|
|
|
expect($result->status)->toBe('matched')
|
|
->and($result->diff)->toBe([]);
|
|
});
|