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

87 lines
3.1 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\SalesProspect;
use App\Models\SalesUser;
use App\Services\Sales\ProspectRubricBackfill;
use Illuminate\Foundation\Testing\DatabaseTransactions;
uses(DatabaseTransactions::class);
function prb_user(): SalesUser
{
return SalesUser::create([
'name' => 'U '.uniqid(), 'email' => 'prb'.uniqid().'@s.local',
'password' => bcrypt('secret'), 'role' => 'manager', 'is_active' => true,
]);
}
test('находит по ИНН', function () {
$p = SalesProspect::factory()->for(prb_user(), 'salesUser')
->create(['inn' => '7705123456', 'rubric' => null]);
$res = app(ProspectRubricBackfill::class)->apply([
['rubric' => 'Окна', 'inn' => '7705123456'],
]);
expect($p->fresh()->rubric)->toBe('Окна')
->and($res['filled'])->toBe(1);
});
test('находит по сайту, не глядя на схему, www и путь', function () {
$p = SalesProspect::factory()->for(prb_user(), 'salesUser')
->create(['inn' => null, 'site' => 'https://WWW.Okoniks.ru/about', 'rubric' => null]);
app(ProspectRubricBackfill::class)->apply([
['rubric' => 'Окна', 'site' => 'okoniks.ru'],
]);
expect($p->fresh()->rubric)->toBe('Окна');
});
test('находит по названию и городу', function () {
$p = SalesProspect::factory()->for(prb_user(), 'salesUser')
->create(['inn' => null, 'site' => null, 'firm_name' => 'ООО «Оконикс»', 'city' => 'Мытищи', 'rubric' => null]);
app(ProspectRubricBackfill::class)->apply([
['rubric' => 'Окна', 'firm_name' => 'ООО Оконикс', 'city' => 'мытищи'],
]);
expect($p->fresh()->rubric)->toBe('Окна');
});
test('уже проставленную нишу не трогает', function () {
$p = SalesProspect::factory()->for(prb_user(), 'salesUser')
->create(['inn' => '7705999999', 'rubric' => 'Кровля']);
$res = app(ProspectRubricBackfill::class)->apply([
['rubric' => 'Окна', 'inn' => '7705999999'],
]);
expect($p->fresh()->rubric)->toBe('Кровля')
->and($res['filled'])->toBe(0)
->and($res['not_found'])->toBe(1);
});
test('одна фирма у двух менеджеров — ниша обеим', function () {
$a = SalesProspect::factory()->for(prb_user(), 'salesUser')->create(['inn' => '7705777777', 'rubric' => null]);
$b = SalesProspect::factory()->for(prb_user(), 'salesUser')->create(['inn' => '7705777777', 'rubric' => null]);
$res = app(ProspectRubricBackfill::class)->apply([
['rubric' => 'Окна', 'inn' => '7705777777'],
]);
expect($a->fresh()->rubric)->toBe('Окна')
->and($b->fresh()->rubric)->toBe('Окна')
->and($res['filled'])->toBe(2);
});
test('ничего не совпало — считаем непроставленным', function () {
$res = app(ProspectRubricBackfill::class)->apply([
['rubric' => 'Окна', 'inn' => '9999999999'],
]);
expect($res['filled'])->toBe(0)->and($res['not_found'])->toBe(1);
});