diff --git a/renderer/context/usePageContext.ts b/renderer/context/usePageContext.ts index 9f8c479..1ed32b4 100644 --- a/renderer/context/usePageContext.ts +++ b/renderer/context/usePageContext.ts @@ -7,7 +7,7 @@ import { PageContext, VikePageContext } from '#types/PageContext' import type { App, InjectionKey } from 'vue' -const key: InjectionKey = Symbol(undefined) +const key: InjectionKey = Symbol('pageContext') function usePageContext() { const pageContext = inject(key) diff --git a/src/components/VikeBtn.test.ts b/src/components/VikeBtn.test.ts new file mode 100644 index 0000000..9054fa7 --- /dev/null +++ b/src/components/VikeBtn.test.ts @@ -0,0 +1,36 @@ +import { mount } from '@vue/test-utils' +import { navigate } from 'vike/client/router' +import { describe, it, expect, beforeEach, vi } from 'vitest' + +import VikeBtn from './VikeBtn.vue' + +vi.mock('vike/client/router') +vi.mocked(navigate).mockResolvedValue() +describe.skip('VikeBtn', () => { + const Wrapper = () => { + return mount(VikeBtn, { + global: { provide: { [Symbol('pageContext')]: { urlPathname: 'some-url' } } }, + attrs: { href: '/some-path' }, + }) + } + let wrapper: ReturnType + + beforeEach(() => { + wrapper = Wrapper() + }) + + it('renders', () => { + expect(wrapper.find('.v-btn').exists()).toBeTruthy() + }) + + it('icon is hidden', () => { + expect(wrapper.find('.v-icon').exists()).toBe(false) + }) + + describe('click on button', () => { + it('calls navigate method with given href', async () => { + await wrapper.find('.v-btn').trigger('click') + expect(navigate).toHaveBeenCalledWith('/some-path') + }) + }) +}) diff --git a/src/components/VikeBtn.vue b/src/components/VikeBtn.vue index cf760ba..06ce2f7 100644 --- a/src/components/VikeBtn.vue +++ b/src/components/VikeBtn.vue @@ -1,13 +1,22 @@