Commit 396122a5 authored by Payton Burdette's avatar Payton Burdette Committed by Natalia Tepluhina

Port spec to vue test utils

Move ci badge link spec over
to utilize vue test utils.
parent 8a65ba1f
import Vue from 'vue';
import mountComponent from 'helpers/vue_mount_component_helper';
import ciBadge from '~/vue_shared/components/ci_badge_link.vue';
import { shallowMount } from '@vue/test-utils';
import CiBadge from '~/vue_shared/components/ci_badge_link.vue';
import CiIcon from '~/vue_shared/components/ci_icon.vue';
describe('CI Badge Link Component', () => {
let CIBadge;
let vm;
let wrapper;
const statuses = {
canceled: {
......@@ -72,29 +71,30 @@ describe('CI Badge Link Component', () => {
},
};
beforeEach(() => {
CIBadge = Vue.extend(ciBadge);
});
const findIcon = () => wrapper.findComponent(CiIcon);
const createComponent = (propsData) => {
wrapper = shallowMount(CiBadge, { propsData });
};
afterEach(() => {
vm.$destroy();
wrapper.destroy();
wrapper = null;
});
it('should render each status badge', () => {
Object.keys(statuses).map((status) => {
vm = mountComponent(CIBadge, { status: statuses[status] });
it.each(Object.keys(statuses))('should render badge for status: %s', (status) => {
createComponent({ status: statuses[status] });
expect(vm.$el.getAttribute('href')).toEqual(statuses[status].details_path);
expect(vm.$el.textContent.trim()).toEqual(statuses[status].text);
expect(vm.$el.getAttribute('class')).toContain(`ci-status ci-${statuses[status].group}`);
expect(vm.$el.querySelector('svg')).toBeDefined();
return vm;
});
expect(wrapper.attributes('href')).toBe(statuses[status].details_path);
expect(wrapper.text()).toBe(statuses[status].text);
expect(wrapper.classes()).toContain('ci-status');
expect(wrapper.classes()).toContain(`ci-${statuses[status].group}`);
expect(findIcon().exists()).toBe(true);
});
it('should not render label', () => {
vm = mountComponent(CIBadge, { status: statuses.canceled, showText: false });
createComponent({ status: statuses.canceled, showText: false });
expect(vm.$el.textContent.trim()).toEqual('');
expect(wrapper.text()).toBe('');
});
});
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment