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

56 lines
2.0 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\SalesAdAudienceFirm;
use App\Models\SalesProspect;
use App\Models\SalesUser;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\Concerns\SharesSupplierPdo;
// SharesSupplierPdo: без него записи в pgsql_supplier (фирмы прогрева) НЕ откатываются
// и остаются в общей тестовой базе — соседние тесты потом считают чужие строки.
uses(DatabaseTransactions::class, SharesSupplierPdo::class);
function aar_user(string $role): SalesUser
{
return SalesUser::create([
'name' => 'U '.uniqid(), 'email' => 'aar'.uniqid().'@s.local',
'password' => bcrypt('secret'), 'role' => $role, 'is_active' => true,
]);
}
test('назначение фирмы менеджеру переносит нишу в карточку', function () {
$head = aar_user('head');
$mgr = aar_user('manager');
$firm = SalesAdAudienceFirm::create([
'firm_name' => 'Стома плюс',
'firm_inn' => '7704'.random_int(100000, 999999),
'rubric' => 'Частные стоматологии',
]);
$this->actingAs($head, 'sales')
->postJson("/api/sales/ad-audience/firms/{$firm->id}/assign", ['sales_user_id' => $mgr->id])
->assertOk();
$prospectId = $firm->fresh()->prospect_id;
expect(SalesProspect::find($prospectId)->rubric)->toBe('Частные стоматологии');
});
test('фирма без ниши заводит карточку без ниши', function () {
$head = aar_user('head');
$mgr = aar_user('manager');
$firm = SalesAdAudienceFirm::create([
'firm_name' => 'Без ниши',
'firm_inn' => '7705'.random_int(100000, 999999),
]);
$this->actingAs($head, 'sales')
->postJson("/api/sales/ad-audience/firms/{$firm->id}/assign", ['sales_user_id' => $mgr->id])
->assertOk();
expect(SalesProspect::find($firm->fresh()->prospect_id)->rubric)->toBeNull();
});