| /*! | |
| * Matomo - free/libre analytics platform | |
| * | |
| * @link https://matomo.org | |
| * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | |
| */ | |
| import { mount } from '@vue/test-utils'; | |
| import DateRangePicker from './DateRangePicker.vue'; | |
| describe('DateRangePicker', () => { | |
| function mountPicker(customProps = {}) { | |
| return mount(DateRangePicker, { | |
| props: { | |
| startDate: '2026-03-11', | |
| endDate: '2026-06-08', | |
| disabled: false, | |
| ...customProps, | |
| }, | |
| global: { | |
| mocks: { | |
| translate: (key: string) => key, | |
| }, | |
| stubs: { | |
| DatePicker: true, | |
| }, | |
| }, | |
| }); | |
| } | |
| it('does not emit rangeChange when syncing new prop values from the parent', async () => { | |
| const wrapper = mountPicker(); | |
| expect(wrapper.emitted('rangeChange')).toBeUndefined(); | |
| await wrapper.setProps({ | |
| startDate: '2026-05-10', | |
| endDate: '2026-06-08', | |
| }); | |
| expect(wrapper.emitted('rangeChange')).toBeUndefined(); | |
| }); | |
| it('emits rangeChange for direct user edits', async () => { | |
| const wrapper = mountPicker(); | |
| (wrapper.vm as unknown as { setStartRangeDateFromStr: (value: string) => void }) | |
| .setStartRangeDateFromStr('2026-05-10'); | |
| expect(wrapper.emitted('rangeChange')?.[0]?.[0]).toEqual({ | |
| start: '2026-05-10', | |
| end: '2026-06-08', | |
| }); | |
| }); | |
| }); | |