Files
portal/app/tests/Feature/Sales/SmsOperatorRoutingTest.php
T

43 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\SalesAdAudiencePhone;
use App\Services\Sms\OperatorNormalizer;
use App\Services\Sms\Providers\MtsSmsProvider;
use App\Services\Sms\Providers\SmscSmsProvider;
use App\Services\Sms\SmsRecipientSelector;
use App\Services\Sms\SmsRouter;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\Concerns\SharesSupplierPdo;
uses(DatabaseTransactions::class, SharesSupplierPdo::class);
function routing_router(): SmsRouter
{
return new SmsRouter([
new SmscSmsProvider('l', 'p', ['*'], ['*' => 300]),
new MtsSmsProvider('t', ['mts'], ['*' => 400]),
]);
}
it('МТС-номер (как его пишет ДаДата) маршрутизируется на канал МТС', function () {
SalesAdAudiencePhone::create([
'phone' => '79990000010', 'expires_at' => now()->addDays(30),
'state' => 'active', 'operator' => 'ПАО "МТС"', 'phone_type' => 'mobile',
]);
$selector = new SmsRecipientSelector(routing_router(), new OperatorNormalizer);
$plan = $selector->build(['79990000010']);
expect($plan->sendable)->toHaveCount(1);
$canonical = (new OperatorNormalizer)->canonical('ПАО "МТС"');
expect(routing_router()->pick($canonical)?->key())->toBe('mts');
});
it('чужой оператор уходит на универсал (СМС-центр)', function () {
$canonical = (new OperatorNormalizer)->canonical('МегаФон');
expect(routing_router()->pick($canonical)?->key())->toBe('smsc');
});