gitlab-org--gitlab-foss/spec/frontend/runner/components/runner_type_badge_spec.js

60 lines
1.6 KiB
JavaScript

import { GlBadge } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
import RunnerTypeBadge from '~/runner/components/runner_type_badge.vue';
import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
import { INSTANCE_TYPE, GROUP_TYPE, PROJECT_TYPE } from '~/runner/constants';
describe('RunnerTypeBadge', () => {
let wrapper;
const findBadge = () => wrapper.findComponent(GlBadge);
const getTooltip = () => getBinding(findBadge().element, 'gl-tooltip');
const createComponent = ({ props = {} } = {}) => {
wrapper = shallowMount(RunnerTypeBadge, {
propsData: {
...props,
},
directives: {
GlTooltip: createMockDirective(),
},
});
};
afterEach(() => {
wrapper.destroy();
});
describe.each`
type | text
${INSTANCE_TYPE} | ${'shared'}
${GROUP_TYPE} | ${'group'}
${PROJECT_TYPE} | ${'specific'}
`('displays $type runner', ({ type, text }) => {
beforeEach(() => {
createComponent({ props: { type } });
});
it(`as "${text}" with an "info" variant`, () => {
expect(findBadge().text()).toBe(text);
expect(findBadge().props('variant')).toBe('info');
});
it('with a tooltip', () => {
expect(getTooltip().value).toBeDefined();
});
});
it('validation fails for an incorrect type', () => {
expect(() => {
createComponent({ props: { type: 'AN_UNKNOWN_VALUE' } });
}).toThrow();
});
it('does not render content when type is missing', () => {
createComponent({ props: { type: undefined } });
expect(findBadge().exists()).toBe(false);
});
});