mirror of https://github.com/rancher/dashboard.git
91 lines
2.9 KiB
TypeScript
91 lines
2.9 KiB
TypeScript
import { shallowMount } from '@vue/test-utils';
|
|
import ResourceLabeledSelect from '@shell/components/form/ResourceLabeledSelect.vue';
|
|
import LabeledSelect from '@shell/components/form/LabeledSelect.vue';
|
|
import { RESOURCE_LABEL_SELECT_MODE } from '@shell/types/components/resourceLabeledSelect';
|
|
|
|
const mockStore = {
|
|
getters: {
|
|
currentStore: jest.fn().mockReturnValue('cluster'),
|
|
'cluster/paginationEnabled': jest.fn().mockReturnValue(true),
|
|
'cluster/all': jest.fn().mockReturnValue([{ id: 'foo', name: 'Foo' }]),
|
|
},
|
|
dispatch: jest.fn().mockResolvedValue(undefined),
|
|
};
|
|
|
|
const requiredSetup = () => {
|
|
return {
|
|
global: {
|
|
components: { LabeledSelect },
|
|
mocks: { $store: mockStore, $fetchState: {} }
|
|
}
|
|
};
|
|
};
|
|
|
|
describe('component: ResourceLabeledSelect.vue', () => {
|
|
it('should render LabeledSelect', async() => {
|
|
const wrapper = shallowMount(ResourceLabeledSelect, {
|
|
...requiredSetup(),
|
|
props: { resourceType: 'testResource' }
|
|
});
|
|
|
|
expect(wrapper.findComponent(LabeledSelect).exists()).toBe(true);
|
|
});
|
|
|
|
it('should call paginateType with overrideRequest if provided', async() => {
|
|
const overrideRequest = jest.fn().mockResolvedValue({ page: [{ id: 'bar', name: 'Bar' }], total: 1 });
|
|
const wrapper = shallowMount(ResourceLabeledSelect, {
|
|
...requiredSetup(),
|
|
props: {
|
|
resourceType: 'testResource',
|
|
paginateMode: RESOURCE_LABEL_SELECT_MODE.DYNAMIC,
|
|
paginatedResourceSettings: { overrideRequest }
|
|
}
|
|
});
|
|
|
|
const result = await wrapper.vm.paginateType({
|
|
filter: 'bar',
|
|
page: 1,
|
|
pageSize: 10,
|
|
pageContent: [],
|
|
resetPage: false
|
|
});
|
|
|
|
expect(overrideRequest).toHaveBeenCalledWith({
|
|
filter: 'bar',
|
|
page: 1,
|
|
pageSize: 10,
|
|
pageContent: [],
|
|
resetPage: false
|
|
});
|
|
expect(result.page[0].name).toBe('Bar');
|
|
});
|
|
|
|
it('should emit update:value when LabeledSelect emits update:value', async() => {
|
|
const wrapper = shallowMount(ResourceLabeledSelect, {
|
|
...requiredSetup(),
|
|
props: { resourceType: 'testResource' }
|
|
});
|
|
|
|
wrapper.findComponent(LabeledSelect).vm.$emit('update:value', 'baz');
|
|
|
|
expect(wrapper.emitted('update:value')).toBeTruthy();
|
|
expect(wrapper.emitted('update:value')?.[0]).toStrictEqual(['baz']);
|
|
});
|
|
|
|
it('should pass correct props and attrs to LabeledSelect', async() => {
|
|
const wrapper = shallowMount(ResourceLabeledSelect, {
|
|
...requiredSetup(),
|
|
props: {
|
|
resourceType: 'testResource',
|
|
allResourcesSettings: { labelSelectOptions: { placeholder: 'Select a resource' } }
|
|
},
|
|
attrs: { multiple: true }
|
|
});
|
|
|
|
const labeledSelect = wrapper.findComponent(LabeledSelect);
|
|
|
|
expect(labeledSelect.attributes('placeholder')).toBe('Select a resource');
|
|
expect(labeledSelect.attributes('multiple')).toBe('true');
|
|
});
|
|
});
|