import { describe, it, expect } from 'vitest'; import { resolveReferer } from '../resolve-referer'; describe('resolveReferer', () => { it('категория → referer типа category с декодированным slug', () => { expect(resolveReferer('categories-slug', { slug: 'big-tits' })) .toEqual({ type: 'category', value: 'big tits' }); }); it('тег → referer типа tag', () => { expect(resolveReferer('tag-tag', { tag: 'anal' })) .toEqual({ type: 'tag', value: 'anal' }); }); it('тег внутри модели → referer типа tag', () => { expect(resolveReferer('models-slug-tag-tag', { slug: 'john-doe', tag: 'solo' })) .toEqual({ type: 'tag', value: 'solo' }); }); it('поиск → referer типа search', () => { expect(resolveReferer('search-slug', { slug: 'gay-porn' })) .toEqual({ type: 'search', value: 'gay porn' }); }); it('вкладки поиска (videos/models) → тот же search-referer', () => { expect(resolveReferer('search-slug-videos', { slug: 'twink' })) .toEqual({ type: 'search', value: 'twink' }); expect(resolveReferer('search-slug-models', { slug: 'twink' })) .toEqual({ type: 'search', value: 'twink' }); }); it('снимает суффикс локали перед лукапом', () => { expect(resolveReferer('categories-slug___zh-hans', { slug: 'bdsm' })) .toEqual({ type: 'category', value: 'bdsm' }); }); it('декодирует подчёркивания и тильды как useSlug (fromSlug)', () => { expect(resolveReferer('categories-slug', { slug: 'a_b~c' })) .toEqual({ type: 'category', value: 'a-b_c' }); }); it('роут не из листинга (video→video) → null', () => { expect(resolveReferer('videos-slug', { slug: 'some-video' })).toBeNull(); }); it('главная → null', () => { expect(resolveReferer('index', {})).toBeNull(); }); it('листинговый роут без нужного параметра → null', () => { expect(resolveReferer('categories-slug', {})).toBeNull(); }); it('пустое значение параметра → null', () => { expect(resolveReferer('tag-tag', { tag: '' })).toBeNull(); }); });