43 lines
1.5 KiB
PHP
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');
|
|
});
|