69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
|
import Vue from 'vue';
|
||
|
|
||
|
import functionsComponent from '~/serverless/components/functions.vue';
|
||
|
import mountComponent from 'spec/helpers/vue_mount_component_helper';
|
||
|
import ServerlessStore from '~/serverless/stores/serverless_store';
|
||
|
|
||
|
import { mockServerlessFunctions } from '../mock_data';
|
||
|
|
||
|
const createComponent = (
|
||
|
functions,
|
||
|
installed = true,
|
||
|
loadingData = true,
|
||
|
hasFunctionData = true,
|
||
|
) => {
|
||
|
const component = Vue.extend(functionsComponent);
|
||
|
|
||
|
return mountComponent(component, {
|
||
|
functions,
|
||
|
installed,
|
||
|
clustersPath: '/testClusterPath',
|
||
|
helpPath: '/helpPath',
|
||
|
loadingData,
|
||
|
hasFunctionData,
|
||
|
});
|
||
|
};
|
||
|
|
||
|
describe('functionsComponent', () => {
|
||
|
it('should render empty state when Knative is not installed', () => {
|
||
|
const vm = createComponent({}, false);
|
||
|
|
||
|
expect(vm.$el.querySelector('div.row').classList.contains('js-empty-state')).toBe(true);
|
||
|
expect(vm.$el.querySelector('h4.state-title').innerHTML.trim()).toEqual(
|
||
|
'Getting started with serverless',
|
||
|
);
|
||
|
|
||
|
vm.$destroy();
|
||
|
});
|
||
|
|
||
|
it('should render a loading component', () => {
|
||
|
const vm = createComponent({});
|
||
|
|
||
|
expect(vm.$el.querySelector('.gl-responsive-table-row')).not.toBe(null);
|
||
|
expect(vm.$el.querySelector('div.animation-container')).not.toBe(null);
|
||
|
});
|
||
|
|
||
|
it('should render empty state when there is no function data', () => {
|
||
|
const vm = createComponent({}, true, false, false);
|
||
|
|
||
|
expect(
|
||
|
vm.$el.querySelector('.empty-state, .js-empty-state').classList.contains('js-empty-state'),
|
||
|
).toBe(true);
|
||
|
|
||
|
expect(vm.$el.querySelector('h4.state-title').innerHTML.trim()).toEqual(
|
||
|
'No functions available',
|
||
|
);
|
||
|
|
||
|
vm.$destroy();
|
||
|
});
|
||
|
|
||
|
it('should render the functions list', () => {
|
||
|
const store = new ServerlessStore(false, '/cluster_path', 'help_path');
|
||
|
store.updateFunctionsFromServer(mockServerlessFunctions);
|
||
|
const vm = createComponent(store.state.functions, true, false);
|
||
|
|
||
|
expect(vm.$el.querySelector('div.groups-list-tree-container')).not.toBe(null);
|
||
|
expect(vm.$el.querySelector('#env-global').classList.contains('has-children')).toBe(true);
|
||
|
});
|
||
|
});
|