82 lines
2.2 KiB
JavaScript
82 lines
2.2 KiB
JavaScript
import Vue from 'vue';
|
|
|
|
import mountComponent from 'helpers/vue_mount_component_helper';
|
|
import itemStatsValueComponent from '~/groups/components/item_stats_value.vue';
|
|
|
|
const createComponent = ({ title, cssClass, iconName, tooltipPlacement, value }) => {
|
|
const Component = Vue.extend(itemStatsValueComponent);
|
|
|
|
return mountComponent(Component, {
|
|
title,
|
|
cssClass,
|
|
iconName,
|
|
tooltipPlacement,
|
|
value,
|
|
});
|
|
};
|
|
|
|
describe('ItemStatsValueComponent', () => {
|
|
describe('computed', () => {
|
|
let vm;
|
|
const itemConfig = {
|
|
title: 'Subgroups',
|
|
cssClass: 'number-subgroups',
|
|
iconName: 'folder',
|
|
tooltipPlacement: 'left',
|
|
};
|
|
|
|
describe('isValuePresent', () => {
|
|
it('returns true if non-empty `value` is present', () => {
|
|
vm = createComponent({ ...itemConfig, value: 10 });
|
|
|
|
expect(vm.isValuePresent).toBeTruthy();
|
|
});
|
|
|
|
it('returns false if empty `value` is present', () => {
|
|
vm = createComponent(itemConfig);
|
|
|
|
expect(vm.isValuePresent).toBeFalsy();
|
|
});
|
|
|
|
afterEach(() => {
|
|
vm.$destroy();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('template', () => {
|
|
let vm;
|
|
beforeEach(() => {
|
|
vm = createComponent({
|
|
title: 'Subgroups',
|
|
cssClass: 'number-subgroups',
|
|
iconName: 'folder',
|
|
tooltipPlacement: 'left',
|
|
value: 10,
|
|
});
|
|
});
|
|
|
|
afterEach(() => {
|
|
vm.$destroy();
|
|
});
|
|
|
|
it('renders component element correctly', () => {
|
|
expect(vm.$el.classList.contains('number-subgroups')).toBeTruthy();
|
|
expect(vm.$el.querySelectorAll('svg').length).toBeGreaterThan(0);
|
|
expect(vm.$el.querySelectorAll('.stat-value').length).toBeGreaterThan(0);
|
|
});
|
|
|
|
it('renders element tooltip correctly', () => {
|
|
expect(vm.$el.dataset.originalTitle).toBe('Subgroups');
|
|
expect(vm.$el.dataset.placement).toBe('left');
|
|
});
|
|
|
|
it('renders element icon correctly', () => {
|
|
expect(vm.$el.querySelector('svg').getAttribute('data-testid')).toBe('folder-icon');
|
|
});
|
|
|
|
it('renders value count correctly', () => {
|
|
expect(vm.$el.querySelector('.stat-value').innerText.trim()).toContain('10');
|
|
});
|
|
});
|
|
});
|