first commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { searchRecipes } from '../public/js/recipe-search.js';
|
||||
|
||||
function recipe(id, overrides = {}) {
|
||||
return {
|
||||
_id: id,
|
||||
title: '기본 레시피',
|
||||
summary: null,
|
||||
tags: [],
|
||||
ingredientGroups: [{ name: '재료', items: [] }],
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
|
||||
test('재료 정확 일치부터 부분 일치, 제목, 태그, 요약 순으로 검색한다', () => {
|
||||
const recipes = [
|
||||
recipe('summary', { summary: '감자를 맛있게 먹는 방법' }),
|
||||
recipe('tag', { tags: ['감자'] }),
|
||||
recipe('title', { title: '감자 수프' }),
|
||||
recipe('partial', {
|
||||
ingredientGroups: [{ name: '재료', items: [{ name: '알감자' }] }],
|
||||
}),
|
||||
recipe('exact', {
|
||||
ingredientGroups: [{ name: '재료', items: [{ name: '감자' }, { name: '감자전분' }] }],
|
||||
}),
|
||||
];
|
||||
|
||||
const matches = searchRecipes(recipes, ' 감자 ');
|
||||
|
||||
assert.deepEqual(matches.map(({ recipe: item }) => item._id), [
|
||||
'exact',
|
||||
'partial',
|
||||
'title',
|
||||
'tag',
|
||||
'summary',
|
||||
]);
|
||||
assert.deepEqual(matches[0].matchedIngredients, ['감자', '감자전분']);
|
||||
});
|
||||
|
||||
test('검색어가 없으면 기존 레시피 순서를 유지한다', () => {
|
||||
const recipes = [recipe('new'), recipe('old')];
|
||||
assert.deepEqual(
|
||||
searchRecipes(recipes, '').map(({ recipe: item }) => item._id),
|
||||
['new', 'old'],
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user