devsofttech_hms_ci4/tests/unit/Abdm/M2LinkStatusResolverTest.php
DevSoftTech Server 625987955e feat(abdm): improve bridge record delivery
Add NAT-safe Immunization and InvoiceRecord Bridge workflows, stable care-context handling, ABHA address enrichment, embedded invoice PDFs, M2 status synchronization, and strict Bridge response normalization.
2026-08-16 01:30:11 +05:30

43 lines
1.6 KiB
PHP

<?php
use App\Libraries\Abdm\M2LinkStatusResolver;
use CodeIgniter\Test\CIUnitTestCase;
final class M2LinkStatusResolverTest extends CIUnitTestCase
{
public function testParsesCamelCaseCallbackIdentifiers(): void
{
$callback = M2LinkStatusResolver::parse([
'requestId' => 'req-42',
'abha_address' => 'patient@abdm',
'careContextReference' => 'IMM-17-91-20260815',
'linkedAt' => '2026-08-15 12:30:00',
'status' => 'SUCCESS',
]);
$this->assertSame('req-42', $callback['request_id']);
$this->assertSame('IMM-17-91-20260815', $callback['care_context_reference']);
$this->assertSame('linked', $callback['status']);
}
public function testHeaderRequestIdIsUsedAsFallback(): void
{
$callback = M2LinkStatusResolver::parse([
'abha_id' => '12345678901234',
'care_context_reference' => 'OPD-10-S1-2026-08-15',
'status' => 'linked',
], 'header-request-id');
$this->assertSame('header-request-id', $callback['request_id']);
}
public function testLinkedStateCannotBeDowngradedByLateCallback(): void
{
$this->assertSame('linked', M2LinkStatusResolver::merge('linked', 'failed'));
$this->assertSame('linked', M2LinkStatusResolver::merge('linked', 'pending'));
$this->assertSame('failed', M2LinkStatusResolver::merge('pending', 'rejected'));
$this->assertSame('failed', M2LinkStatusResolver::merge('failed', 'pending'));
$this->assertSame('linked', M2LinkStatusResolver::merge('failed', 'completed'));
}
}