'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); });