2021-03-08 18:12:59 +05:30
|
|
|
import { GlAlert, GlLink } from '@gitlab/ui';
|
2021-03-11 19:13:27 +05:30
|
|
|
import { shallowMount, mount } from '@vue/test-utils';
|
2021-03-08 18:12:59 +05:30
|
|
|
import CiLint from '~/pipeline_editor/components/lint/ci_lint.vue';
|
|
|
|
import { CI_CONFIG_STATUS_INVALID } from '~/pipeline_editor/constants';
|
|
|
|
import { mergeUnwrappedCiConfig, mockLintHelpPagePath } from '../../mock_data';
|
|
|
|
|
|
|
|
describe('~/pipeline_editor/components/lint/ci_lint.vue', () => {
|
|
|
|
let wrapper;
|
|
|
|
|
|
|
|
const createComponent = (props = {}, mountFn = shallowMount) => {
|
|
|
|
wrapper = mountFn(CiLint, {
|
|
|
|
provide: {
|
|
|
|
lintHelpPagePath: mockLintHelpPagePath,
|
|
|
|
},
|
|
|
|
propsData: {
|
|
|
|
ciConfig: mergeUnwrappedCiConfig(),
|
|
|
|
...props,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const findAllByTestId = (selector) => wrapper.findAll(`[data-testid="${selector}"]`);
|
|
|
|
const findAlert = () => wrapper.find(GlAlert);
|
|
|
|
const findLintParameters = () => findAllByTestId('ci-lint-parameter');
|
|
|
|
const findLintParameterAt = (i) => findLintParameters().at(i);
|
|
|
|
const findLintValueAt = (i) => findAllByTestId('ci-lint-value').at(i);
|
|
|
|
|
|
|
|
afterEach(() => {
|
|
|
|
wrapper.destroy();
|
|
|
|
wrapper = null;
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('Valid Results', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
createComponent({}, mount);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('displays valid results', () => {
|
|
|
|
expect(findAlert().text()).toMatch('Status: Syntax is correct.');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('displays link to the right help page', () => {
|
|
|
|
expect(findAlert().find(GlLink).attributes('href')).toBe(mockLintHelpPagePath);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('displays jobs', () => {
|
|
|
|
expect(findLintParameters()).toHaveLength(3);
|
|
|
|
|
|
|
|
expect(findLintParameterAt(0).text()).toBe('Test Job - job_test_1');
|
|
|
|
expect(findLintParameterAt(1).text()).toBe('Test Job - job_test_2');
|
|
|
|
expect(findLintParameterAt(2).text()).toBe('Build Job - job_build');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('displays jobs details', () => {
|
|
|
|
expect(findLintParameters()).toHaveLength(3);
|
|
|
|
|
|
|
|
expect(findLintValueAt(0).text()).toMatchInterpolatedText(
|
|
|
|
'echo "test 1" Only policy: branches, tags When: on_success',
|
|
|
|
);
|
|
|
|
expect(findLintValueAt(1).text()).toMatchInterpolatedText(
|
|
|
|
'echo "test 2" Only policy: branches, tags When: on_success',
|
|
|
|
);
|
|
|
|
expect(findLintValueAt(2).text()).toMatchInterpolatedText(
|
|
|
|
'echo "build" Only policy: branches, tags When: on_success',
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('displays invalid results', () => {
|
|
|
|
createComponent(
|
|
|
|
{
|
|
|
|
ciConfig: mergeUnwrappedCiConfig({
|
|
|
|
status: CI_CONFIG_STATUS_INVALID,
|
|
|
|
}),
|
|
|
|
},
|
|
|
|
mount,
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(findAlert().text()).toMatch('Status: Syntax is incorrect.');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|