fix(projects): находить проекты с кириллицей без учёта регистра

SQLite LOWER() и LIKE понижают только ASCII, поэтому «Сайт и API» не
находился и каждый новый VPS с таким проектом создавал дубль; подсказки
по «сай» тоже были пустыми. Сравнение перенесено в JS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
DenozordecandClaude Opus 5.5 committed 2026-11-06 22:58:30 +07:00
1 parent 5e29ff7ec3
commit d0e262c41d
2 files changed
+27 -23

No files matched your search

+12
View File
@@ -30,6 +30,18 @@ describe('projects routes', () => {
expect(body[0]?.color).toBe('#ff0000')
})
it('reuses a Cyrillic project regardless of case and suggests it', async () => {
projectsRepository.create({ name: 'Сайт и API' })
for (const project of ['Сайт и API', 'сайт и api']) {
const res = await app.inject({ method: 'POST', url: '/api/vps', payload: { ip: '10.0.0.1', project } })
expect(res.statusCode).toBe(201)
}
const list = (await app.inject({ url: '/api/projects' })).json() as { name: string }[]
expect(list.map((p) => p.name)).toEqual(['Сайт и API'])
const sug = (await app.inject({ url: `/api/projects/suggest?q=${encodeURIComponent('сай')}` })).json() as { name: string }[]
expect(sug.map((p) => p.name)).toEqual(['Сайт и API'])
})
it('creates project with color and notes', async () => {
const res = await app.inject({
method: 'POST',