spec/frontend/default/components/tabs_section_spec.js (47 lines of code) (raw):
/**
* @jest-environment jsdom
*/
import { shallowMount } from '@vue/test-utils';
import { GlTabs } from '@gitlab/ui';
import TabsSection from '../../../../content/frontend/default/components/tabs_section.vue';
const getPropsData = (overrides = {}) => {
const defaultProps = {
tabTitles: ['Tab 1', 'Tab 2'],
tabContents: ['Content 1', 'Content 2'],
responsive: true,
};
return { ...defaultProps, ...overrides };
};
describe('content/frontend/default/components/tabs_section.vue', () => {
let wrapper;
beforeEach(() => {
wrapper = shallowMount(TabsSection, {
propsData: getPropsData(),
});
});
it('does not render tabs with invalid props', () => {
wrapper = shallowMount(TabsSection, {
propsData: getPropsData({
tabTitles: ['Tab 1'],
}),
});
expect(wrapper.findComponent(GlTabs).exists()).toBe(false);
});
it('isTabs is true if component is responsive and viewed at wide-width', () => {
wrapper.setData({ isWideScreen: true });
const result = wrapper.vm.isTabs;
expect(result).toBe(true);
});
it('isTabs is false if component is responsive and viewed at small-width', () => {
wrapper.setData({ isWideScreen: false });
const result = wrapper.vm.isTabs;
expect(result).toBe(false);
});
it('isTabs is true if component is not responsive', () => {
wrapper = shallowMount(TabsSection, {
propsData: getPropsData({
responsive: false,
}),
});
wrapper.setData({ isWideScreen: false });
const result = wrapper.vm.isTabs;
expect(result).toBe(true);
});
});