47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
|
import { shallowMount, mount } from '@vue/test-utils';
|
||
|
import RunnerStats from '~/runner/components/stat/runner_stats.vue';
|
||
|
import RunnerStatusStat from '~/runner/components/stat/runner_status_stat.vue';
|
||
|
import { STATUS_ONLINE, STATUS_OFFLINE, STATUS_STALE } from '~/runner/constants';
|
||
|
|
||
|
describe('RunnerStats', () => {
|
||
|
let wrapper;
|
||
|
|
||
|
const findRunnerStatusStatAt = (i) => wrapper.findAllComponents(RunnerStatusStat).at(i);
|
||
|
|
||
|
const createComponent = ({ props = {}, mountFn = shallowMount } = {}) => {
|
||
|
wrapper = mountFn(RunnerStats, {
|
||
|
propsData: {
|
||
|
onlineRunnersCount: 3,
|
||
|
offlineRunnersCount: 2,
|
||
|
staleRunnersCount: 1,
|
||
|
...props,
|
||
|
},
|
||
|
});
|
||
|
};
|
||
|
|
||
|
afterEach(() => {
|
||
|
wrapper.destroy();
|
||
|
});
|
||
|
|
||
|
it('Displays all the stats', () => {
|
||
|
createComponent({ mountFn: mount });
|
||
|
|
||
|
const stats = wrapper.text();
|
||
|
|
||
|
expect(stats).toMatch('Online runners 3');
|
||
|
expect(stats).toMatch('Offline runners 2');
|
||
|
expect(stats).toMatch('Stale runners 1');
|
||
|
});
|
||
|
|
||
|
it.each`
|
||
|
i | status
|
||
|
${0} | ${STATUS_ONLINE}
|
||
|
${1} | ${STATUS_OFFLINE}
|
||
|
${2} | ${STATUS_STALE}
|
||
|
`('Displays status types at index $i', ({ i, status }) => {
|
||
|
createComponent();
|
||
|
|
||
|
expect(findRunnerStatusStatAt(i).props('status')).toBe(status);
|
||
|
});
|
||
|
});
|