import { describe, it, expect } from 'vitest'; import { parseSearchQuery } from './searchQuery'; describe('parseSearchQuery', () => { it('separa filtro do texto', () => { expect(parseSearchQuery('from:ana bolo')).toEqual({ text: 'bolo', from: 'ana' }); }); it('aceita as chaves em português', () => { expect(parseSearchQuery('de:ana antes:2026-01-31')).toEqual({ text: '', from: 'ana', before: '2026-01-31', }); }); it('traduz os valores de has para o que a API espera', () => { expect(parseSearchQuery('contém:imagem').has).toBe('image'); expect(parseSearchQuery('has:file').has).toBe('file'); }); it('deixa token desconhecido virar texto de busca', () => { // Uma URL não pode ser confundida com filtro, senão fica impossível // procurar por um link que alguém mandou. expect(parseSearchQuery('olha http://exemplo.com').text).toBe('olha http://exemplo.com'); expect(parseSearchQuery('coisa:aleatoria').text).toBe('coisa:aleatoria'); }); it('ignora filtro sem valor', () => { expect(parseSearchQuery('from:').text).toBe('from:'); expect(parseSearchQuery('from:').from).toBeUndefined(); }); it('combina vários filtros com o texto', () => { expect(parseSearchQuery('de:joao contém:link reunião')).toEqual({ text: 'reunião', from: 'joao', has: 'link', }); }); });