|
|
|
import { resolveHeaders } from 'client/theme-default/composables/outline'
|
|
|
|
|
|
|
|
const element = {
|
|
|
|
classList: {
|
|
|
|
contains: () => false
|
|
|
|
}
|
|
|
|
} as unknown as HTMLHeadElement
|
|
|
|
|
|
|
|
describe('client/theme-default/composables/outline', () => {
|
|
|
|
describe('resolveHeader', () => {
|
|
|
|
test('levels range', () => {
|
|
|
|
expect(
|
|
|
|
resolveHeaders(
|
|
|
|
[
|
|
|
|
{
|
|
|
|
level: 2,
|
|
|
|
title: 'h2 - 1',
|
|
|
|
link: '#h2-1',
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 3,
|
|
|
|
title: 'h3 - 1',
|
|
|
|
link: '#h3-1',
|
|
|
|
element
|
|
|
|
}
|
|
|
|
],
|
|
|
|
[2, 3]
|
|
|
|
)
|
|
|
|
).toEqual([
|
|
|
|
{
|
|
|
|
level: 2,
|
|
|
|
title: 'h2 - 1',
|
|
|
|
link: '#h2-1',
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
level: 3,
|
|
|
|
title: 'h3 - 1',
|
|
|
|
link: '#h3-1',
|
|
|
|
children: [],
|
|
|
|
element
|
|
|
|
}
|
|
|
|
],
|
|
|
|
element
|
|
|
|
}
|
|
|
|
])
|
|
|
|
})
|
|
|
|
|
|
|
|
test('specific level', () => {
|
|
|
|
expect(
|
|
|
|
resolveHeaders(
|
|
|
|
[
|
|
|
|
{
|
|
|
|
level: 2,
|
|
|
|
title: 'h2 - 1',
|
|
|
|
link: '#h2-1',
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 3,
|
|
|
|
title: 'h3 - 1',
|
|
|
|
link: '#h3-1',
|
|
|
|
element
|
|
|
|
}
|
|
|
|
],
|
|
|
|
2
|
|
|
|
)
|
|
|
|
).toEqual([
|
|
|
|
{
|
|
|
|
level: 2,
|
|
|
|
title: 'h2 - 1',
|
|
|
|
link: '#h2-1',
|
|
|
|
children: [],
|
|
|
|
element
|
|
|
|
}
|
|
|
|
])
|
|
|
|
})
|
|
|
|
|
|
|
|
test('complex deep', () => {
|
|
|
|
expect(
|
|
|
|
resolveHeaders(
|
|
|
|
[
|
|
|
|
{
|
|
|
|
level: 2,
|
|
|
|
title: 'h2 - 1',
|
|
|
|
link: '#h2-1',
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 3,
|
|
|
|
title: 'h3 - 1',
|
|
|
|
link: '#h3-1',
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 4,
|
|
|
|
title: 'h4 - 1',
|
|
|
|
link: '#h4-1',
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 3,
|
|
|
|
title: 'h3 - 2',
|
|
|
|
link: '#h3-2',
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 4,
|
|
|
|
title: 'h4 - 2',
|
|
|
|
link: '#h4-2',
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 2,
|
|
|
|
title: 'h2 - 2',
|
|
|
|
link: '#h2-2',
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 3,
|
|
|
|
title: 'h3 - 3',
|
|
|
|
link: '#h3-3',
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 4,
|
|
|
|
title: 'h4 - 3',
|
|
|
|
link: '#h4-3',
|
|
|
|
element
|
|
|
|
}
|
|
|
|
],
|
|
|
|
'deep'
|
|
|
|
)
|
|
|
|
).toEqual([
|
|
|
|
{
|
|
|
|
level: 2,
|
|
|
|
title: 'h2 - 1',
|
|
|
|
link: '#h2-1',
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
level: 3,
|
|
|
|
title: 'h3 - 1',
|
|
|
|
link: '#h3-1',
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
level: 4,
|
|
|
|
title: 'h4 - 1',
|
|
|
|
link: '#h4-1',
|
|
|
|
children: [],
|
|
|
|
element
|
|
|
|
}
|
|
|
|
],
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 3,
|
|
|
|
title: 'h3 - 2',
|
|
|
|
link: '#h3-2',
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
level: 4,
|
|
|
|
title: 'h4 - 2',
|
|
|
|
link: '#h4-2',
|
|
|
|
children: [],
|
|
|
|
element
|
|
|
|
}
|
|
|
|
],
|
|
|
|
element
|
|
|
|
}
|
|
|
|
],
|
|
|
|
element
|
|
|
|
},
|
|
|
|
{
|
|
|
|
level: 2,
|
|
|
|
title: 'h2 - 2',
|
|
|
|
link: '#h2-2',
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
level: 3,
|
|
|
|
title: 'h3 - 3',
|
|
|
|
link: '#h3-3',
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
level: 4,
|
|
|
|
title: 'h4 - 3',
|
|
|
|
link: '#h4-3',
|
|
|
|
children: [],
|
|
|
|
element
|
|
|
|
}
|
|
|
|
],
|
|
|
|
element
|
|
|
|
}
|
|
|
|
],
|
|
|
|
element
|
|
|
|
}
|
|
|
|
])
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|