Compare commits

..

7 Commits

Author SHA1 Message Date
Renovate Bot 2818dc042f Update dependency vite to v8.0.9
CI / frontend-test (push) Successful in 36s
CI / backend-test (push) Successful in 1m28s
CI / frontend-e2e (push) Successful in 2m11s
CI / build-and-publish (push) Has been skipped
2026-04-20 21:27:54 +00:00
nitrix c37846df62 Merge pull request 'Update dependency @msw/playwright to v0.6.7' (#48) from renovate/msw-playwright-0.x-lockfile into master
CI / backend-test (push) Successful in 1m0s
CI / frontend-test (push) Successful in 30s
CI / frontend-e2e (push) Successful in 1m50s
CI / build-and-publish (push) Has been skipped
2026-04-20 23:00:00 +02:00
Renovate Bot 0408ce1f8e Update dependency @msw/playwright to v0.6.7
CI / backend-test (push) Successful in 57s
CI / frontend-test (push) Successful in 26s
CI / frontend-e2e (push) Successful in 1m39s
CI / build-and-publish (push) Has been skipped
2026-04-20 20:52:06 +00:00
nitrix 2a8c8ddffd Merge pull request 'Update oxlint monorepo' (#46) from renovate/oxlint-monorepo into master
CI / backend-test (push) Successful in 58s
CI / frontend-test (push) Successful in 27s
CI / frontend-e2e (push) Successful in 1m38s
CI / build-and-publish (push) Has been skipped
2026-04-20 22:47:56 +02:00
nitrix d13a5b2113 Add type parameters to vi.fn() mocks for oxlint 1.60 vitest rule
CI / backend-test (push) Successful in 1m1s
CI / frontend-test (push) Successful in 32s
CI / frontend-e2e (push) Successful in 1m39s
CI / build-and-publish (push) Has been skipped
oxlint 1.60 enables vitest/require-mock-type-parameters by default,
which requires explicit type parameters on all vi.fn() calls.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 22:42:51 +02:00
nitrix 8fb1927917 Pin oxlint to ~1.60.0 to match eslint-plugin-oxlint peer range
CI / backend-test (push) Successful in 57s
CI / frontend-test (push) Failing after 17s
CI / frontend-e2e (push) Successful in 1m42s
CI / build-and-publish (push) Has been skipped
eslint-plugin-oxlint@1.60.0 has a strict peerDependency of
oxlint@~1.60.0, and 1.61.0 is not yet released. Keep the two in
lockstep so npm install resolves cleanly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 22:31:05 +02:00
Renovate Bot 1cda01d252 Update oxlint monorepo
renovate/artifacts Artifact file update failure
CI / backend-test (push) Successful in 1m0s
CI / frontend-test (push) Failing after 7s
CI / frontend-e2e (push) Failing after 8s
CI / build-and-publish (push) Has been skipped
2026-04-20 20:02:59 +00:00
6 changed files with 284 additions and 1216 deletions
+247 -1181
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -38,14 +38,14 @@
"@vue/tsconfig": "^0.9.0",
"eslint": "^10.0.2",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-oxlint": "~1.55.0",
"eslint-plugin-oxlint": "~1.60.0",
"eslint-plugin-vue": "~10.8.0",
"jiti": "^2.6.1",
"jsdom": "^28.1.0",
"msw": "^2.12.10",
"npm-run-all2": "^8.0.4",
"openapi-typescript": "^7.13.0",
"oxlint": "~1.55.0",
"oxlint": "~1.60.0",
"prettier": "3.8.1",
"typescript": "~5.9.3",
"vite": "^8.0.0",
@@ -2,11 +2,12 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
import { mount, flushPromises } from '@vue/test-utils'
import { createRouter, createMemoryHistory } from 'vue-router'
import EventList from '../EventList.vue'
import type { api } from '../../api/client'
vi.mock('../../api/client', () => ({
api: {
PATCH: vi.fn(),
DELETE: vi.fn(),
PATCH: vi.fn<typeof api.PATCH>(),
DELETE: vi.fn<typeof api.DELETE>(),
},
}))
@@ -31,7 +32,7 @@ const mockEvents = [
{ eventToken: 'rsvp-1', title: 'Attending Event', dateTime: '2026-03-11T20:00:00', rsvpToken: 'rsvp-token', rsvpName: 'Max' },
]
const removeEventMock = vi.fn()
const removeEventMock = vi.fn<(eventToken: string) => void>()
vi.mock('../../composables/useEventStorage', () => ({
isValidStoredEvent: (e: unknown) => {
@@ -3,19 +3,20 @@ import { mount, flushPromises } from '@vue/test-utils'
import { createRouter, createMemoryHistory } from 'vue-router'
import EventCreateView from '../EventCreateView.vue'
import { api } from '@/api/client'
import type { StoredEvent } from '@/composables/useEventStorage'
vi.mock('@/api/client', () => ({
api: {
POST: vi.fn(),
POST: vi.fn<typeof api.POST>(),
},
}))
vi.mock('@/composables/useEventStorage', () => ({
useEventStorage: vi.fn(() => ({
saveCreatedEvent: vi.fn(),
getStoredEvents: vi.fn(() => []),
getOrganizerToken: vi.fn(),
saveRsvp: vi.fn(),
getRsvp: vi.fn(),
useEventStorage: vi.fn<() => unknown>(() => ({
saveCreatedEvent: vi.fn<() => void>(),
getStoredEvents: vi.fn<() => unknown[]>(() => []),
getOrganizerToken: vi.fn<() => string | undefined>(),
saveRsvp: vi.fn<() => void>(),
getRsvp: vi.fn<() => unknown>(),
})),
}))
@@ -154,19 +155,19 @@ describe('EventCreateView', () => {
})
it('submits successfully, saves to storage, and navigates to event page', async () => {
const mockSave = vi.fn()
const mockSave = vi.fn<(...args: unknown[]) => void>()
vi.mocked(vi.importActual<typeof import('@/composables/useEventStorage')>)
const { useEventStorage } = await import('@/composables/useEventStorage')
vi.mocked(useEventStorage).mockReturnValue({
saveCreatedEvent: mockSave,
getStoredEvents: vi.fn(() => []),
getOrganizerToken: vi.fn(),
saveRsvp: vi.fn(),
getRsvp: vi.fn(),
removeRsvp: vi.fn(),
saveWatch: vi.fn(),
isStored: vi.fn(() => false),
removeEvent: vi.fn(),
getStoredEvents: vi.fn<() => StoredEvent[]>(() => []),
getOrganizerToken: vi.fn<() => string | undefined>(),
saveRsvp: vi.fn<() => void>(),
getRsvp: vi.fn<() => { rsvpToken: string; rsvpName: string } | undefined>(),
removeRsvp: vi.fn<() => void>(),
saveWatch: vi.fn<() => void>(),
isStored: vi.fn<() => boolean>(() => false),
removeEvent: vi.fn<() => void>(),
})
vi.mocked(api.POST).mockResolvedValueOnce({
@@ -6,26 +6,26 @@ import { api } from '@/api/client'
vi.mock('@/api/client', () => ({
api: {
GET: vi.fn(),
POST: vi.fn(),
GET: vi.fn<typeof api.GET>(),
POST: vi.fn<typeof api.POST>(),
},
}))
const mockSaveRsvp = vi.fn()
const mockGetRsvp = vi.fn()
const mockGetOrganizerToken = vi.fn()
const mockSaveWatch = vi.fn()
const mockIsStored = vi.fn()
const mockRemoveEvent = vi.fn()
const mockSaveRsvp = vi.fn<(...args: unknown[]) => void>()
const mockGetRsvp = vi.fn<(eventToken: string) => { rsvpToken: string; rsvpName: string } | undefined>()
const mockGetOrganizerToken = vi.fn<(eventToken: string) => string | undefined>()
const mockSaveWatch = vi.fn<(...args: unknown[]) => void>()
const mockIsStored = vi.fn<(eventToken: string) => boolean>()
const mockRemoveEvent = vi.fn<(eventToken: string) => void>()
vi.mock('@/composables/useEventStorage', () => ({
useEventStorage: vi.fn(() => ({
saveCreatedEvent: vi.fn(),
getStoredEvents: vi.fn(() => []),
useEventStorage: vi.fn<() => unknown>(() => ({
saveCreatedEvent: vi.fn<() => void>(),
getStoredEvents: vi.fn<() => unknown[]>(() => []),
getOrganizerToken: mockGetOrganizerToken,
saveRsvp: mockSaveRsvp,
getRsvp: mockGetRsvp,
removeRsvp: vi.fn(),
removeRsvp: vi.fn<() => void>(),
saveWatch: mockSaveWatch,
isStored: mockIsStored,
removeEvent: mockRemoveEvent,
@@ -46,7 +46,7 @@ describe('EventStubView', () => {
})
it('copies link to clipboard and shows confirmation', async () => {
const writeTextMock = vi.fn().mockResolvedValue(undefined)
const writeTextMock = vi.fn<(text: string) => Promise<void>>().mockResolvedValue(undefined)
Object.assign(navigator, {
clipboard: { writeText: writeTextMock },
})
@@ -63,7 +63,7 @@ describe('EventStubView', () => {
it('shows failure message when clipboard is unavailable', async () => {
Object.assign(navigator, {
clipboard: { writeText: vi.fn().mockRejectedValue(new Error('Not allowed')) },
clipboard: { writeText: vi.fn<(text: string) => Promise<void>>().mockRejectedValue(new Error('Not allowed')) },
})
const wrapper = await mountWithToken('fail-test')