| import { describe, it, expect, vi } from 'vitest' |
| import { ref } from 'vue' |
| import { mount } from '@vue/test-utils' |
|
|
| const needRefresh = ref(false) |
| const updateServiceWorker = vi.fn() |
|
|
| vi.mock('virtual:pwa-register/vue', () => ({ |
| useRegisterSW: () => ({ needRefresh, updateServiceWorker }), |
| })) |
|
|
| import PwaUpdatePrompt from './PwaUpdatePrompt.vue' |
|
|
| describe('PwaUpdatePrompt', () => { |
| it('renders nothing when no update is available', () => { |
| needRefresh.value = false |
| const wrapper = mount(PwaUpdatePrompt) |
| expect(wrapper.find('div').exists()).toBe(false) |
| }) |
|
|
| it('shows the update prompt when a new version is available', () => { |
| needRefresh.value = true |
| const wrapper = mount(PwaUpdatePrompt) |
| expect(wrapper.text()).toContain('A new version is available') |
| }) |
|
|
| it('calls updateServiceWorker when Update is clicked', async () => { |
| needRefresh.value = true |
| updateServiceWorker.mockClear() |
| const wrapper = mount(PwaUpdatePrompt) |
| await wrapper.findAll('button')[0].trigger('click') |
| expect(updateServiceWorker).toHaveBeenCalledWith(true) |
| }) |
|
|
| it('dismisses the prompt when the close button is clicked', async () => { |
| needRefresh.value = true |
| const wrapper = mount(PwaUpdatePrompt) |
| await wrapper.findAll('button')[1].trigger('click') |
| expect(needRefresh.value).toBe(false) |
| }) |
| }) |
|
|