getSchemaBuilder()->hasTable($table))->toBeTrue("нет таблицы {$table}"); } }); it('заводит tenant_id во всех таблицах СМС — задел под клиентов', function () { $db = DB::connection('pgsql_supplier')->getSchemaBuilder(); foreach (['sales_sms_senders', 'sales_sms_campaigns', 'sales_sms_optouts'] as $table) { expect($db->hasColumn($table, 'tenant_id'))->toBeTrue("нет tenant_id в {$table}"); } }); it('добавляет оператора и тип номера в таблицу номеров прогрева', function () { $db = DB::connection('pgsql_supplier')->getSchemaBuilder(); expect($db->hasColumn('sales_ad_audience_phones', 'operator'))->toBeTrue(); expect($db->hasColumn('sales_ad_audience_phones', 'phone_type'))->toBeTrue(); }); it('запрещает два одинаковых номера внутри одной рассылки', function () { $db = DB::connection('pgsql_supplier'); $campaignId = $db->table('sales_sms_campaigns')->insertGetId([ 'title' => 'Проверка', 'body' => 'текст', 'status' => 'draft', 'created_by' => 1, ]); $row = [ 'campaign_id' => $campaignId, 'phone' => '79990000001', 'status' => 'pending', 'segments' => 1, 'cost_kopecks' => 0, ]; $db->table('sales_sms_messages')->insert($row); expect(fn () => $db->table('sales_sms_messages')->insert($row)) ->toThrow(QueryException::class); });