feat(воронка): ключ сравнения ниш — регистр, ё, латинские двойники

This commit is contained in:
Дмитрий
2026-08-04 12:28:20 +03:00
parent fa4b9e83a4
commit 8d0b2be534
2 changed files with 68 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
use App\Support\RubricKey;
test('регистр, лишние пробелы и пунктуация ключ не меняют', function () {
expect(RubricKey::make('Окна'))->toBe(RubricKey::make(' окна '))
->and(RubricKey::make('Окна'))->toBe(RubricKey::make('«Окна».'))
->and(RubricKey::make('Ремонт, стройка'))->toBe(RubricKey::make('ремонт стройка'));
});
test('ё и е — одна буква', function () {
expect(RubricKey::make('Клёны'))->toBe(RubricKey::make('Клены'));
});
test('латинские двойники в русском слове приводятся к кириллице', function () {
// «Окнa» — последняя буква латинская.
expect(RubricKey::make("Окн\u{0061}"))->toBe(RubricKey::make('Окна'));
});
test('чисто латинское название не калечится', function () {
expect(RubricKey::make('SPA'))->toBe('spa')
->and(RubricKey::make('IT'))->toBe('it');
});
test('пустая строка даёт пустой ключ', function () {
expect(RubricKey::make(null))->toBe('')
->and(RubricKey::make(' '))->toBe('');
});