80 lines
2.4 KiB
JavaScript
80 lines
2.4 KiB
JavaScript
|
import { mountExtended } from 'helpers/vue_test_utils_helper';
|
||
|
import StepNav from '~/pipeline_wizard/components/step_nav.vue';
|
||
|
|
||
|
describe('Pipeline Wizard - Step Navigation Component', () => {
|
||
|
const defaultProps = { showBackButton: true, showNextButton: true };
|
||
|
|
||
|
let wrapper;
|
||
|
let prevButton;
|
||
|
let nextButton;
|
||
|
|
||
|
const createComponent = (props = {}) => {
|
||
|
wrapper = mountExtended(StepNav, {
|
||
|
propsData: {
|
||
|
...defaultProps,
|
||
|
...props,
|
||
|
},
|
||
|
});
|
||
|
prevButton = wrapper.findByTestId('back-button');
|
||
|
nextButton = wrapper.findByTestId('next-button');
|
||
|
};
|
||
|
|
||
|
afterEach(() => {
|
||
|
wrapper.destroy();
|
||
|
});
|
||
|
|
||
|
it.each`
|
||
|
scenario | showBackButton | showNextButton
|
||
|
${'does not show prev button'} | ${false} | ${false}
|
||
|
${'has prev, but not next'} | ${true} | ${false}
|
||
|
${'has next, but not prev'} | ${false} | ${true}
|
||
|
${'has both next and prev'} | ${true} | ${true}
|
||
|
`('$scenario', async ({ showBackButton, showNextButton }) => {
|
||
|
createComponent({ showBackButton, showNextButton });
|
||
|
|
||
|
expect(prevButton.exists()).toBe(showBackButton);
|
||
|
expect(nextButton.exists()).toBe(showNextButton);
|
||
|
});
|
||
|
|
||
|
it('shows the expected button text', () => {
|
||
|
createComponent();
|
||
|
|
||
|
expect(prevButton.text()).toBe('Back');
|
||
|
expect(nextButton.text()).toBe('Next');
|
||
|
});
|
||
|
|
||
|
it('emits "back" events when clicking prev button', async () => {
|
||
|
createComponent();
|
||
|
|
||
|
await prevButton.trigger('click');
|
||
|
expect(wrapper.emitted().back.length).toBe(1);
|
||
|
});
|
||
|
|
||
|
it('emits "next" events when clicking next button', async () => {
|
||
|
createComponent();
|
||
|
|
||
|
await nextButton.trigger('click');
|
||
|
expect(wrapper.emitted().next.length).toBe(1);
|
||
|
});
|
||
|
|
||
|
it('enables the next button if nextButtonEnabled ist set to true', async () => {
|
||
|
createComponent({ nextButtonEnabled: true });
|
||
|
|
||
|
expect(nextButton.attributes('disabled')).not.toBe('disabled');
|
||
|
});
|
||
|
|
||
|
it('disables the next button if nextButtonEnabled ist set to false', async () => {
|
||
|
createComponent({ nextButtonEnabled: false });
|
||
|
|
||
|
expect(nextButton.attributes('disabled')).toBe('disabled');
|
||
|
});
|
||
|
|
||
|
it('does not emit "next" event when clicking next button while nextButtonEnabled ist set to false', async () => {
|
||
|
createComponent({ nextButtonEnabled: false });
|
||
|
|
||
|
await nextButton.trigger('click');
|
||
|
|
||
|
expect(wrapper.emitted().next).toBe(undefined);
|
||
|
});
|
||
|
});
|