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

49 lines
1.8 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
use App\Models\SalesAdAudiencePhone;
use App\Models\SalesSmsCampaign;
use App\Models\SalesSmsMessage;
use App\Models\SalesSmsOptout;
use App\Models\SalesSmsSender;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\Concerns\SharesSupplierPdo;
/**
* SharesSupplierPdo обязателен: модели sales_sms_* прибиты к pgsql_supplier
* (отдельный PDO), без шаринга DatabaseTransactions откатывал бы только
* соединение по умолчанию — записи текли бы из теста в тест.
*/
uses(DatabaseTransactions::class, SharesSupplierPdo::class);
it('все модели СМС живут на соединении поставщика', function () {
foreach ([SalesSmsSender::class, SalesSmsCampaign::class, SalesSmsMessage::class, SalesSmsOptout::class] as $class) {
expect((new $class)->getConnectionName())->toBe('pgsql_supplier');
}
});
it('связывает рассылку с её сообщениями', function () {
$campaign = SalesSmsCampaign::create([
'title' => 'Тест', 'body' => 'текст', 'created_by' => 1,
]);
SalesSmsMessage::create([
'campaign_id' => $campaign->id, 'phone' => '79990000001', 'status' => 'pending',
]);
expect($campaign->refresh()->messages)->toHaveCount(1);
});
it('сохраняет оператора и тип у номера прогрева', function () {
$phone = SalesAdAudiencePhone::create([
'phone' => '79990000002',
'expires_at' => now()->addDays(30),
'operator' => 'ВымпелКом',
'phone_type' => 'mobile',
]);
expect($phone->refresh()->operator)->toBe('ВымпелКом')
->and($phone->phone_type)->toBe('mobile');
});