diff --git a/src/App.vue b/src/App.vue index a0d7a19..ef16a8e 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,5 +1,3 @@ diff --git a/src/components/DxhChips.vue b/src/components/DxhChips.vue new file mode 100644 index 0000000..e32e3fb --- /dev/null +++ b/src/components/DxhChips.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/components/__tests__/DxhChip.spec.ts b/src/components/__tests__/DxhChip.spec.ts new file mode 100644 index 0000000..f11b417 --- /dev/null +++ b/src/components/__tests__/DxhChip.spec.ts @@ -0,0 +1,48 @@ +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import DxhChips from '../DxhChips.vue' + +describe('DxhChips.vue', () => { + it('renders draggable item with close button', () => { + const wrapper = mount(DxhChips, { + props: { + text: 'Sample Text', + closeable: true, + draggable: true + } + }) + expect(wrapper.classes()).toContain('inline-block') + expect(wrapper.classes()).toContain('cursor-grab') + + expect( + wrapper.find('.flex.items-center.py-2.px-3.border.bg-gray-300.rounded-lg').exists() + ).toBe(true) + + expect(wrapper.find('.text').text()).toBe('Sample Text') + + const closeButton = wrapper.find('span.cursor-pointer') + expect(closeButton.exists()).toBe(true) + + expect(wrapper.attributes('draggable')).toBe('true') + expect(wrapper.emitted('close')).toBeFalsy() + + wrapper.trigger('dragstart') + expect(wrapper.emitted('drop')).toBeFalsy() + + wrapper.trigger('dragend') + expect(wrapper.emitted('drop')).toBeTruthy() + }) + + it('renders draggable item without close button', () => { + const wrapper = mount(DxhChips, { + props: { + text: 'Sample Text', + closeable: false, + draggable: true + } + }) + + const closeButton = wrapper.find('span.cursor-pointer') + expect(closeButton.exists()).toBe(false) + }) +}) diff --git a/src/index.ts b/src/index.ts index ee2ff8d..33e3346 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,5 @@ -import DButton from "./components/DButton.vue" -import DInput from "./components/DInput.vue" +import DButton from './components/DButton.vue' +import DInput from './components/DInput.vue' +import DxhChips from './components/DxhChips.vue' -export default {DButton, DInput} \ No newline at end of file +export default { DButton, DInput, DxhChips }