import Vue from 'vue'; import { mount, Wrapper } from '@vue/test-utils'; import { RatingMixin, RatingMixinInterface } from '../RatingMixin'; /** Create the test component */ function createTestComponent() { return Vue.component('TestComponent', { mixins: [ RatingMixin ], template: '
' }); } describe('RatingMixin', () => { const label = 'Pouvez-vous nous en dire plus ?'; it('verifies props', () => { const testComponent = createTestComponent(); const wrapper = mount(testComponent, { propsData: { label } }) as Wrapper; expect(wrapper.props().label).toBe(label); expect(wrapper.props().readonly).toBeFalsy(); }); it('emits input event', async() => { const testComponent = createTestComponent(); const wrapper = mount(testComponent, { propsData: { label, length: 10 } }) as Wrapper; wrapper.vm.emitInputEvent(3); await wrapper.vm.$nextTick(); // Wait until $emits have been handled expect(wrapper.emitted('input')).toBeTruthy(); expect(wrapper.emitted('input')?.pop()).toEqual([3]); }); });