diff --git a/frontend/src/__tests__/newFeatures.test.js b/frontend/src/__tests__/newFeatures.test.js index 0150bae..8b50b8c 100644 --- a/frontend/src/__tests__/newFeatures.test.js +++ b/frontend/src/__tests__/newFeatures.test.js @@ -85,3 +85,51 @@ describe('EDITOR_ONLY_TAGS', () => { expect(EDITOR_ONLY_TAGS).toContain('已审核') }) }) + +// --------------------------------------------------------------------------- +// English search +// --------------------------------------------------------------------------- +describe('English search matching', () => { + const { oilEn } = require('../composables/useOilTranslation') + + it('oilEn returns English name for known oils', () => { + expect(oilEn('薰衣草')).toBe('Lavender') + expect(oilEn('茶树')).toBe('Tea Tree') + expect(oilEn('乳香')).toBe('Frankincense') + }) + + it('oilEn returns empty for unknown oils', () => { + expect(oilEn('不存在的油')).toBeFalsy() + }) + + it('English query detection', () => { + const isEn = (q) => /^[a-zA-Z\s]+$/.test(q) + expect(isEn('lavender')).toBe(true) + expect(isEn('Tea Tree')).toBe(true) + expect(isEn('薰衣草')).toBe(false) + expect(isEn('lav3')).toBe(false) + }) + + it('English matches oil name in recipe', () => { + const recipe = { + name: '助眠配方', + en_name: 'Sleep Aid Blend', + ingredients: [{ oil: '薰衣草', drops: 3 }], + tags: [] + } + const q = 'lavender' + const isEn = /^[a-zA-Z\s]+$/.test(q) + const enNameMatch = isEn && (recipe.en_name || '').toLowerCase().includes(q) + const oilEnMatch = isEn && recipe.ingredients.some(ing => (oilEn(ing.oil) || '').toLowerCase().includes(q)) + expect(oilEnMatch).toBe(true) + expect(enNameMatch).toBe(false) + }) + + it('English matches recipe en_name', () => { + const recipe = { name: '助眠', en_name: 'Sleep Aid Blend', ingredients: [], tags: [] } + const q = 'sleep' + const isEn = /^[a-zA-Z\s]+$/.test(q) + const enNameMatch = isEn && (recipe.en_name || '').toLowerCase().includes(q) + expect(enNameMatch).toBe(true) + }) +})