1cc1fc292a
Pint formatting (fully_qualified_strict_types и др.) + устранены 2 источниковых arrayValues.list (parseGibddRegions / buildPlan return — аргумент уже list). Production-код larastan-чист; test-only TestCall/Mockery (квирк #25) — baseline на чистом checkout при интеграции. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
47 lines
2.2 KiB
PHP
47 lines
2.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Services\Supplier\Import\SupplierImportMapper;
|
|
use Tests\TestCase;
|
|
|
|
uses(TestCase::class);
|
|
|
|
test('platformFromSrc maps rt/bl/mt to B1/B2/B3, others null', function (): void {
|
|
expect(SupplierImportMapper::platformFromSrc('rt'))->toBe('B1');
|
|
expect(SupplierImportMapper::platformFromSrc('bl'))->toBe('B2');
|
|
expect(SupplierImportMapper::platformFromSrc('mt'))->toBe('B3');
|
|
expect(SupplierImportMapper::platformFromSrc('dop2'))->toBeNull();
|
|
expect(SupplierImportMapper::platformFromSrc(''))->toBeNull();
|
|
});
|
|
|
|
test('signalTypeFromType maps calls/hosts/sms', function (): void {
|
|
expect(SupplierImportMapper::signalTypeFromType('calls'))->toBe('call');
|
|
expect(SupplierImportMapper::signalTypeFromType('hosts'))->toBe('site');
|
|
expect(SupplierImportMapper::signalTypeFromType('sms'))->toBe('sms');
|
|
expect(SupplierImportMapper::signalTypeFromType('unknown'))->toBeNull();
|
|
});
|
|
|
|
test('parseGibddRegions splits comma/space string of codes; empty → []', function (): void {
|
|
expect(SupplierImportMapper::parseGibddRegions('24'))->toBe([24]);
|
|
expect(SupplierImportMapper::parseGibddRegions('24,77'))->toBe([24, 77]);
|
|
expect(SupplierImportMapper::parseGibddRegions('24, 77 78'))->toBe([24, 77, 78]);
|
|
expect(SupplierImportMapper::parseGibddRegions(''))->toBe([]);
|
|
expect(SupplierImportMapper::parseGibddRegions(null))->toBe([]);
|
|
});
|
|
|
|
test('workdaysToMask converts string day list to bitmask (bit0=Mon)', function (): void {
|
|
expect(SupplierImportMapper::workdaysToMask(['1', '2', '3', '4', '5']))->toBe(31);
|
|
expect(SupplierImportMapper::workdaysToMask(['1', '2', '3', '4', '5', '6', '7']))->toBe(127);
|
|
expect(SupplierImportMapper::workdaysToMask([]))->toBe(127);
|
|
});
|
|
|
|
test('parseSmsContent splits sender+keyword; sender-only when no plus', function (): void {
|
|
expect(SupplierImportMapper::parseSmsContent('79001234567+KVARTIRA'))
|
|
->toBe(['sender' => '79001234567', 'keyword' => 'KVARTIRA']);
|
|
expect(SupplierImportMapper::parseSmsContent('79001234567'))
|
|
->toBe(['sender' => '79001234567', 'keyword' => null]);
|
|
expect(SupplierImportMapper::parseSmsContent(''))
|
|
->toBe(['sender' => '', 'keyword' => null]);
|
|
});
|