diff options
Diffstat (limited to 'spec/frontend/default/components/table_of_contents_list_spec.js')
-rw-r--r-- | spec/frontend/default/components/table_of_contents_list_spec.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/frontend/default/components/table_of_contents_list_spec.js b/spec/frontend/default/components/table_of_contents_list_spec.js new file mode 100644 index 00000000..2d69f880 --- /dev/null +++ b/spec/frontend/default/components/table_of_contents_list_spec.js @@ -0,0 +1,46 @@ +import { mount } from '@vue/test-utils'; +import { parseTOC } from '../../../../content/frontend/shared/dom_parse_toc'; +import TableOfContentsList from '../../../../content/frontend/default/components/table_of_contents_list.vue'; +import { createExampleToc } from '../../shared/toc_helper'; + +describe('frontend/default/components/table_of_contents_list', () => { + let wrapper; + + const createComponent = (props = {}) => { + wrapper = mount(TableOfContentsList, { + propsData: { + ...props, + }, + }); + }; + + const findItemsData = () => parseTOC(wrapper.element); + + afterEach(() => { + wrapper.destroy(); + wrapper = null; + }); + + describe('with items', () => { + let items; + + beforeEach(() => { + items = createExampleToc(); + createComponent({ items }); + }); + + it('renders all items', () => { + expect(findItemsData()).toEqual(items); + }); + }); + + describe('with empty items', () => { + beforeEach(() => { + createComponent({ items: [] }); + }); + + it('shows empty ul', () => { + expect(wrapper.element).toMatchSnapshot(); + }); + }); +}); |