dashboard/shell/edit/__tests__/kontainerDriver.test.ts

111 lines
3.2 KiB
TypeScript

import { nextTick } from 'vue';
/* eslint-disable jest/no-hooks */
import { mount } from '@vue/test-utils';
import KontainerDriverEdit from '@shell/edit/kontainerDriver.vue';
import { _CREATE } from '@shell/config/query-params';
describe('view: kontainerdriver should', () => {
const url = 'http://test.com';
let wrapper: any;
const requiredSetup = () => ({
global: {
mocks: {
$store: {
getters: {
currentStore: () => 'current_store',
'current_store/schemaFor': jest.fn(),
'current_store/all': jest.fn(),
'i18n/t': (val: string) => val,
'i18n/exists': jest.fn(),
},
dispatch: jest.fn()
},
$route: { query: { AS: '' } },
$router: { applyQuery: jest.fn() },
},
},
propsData: {
value: {
spec: {
active: true,
checksum: '',
url: '',
uiUrl: '',
whitelistDomains: []
}
},
mode: _CREATE,
},
});
beforeEach(() => {
wrapper = mount(KontainerDriverEdit, { ...requiredSetup() });
});
afterEach(() => {
wrapper.unmount();
});
it('have "Create" button disabled before fields are filled in', () => {
const saveButton = wrapper.find('[data-testid="kontainer-driver-edit-save"]').element as HTMLInputElement;
expect(saveButton.disabled).toBe(true);
});
it('have "Create" button enabled when required fields are filled in', async() => {
const urlField = wrapper.find('[data-testid="driver-create-url-field"]');
const saveButton = wrapper.find('[data-testid="kontainer-driver-edit-save"]').element as HTMLInputElement;
urlField.setValue(url);
await nextTick();
expect(saveButton.disabled).toBe(false);
});
it('have "Create" button enabled and disabled depending on validation results', async() => {
const urlField = wrapper.find('[data-testid="driver-create-url-field"]');
const uiurlField = wrapper.find('[data-testid="driver-create-uiurl-field"]');
const checksumField = wrapper.find('[data-testid="driver-create-checksum-field"]');
const saveButton = wrapper.find('[data-testid="kontainer-driver-edit-save"]').element as HTMLInputElement;
const testCases = [
{
url: '1111',
uiurl: 'http://test.com',
checksum: 'aaaaaBBBBdddd',
result: true
},
{
url: 'http://test.com',
uiurl: '1111',
checksum: 'aaaaaBBBBdddd',
result: true
},
{
url: 'http://test.com',
uiurl: 'http://test.com',
checksum: '!!!',
result: true
},
{
url: 'http://test.com',
uiurl: 'http://test.com',
checksum: 'aaaaaBBBBdddd',
result: false
}
];
for (const testCase of testCases) {
urlField.setValue(testCase.url);
await nextTick();
uiurlField.setValue(testCase.uiurl);
await nextTick();
checksumField.setValue(testCase.checksum);
await nextTick();
expect(saveButton.disabled).toBe(testCase.result);
}
});
});