56 lines
2.0 KiB
PHP
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();
|
|
});
|