148 lines
4.9 KiB
PHP
148 lines
4.9 KiB
PHP
<?php
|
|
|
|
use classes\economic_transfer_queue;
|
|
use classes\economic_transfer_queue_details_summary;
|
|
|
|
it('builds a completed collected-invoice queue summary from payload and result', function (): void {
|
|
$summary = economic_transfer_queue_details_summary::buildCollectedInvoiceSummary([
|
|
'status' => economic_transfer_queue::STATUS_COMPLETED,
|
|
'payload' => [
|
|
'collected_invoice_id' => '14578',
|
|
'send_as_is' => '1',
|
|
'requested_by' => '18',
|
|
],
|
|
'result' => [
|
|
'message' => 'Invoice transferred',
|
|
'customer_number' => '43425425',
|
|
'customer_name' => 'North Freight',
|
|
'economic_invoice_draft_id' => '2001',
|
|
'economic_invoice_booked_id' => '3001',
|
|
'external_id' => 'abc-123',
|
|
'total_net_amount' => '670',
|
|
'orders' => [
|
|
['id' => 1],
|
|
['id' => 2],
|
|
],
|
|
],
|
|
]);
|
|
|
|
expect($summary['message'])->toBe('Invoice transferred');
|
|
expect($summary['target'])->toBe([
|
|
'collected_invoice_id' => 14578,
|
|
'send_as_is' => true,
|
|
'requested_by' => 18,
|
|
]);
|
|
expect($summary['customer'])->toBe([
|
|
'customer_number' => 43425425,
|
|
'name' => 'North Freight',
|
|
]);
|
|
expect($summary['outcome'])->toBe([
|
|
'economic_invoice_draft_id' => 2001,
|
|
'economic_invoice_booked_id' => 3001,
|
|
'external_id' => 'abc-123',
|
|
'total_net_amount' => 670.0,
|
|
'order_count' => 2,
|
|
]);
|
|
expect($summary['raw_available'])->toBe([
|
|
'payload' => true,
|
|
'result' => true,
|
|
]);
|
|
});
|
|
|
|
it('prefers queue error messages for failed jobs and keeps null-safe outcome fields', function (): void {
|
|
$summary = economic_transfer_queue_details_summary::buildCollectedInvoiceSummary([
|
|
'status' => economic_transfer_queue::STATUS_FAILED,
|
|
'collected_invoice_id' => 9001,
|
|
'error_message' => 'No billable order items',
|
|
'payload' => [
|
|
'collected_invoice_id' => 9001,
|
|
],
|
|
'result' => null,
|
|
]);
|
|
|
|
expect($summary['message'])->toBe('No billable order items');
|
|
expect($summary['target']['collected_invoice_id'])->toBe(9001);
|
|
expect($summary['target']['send_as_is'])->toBeNull();
|
|
expect($summary['target']['requested_by'])->toBeNull();
|
|
|
|
expect($summary['customer'])->toBe([
|
|
'customer_number' => null,
|
|
'name' => null,
|
|
]);
|
|
expect($summary['outcome'])->toBe([
|
|
'economic_invoice_draft_id' => null,
|
|
'economic_invoice_booked_id' => null,
|
|
'external_id' => null,
|
|
'total_net_amount' => null,
|
|
'order_count' => null,
|
|
]);
|
|
expect($summary['raw_available'])->toBe([
|
|
'payload' => true,
|
|
'result' => false,
|
|
]);
|
|
});
|
|
|
|
it('uses deterministic status message fallback when no explicit message exists', function (): void {
|
|
$expectations = [
|
|
[economic_transfer_queue::STATUS_QUEUED, 'Queued'],
|
|
[economic_transfer_queue::STATUS_PROCESSING, 'Processing'],
|
|
[economic_transfer_queue::STATUS_COMPLETED, 'Completed'],
|
|
[economic_transfer_queue::STATUS_FAILED, 'Failed'],
|
|
['UNKNOWN', null],
|
|
];
|
|
|
|
foreach ($expectations as [$status, $expected]) {
|
|
$summary = economic_transfer_queue_details_summary::buildCollectedInvoiceSummary([
|
|
'status' => $status,
|
|
'payload' => null,
|
|
'result' => null,
|
|
'error_message' => null,
|
|
'progress_message' => null,
|
|
]);
|
|
|
|
expect($summary['message'])->toBe($expected);
|
|
}
|
|
});
|
|
|
|
it('handles object payload/result values and malformed fields without throwing', function (): void {
|
|
$summary = economic_transfer_queue_details_summary::buildCollectedInvoiceSummary([
|
|
'status' => economic_transfer_queue::STATUS_COMPLETED,
|
|
'payload' => (object)[
|
|
'collected_invoice_id' => '501',
|
|
'send_as_is' => 'invalid',
|
|
'requested_by' => '-1',
|
|
],
|
|
'result' => (object)[
|
|
'draft_invoice_id' => '44',
|
|
'booked_invoice_id' => '55',
|
|
'total_net_amount' => 'invalid',
|
|
'user' => (object)[
|
|
'customer_number' => '9345',
|
|
'company_name' => 'Acme Carrier',
|
|
],
|
|
],
|
|
'error_message' => null,
|
|
]);
|
|
|
|
expect($summary['target'])->toBe([
|
|
'collected_invoice_id' => 501,
|
|
'send_as_is' => null,
|
|
'requested_by' => null,
|
|
]);
|
|
expect($summary['customer'])->toBe([
|
|
'customer_number' => 9345,
|
|
'name' => 'Acme Carrier',
|
|
]);
|
|
expect($summary['outcome'])->toBe([
|
|
'economic_invoice_draft_id' => 44,
|
|
'economic_invoice_booked_id' => 55,
|
|
'external_id' => null,
|
|
'total_net_amount' => null,
|
|
'order_count' => null,
|
|
]);
|
|
expect($summary['raw_available'])->toBe([
|
|
'payload' => true,
|
|
'result' => true,
|
|
]);
|
|
});
|