diff --git a/frontend/src/__tests__/AboutPage.spec.ts b/frontend/src/__tests__/AboutPage.spec.ts index ac4ebd8..8563c1f 100644 --- a/frontend/src/__tests__/AboutPage.spec.ts +++ b/frontend/src/__tests__/AboutPage.spec.ts @@ -1,10 +1,44 @@ import { describe, it, expect } from 'vitest' import { mount } from '@vue/test-utils' +import { createRouter, createMemoryHistory } from 'vue-router' import AboutPage from '@/pages/AboutPage.vue' +function createTestRouter() { + return createRouter({ + history: createMemoryHistory(), + routes: [ + { path: '/om-oss', name: 'about', component: AboutPage }, + { path: '/', name: 'home', component: { template: '
Home
' } }, + ], + }) +} + describe('AboutPage', () => { - it('renders heading', () => { - const wrapper = mount(AboutPage) + it('renders heading and lead', () => { + const router = createTestRouter() + const wrapper = mount(AboutPage, { + global: { plugins: [router] }, + }) expect(wrapper.text()).toContain('Om Bilhej') + expect(wrapper.text()).toContain('Bilhej gör det enkelt') + }) + + it('renders how-it-works steps', () => { + const router = createTestRouter() + const wrapper = mount(AboutPage, { + global: { plugins: [router] }, + }) + expect(wrapper.text()).toContain('Skriv brevet här') + expect(wrapper.text()).toContain('Vi postar åt dig') + }) + + it('links to home page', () => { + const router = createTestRouter() + const wrapper = mount(AboutPage, { + global: { plugins: [router] }, + }) + const cta = wrapper.find('a.about__cta-btn') + expect(cta.exists()).toBe(true) + expect(cta.attributes('href')).toBe('/') }) }) diff --git a/frontend/src/__tests__/AppFooter.spec.ts b/frontend/src/__tests__/AppFooter.spec.ts index 42587d1..80f9b85 100644 --- a/frontend/src/__tests__/AppFooter.spec.ts +++ b/frontend/src/__tests__/AppFooter.spec.ts @@ -8,10 +8,14 @@ function createTestRouter() { history: createMemoryHistory(), routes: [ { - path: '/om', + path: '/om-oss', name: 'about', component: { template: '
About
' }, }, + { + path: '/om', + redirect: '/om-oss', + }, { path: '/kontakt', name: 'contact', @@ -40,7 +44,7 @@ describe('AppFooter', () => { const links = wrapper.findAll('a') expect(links[0].text()).toBe('Om oss') - expect(links[0].attributes('href')).toBe('/om') + expect(links[0].attributes('href')).toBe('/om-oss') expect(links[1].text()).toBe('Kontakt') expect(links[1].attributes('href')).toBe('/kontakt') diff --git a/frontend/src/__tests__/ContactPage.spec.ts b/frontend/src/__tests__/ContactPage.spec.ts index a317239..86f39f2 100644 --- a/frontend/src/__tests__/ContactPage.spec.ts +++ b/frontend/src/__tests__/ContactPage.spec.ts @@ -3,8 +3,23 @@ import { mount } from '@vue/test-utils' import ContactPage from '@/pages/ContactPage.vue' describe('ContactPage', () => { - it('renders heading', () => { + it('renders heading and lead', () => { const wrapper = mount(ContactPage) expect(wrapper.text()).toContain('Kontakta oss') + expect(wrapper.text()).toContain('klagomål') + }) + + it('renders general support email', () => { + const wrapper = mount(ContactPage) + const link = wrapper.find('a[href="mailto:kontakt@bilhej.se"]') + expect(link.exists()).toBe(true) + expect(link.text()).toBe('kontakt@bilhej.se') + }) + + it('renders complaints email', () => { + const wrapper = mount(ContactPage) + const link = wrapper.find('a[href="mailto:jcamorling@gmail.com"]') + expect(link.exists()).toBe(true) + expect(wrapper.text()).toContain('jcamorling@gmail.com') }) }) diff --git a/frontend/src/__tests__/OrdersPage.spec.ts b/frontend/src/__tests__/OrdersPage.spec.ts index 1c87843..32e8f94 100644 --- a/frontend/src/__tests__/OrdersPage.spec.ts +++ b/frontend/src/__tests__/OrdersPage.spec.ts @@ -337,4 +337,42 @@ describe('OrdersPage', () => { const badge = wrapper.find('.badge') expect(badge.classes()).toContain('badge--primary') }) + + it('shows expand toggle for long messages and reveals full text', async () => { + const longText = + 'Hej! Jag ville nämna en situation i trafiken där vi båda kanske blev lite frustrerade. Det är lätt att det blir så när man kör bil i rusningstid och tempot blir högt.' + const ordersWithLongMessage = [ + { + id: 'c1eebc99-9c0b-4ef8-bb6d-6bb9bd380a11', + plate: 'ABC123', + letterText: longText, + status: 'processing', + trackingId: null, + createdAt: '2026-05-11T12:00:00Z', + }, + ] + mockOrdersFetch(ordersWithLongMessage) + const { wrapper } = mountPage() + await new Promise((r) => setTimeout(r, 50)) + + const card = wrapper.find('.orders__card') + const preview = card.find('.orders__preview') + const toggle = card.find('.orders__preview-toggle') + + expect(toggle.exists()).toBe(true) + expect(toggle.text()).toBe('Visa mer') + expect(preview.classes()).not.toContain('orders__preview--expanded') + + await toggle.trigger('click') + + expect(preview.classes()).toContain('orders__preview--expanded') + expect(toggle.text()).toBe('Visa mindre') + expect(card.text()).toContain(longText) + }) + + it('does not show expand toggle for short messages', async () => { + const { wrapper } = mountPage() + await new Promise((r) => setTimeout(r, 50)) + expect(wrapper.find('.orders__preview-toggle').exists()).toBe(false) + }) }) diff --git a/frontend/src/components/AppFooter.vue b/frontend/src/components/AppFooter.vue index 0d11d4c..b83473f 100644 --- a/frontend/src/components/AppFooter.vue +++ b/frontend/src/components/AppFooter.vue @@ -6,11 +6,10 @@ import { RouterLink } from 'vue-router'