diff --git a/src/components/ClickCounter.delete.test.ts b/src/components/ClickCounter.delete.test.ts deleted file mode 100644 index 4186ca2..0000000 --- a/src/components/ClickCounter.delete.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { mount, config } from '@vue/test-utils' -import { describe, it, expect } from 'vitest' - -import ClickCounter from './ClickCounter.delete.vue' - -describe('clickCounter', () => { - const wrapper = mount(ClickCounter) - - it('renders Button with a Counter of 0', () => { - expect(wrapper.find('.v-btn').exists()).toBeTruthy() - expect(wrapper.text()).toBe("$t('app.inc.text')") - }) - - it('has default Translation German', () => { - const $Backup = config.global.mocks.$t - config.global.mocks.$t = config.global.mocks.i18n$t - const wrapper = mount(ClickCounter) - expect(wrapper.text()).toBe('Erhöhe: 0') - config.global.mocks.$t = $Backup - }) -}) diff --git a/src/components/ClickCounter.delete.vue b/src/components/ClickCounter.delete.vue deleted file mode 100644 index dabfd3d..0000000 --- a/src/components/ClickCounter.delete.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/src/components/ClientOnly.test.ts b/src/components/ClientOnly.test.ts new file mode 100644 index 0000000..c3cf785 --- /dev/null +++ b/src/components/ClientOnly.test.ts @@ -0,0 +1,12 @@ +import { mount } from '@vue/test-utils' +import { describe, it, expect } from 'vitest' + +import ClientOnly from './ClientOnly.vue' + +describe('ClientOnly', () => { + const wrapper = mount(ClientOnly) + + it('renders content if mounted', async () => { + expect(wrapper.isVisible()).toBeTruthy() + }) +}) diff --git a/src/components/PageShell.test.ts.notworking b/src/components/PageShell.test.ts.notworking new file mode 100644 index 0000000..0f4b415 --- /dev/null +++ b/src/components/PageShell.test.ts.notworking @@ -0,0 +1,20 @@ +import { mount } from '@vue/test-utils' +import { describe, it, expect } from 'vitest' + +import TopMenu from '#components/menu/TopMenu.vue' + +import PageShell from './PageShell.vue' + +describe('PageShell', () => { + const wrapper = mount(PageShell, { + slots: { + default: 'Page Content', + }, + }) + + it('renders page content', () => { + expect(wrapper.find('.v-application').exists()).toBeTruthy() + expect(wrapper.find('.v-application').findComponent(TopMenu)).toBeTruthy() + expect(wrapper.html()).toContain('Page Content') + }) +}) diff --git a/src/components/menu/TopMenu.test.ts.notworking b/src/components/menu/TopMenu.test.ts.notworking new file mode 100644 index 0000000..e9aad05 --- /dev/null +++ b/src/components/menu/TopMenu.test.ts.notworking @@ -0,0 +1,34 @@ +import { mount } from '@vue/test-utils' +import { describe, it, expect } from 'vitest' +import { h } from 'vue' +import { VApp } from 'vuetify/components' + +import VikeBtn from '#components/VikeBtn.vue' + +import LogoAvatar from './LogoAvatar.vue' +import TopMenu from './TopMenu.vue' + +describe('FooterMenu', () => { + const wrapper = mount(VApp, { + slots: { + default: h(TopMenu), + }, + }) + + it('renders three columns', () => { + expect(wrapper.find('.v-row').exists()).toBeTruthy() + expect(wrapper.findAll('.v-row > div')).toHaveLength(3) + }) + + it('first column contains logo', () => { + expect(wrapper.findAll('.v-row > div')[0].findComponent(LogoAvatar)).toBeTruthy() + }) + + it('second column contains 3 children -> AnchorLink', () => { + expect(wrapper.findAll('.v-row > div')[1].findAllComponents(VikeBtn)).toHaveLength(3) + }) + + it('third column is placeholdre', () => { + expect(wrapper.findAll('.v-row > div')[2].findAll('div')).toHaveLength(0) + }) +}) diff --git a/src/pages/_error.page.test.ts b/src/pages/_error.page.test.ts new file mode 100644 index 0000000..24e3503 --- /dev/null +++ b/src/pages/_error.page.test.ts @@ -0,0 +1,48 @@ +import { mount } from '@vue/test-utils' +import { describe, it, expect, beforeEach } from 'vitest' + +import ErrorPage from './_error.page.vue' + +describe('ErrorPage', () => { + let wrapper: typeof ErrorPage + const Wrapper = () => { + return mount(ErrorPage) + } + + beforeEach(() => { + wrapper = Wrapper() + }) + + describe('no is404 property set', () => { + it('renders error 500', () => { + expect(wrapper.find('h1').text()).toEqual("$t('error.500.h1')") + expect(wrapper.find('p').text()).toEqual("$t('error.500.text')") + }) + }) + + describe('is404 property is false', () => { + beforeEach(async () => { + await wrapper.setProps({ + is404: false, + }) + }) + + it('renders error 500', () => { + expect(wrapper.find('h1').text()).toEqual("$t('error.500.h1')") + expect(wrapper.find('p').text()).toEqual("$t('error.500.text')") + }) + }) + + describe('is404 property is true', () => { + beforeEach(async () => { + await wrapper.setProps({ + is404: true, + }) + }) + + it('renders error 400', () => { + expect(wrapper.find('h1').text()).toEqual("$t('error.404.h1')") + expect(wrapper.find('p').text()).toEqual("$t('error.404.text')") + }) + }) +}) diff --git a/vitest.config.ts b/vitest.config.ts index 3855824..71608a0 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,4 +1,4 @@ -import { defineConfig, mergeConfig } from 'vitest/config' +import { defineConfig, mergeConfig, configDefaults } from 'vitest/config' import viteConfig from './vite.config' @@ -12,10 +12,16 @@ export default mergeConfig( coverage: { all: true, include: ['src/**/*.{js,jsx,ts,tsx,vue}'], - lines: 1, - functions: 0, - branches: 4, - statements: 1, + exclude: [ + ...configDefaults.exclude, + // storybook + '**/*{.,-}stories.?(c|m)[jt]s?(x)', + 'src/stories/**/*', + ], + lines: 14, + functions: 20, + branches: 40, + statements: 14, // 100: true, }, },