0]), new T2SmsProvider('login', 'pass', ['tele2'], ['*' => 692]), ]); $overview = new ClientSmsSenderOverview( $router, new AllowedSmsOperators(new OperatorNormalizer), new ClientSmsSenderResolver, ); return collect($overview->forTenant($tenantId))->keyBy('operator')->all(); } function makeOverviewSender(?array $operators): Tenant { $tenant = Tenant::factory()->create(); ClientSmsSender::create([ 'tenant_id' => $tenant->id, 'name' => 'mybrand.ru', 'name_type' => ClientSmsSender::TYPE_WEBSITE, 'status' => ClientSmsSender::STATUS_ACTIVE, 'operators' => $operators, 'monthly_fee_rub' => '0.00', 'consent_at' => now(), ]); return $tenant; } it('показывает все четыре сети владельца, а не только те, куда можем', function () { $tenant = Tenant::factory()->create(); // Клиент должен видеть и недоступные сети — иначе он не понимает, куда // делась половина его базы. expect(array_keys(overviewFor((int) $tenant->id))) ->toBe(['mts', 'beeline', 'megafon', 'tele2']); }); it('своего имени нет — уйдёт от имени Лидерры', function () { $tenant = Tenant::factory()->create(); $row = overviewFor((int) $tenant->id)['mts']; expect($row['will_send'])->toBeTrue() ->and($row['reason'])->toBe('liderra_name') ->and($row['sender_name'])->toBeNull(); }); it('имя согласовано у этой сети — уйдёт под именем клиента', function () { $tenant = makeOverviewSender(['mts', 'tele2']); $row = overviewFor((int) $tenant->id)['tele2']; expect($row['will_send'])->toBeTrue() ->and($row['reason'])->toBe('own_name') ->and($row['sender_name'])->toBe('mybrand.ru'); }); it('имя есть, но у этой сети не согласовано — НЕ уйдёт', function () { $tenant = makeOverviewSender(['mts']); $row = overviewFor((int) $tenant->id)['tele2']; expect($row['will_send'])->toBeFalse() ->and($row['reason'])->toBe('name_not_approved'); }); it('канала к сети нет вовсе — НЕ уйдёт, и причина именно про канал', function () { $tenant = Tenant::factory()->create(); foreach (['beeline', 'megafon'] as $operator) { $row = overviewFor((int) $tenant->id)[$operator]; expect($row['will_send'])->toBeFalse() ->and($row['reason'])->toBe('no_channel'); } }); it('оператор вычеркнут владельцем — причина про запрет, а не про канал', function () { // Запрет важнее наличия канала: канал к МТС есть, но слать запрещено. ClientSmsSettings::query()->update(['allowed_operators' => ['tele2']]); $tenant = Tenant::factory()->create(); $row = overviewFor((int) $tenant->id)['mts']; expect($row['will_send'])->toBeFalse() ->and($row['reason'])->toBe('operator_denied'); });