61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
|
|
import { describe, expect, it } from 'vitest'
|
|||
|
|
import {
|
|||
|
|
buildSkillCatalogTree,
|
|||
|
|
collectSkillLeavesFromTree,
|
|||
|
|
filterSkillTreeByQuery,
|
|||
|
|
skillCatalogPathLabel,
|
|||
|
|
} from './skillCatalogTree.js'
|
|||
|
|
|
|||
|
|
const sample = [
|
|||
|
|
{
|
|||
|
|
id: 1,
|
|||
|
|
name: 'Dachi Waza',
|
|||
|
|
main_category_id: 10,
|
|||
|
|
category_id: 20,
|
|||
|
|
catalog_main_category_name: 'Karate',
|
|||
|
|
catalog_main_sort: 1,
|
|||
|
|
catalog_category_name: 'Kihon',
|
|||
|
|
catalog_category_sort: 2,
|
|||
|
|
sort_order: 1,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
name: 'Kata Ablauf',
|
|||
|
|
main_category_id: 10,
|
|||
|
|
category_id: 21,
|
|||
|
|
catalog_main_category_name: 'Karate',
|
|||
|
|
catalog_main_sort: 1,
|
|||
|
|
catalog_category_name: 'Kata',
|
|||
|
|
catalog_category_sort: 1,
|
|||
|
|
sort_order: 1,
|
|||
|
|
},
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
describe('skillCatalogTree', () => {
|
|||
|
|
it('buildSkillCatalogTree groups by main and category', () => {
|
|||
|
|
const tree = buildSkillCatalogTree(sample)
|
|||
|
|
expect(tree).toHaveLength(1)
|
|||
|
|
expect(tree[0].label).toBe('Karate')
|
|||
|
|
expect(tree[0].children).toHaveLength(2)
|
|||
|
|
expect(tree[0].children[0].label).toBe('Kata')
|
|||
|
|
expect(tree[0].children[0].children[0].skillId).toBe(2)
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
it('skillCatalogPathLabel', () => {
|
|||
|
|
expect(skillCatalogPathLabel(sample[0])).toBe('Karate › Kihon › Dachi Waza')
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
it('collectSkillLeavesFromTree respects exclude', () => {
|
|||
|
|
const tree = buildSkillCatalogTree(sample)
|
|||
|
|
const leaves = collectSkillLeavesFromTree(tree, [1])
|
|||
|
|
expect(leaves).toHaveLength(1)
|
|||
|
|
expect(leaves[0].id).toBe(2)
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
it('filterSkillTreeByQuery', () => {
|
|||
|
|
const tree = buildSkillCatalogTree(sample)
|
|||
|
|
const filtered = filterSkillTreeByQuery(tree, 'dachi')
|
|||
|
|
expect(filtered[0].children.some((c) => c.children?.some((s) => s.skillId === 1))).toBe(true)
|
|||
|
|
})
|
|||
|
|
})
|