jcloud/dashboard/src2/tests/core/ClickToCopy.test.js

54 lines
1.2 KiB
JavaScript

import { nextTick } from 'vue';
import { mount } from '@vue/test-utils';
import { describe, expect, test, vi } from 'vitest';
import ClickToCopyField from '@/components/ClickToCopyField.vue';
// Mocking clipboard API
let clipboardData = '';
Object.assign(window.navigator, {
clipboard: {
writeText: vi.fn(data => {
clipboardData = data;
return Promise.resolve();
}),
readText: vi.fn(() => clipboardData)
}
});
describe('ClickToCopyField Component', () => {
test('displays the passed text content', () => {
expect(ClickToCopyField).toBeTruthy();
const wrapper = mount(ClickToCopyField, {
props: {
textContent: 'Test'
}
});
expect(wrapper.html()).contains('Test');
});
test("let's us copy with a button click", async () => {
const $notify = vi.fn();
expect(ClickToCopyField).toBeTruthy();
const wrapper = mount(ClickToCopyField, {
props: {
textContent: 'Test'
},
global: {
mocks: {
$notify
}
}
});
wrapper.find('button').isVisible();
wrapper.find('button').trigger('click');
await nextTick();
expect(navigator.clipboard.readText()).toBe('Test');
});
});