mirror of https://github.com/rancher/dashboard.git
111 lines
3.2 KiB
TypeScript
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);
|
|
}
|
|
});
|
|
});
|