import { mount } from '@vue/test-utils'; import Opacity from '@/components/navigation/mcad/McadOpacity.vue'; import { VBtn, VSlider } from 'vuetify/components'; import { DataOverlayMcadFaker } from '@test/fakers/data-overlay-mcad.faker'; import { useViewer3cr } from '@/composables/useViewer3cr'; describe('Opacity tests', () => { const viewer3cr = useViewer3cr(); const mcad = DataOverlayMcadFaker.random(); const props = { mcad }; it('should mount', () => { const wrapper = mount(Opacity, { props }); expect(wrapper).toBeTruthy(); }); it('should set value', async () => { const wrapper = mount(Opacity, { props }); const slider = wrapper.findComponent(VSlider); await slider.setValue('100'); expect(slider.emitted('update:modelValue')).toEqual([['100']]); }); it('should decrement', async () => { const spy = vi.spyOn(viewer3cr, 'setMcadObjectColour'); const wrapper = mount(Opacity, { props }); const slider = wrapper.findComponent(VSlider); await slider.setValue('100'); expect(slider.emitted('update:modelValue')).toEqual([['100']]); const [dec, _inc] = slider.findAllComponents(VBtn); await dec.trigger('click'); expect(spy).toHaveBeenCalled(); }); it('should increment', async () => { const spy = vi.spyOn(viewer3cr, 'setMcadObjectColour'); const wrapper = mount(Opacity, { props }); const slider = wrapper.findComponent(VSlider); await slider.setValue('100'); expect(slider.emitted('update:modelValue')).toEqual([['100']]); const [_dec, inc] = slider.findAllComponents(VBtn); await inc.trigger('click'); expect(spy).toHaveBeenCalled(); }); it('should cancel timeout', async () => { const spy = vi.spyOn(viewer3cr, 'setMcadObjectColour'); spy.mockClear(); const wrapper = mount(Opacity, { props }); const slider = wrapper.findComponent(VSlider); await slider.setValue('100'); expect(slider.emitted('update:modelValue')).toEqual([['100']]); expect(spy).toHaveBeenCalledTimes(1); const [dec, inc] = slider.findAllComponents(VBtn); await inc.trigger('click'); expect(spy).toHaveBeenCalledTimes(2); await dec.trigger('click'); expect(spy).toHaveBeenCalledTimes(3); }); });