import { afterEach, describe, expect, it, vi } from 'vitest' import router from '@/router' import { chooseMenuItem, mountDirectory, openRowMenu, unmountDirectory } from './directoryTestKit' vi.mock('@/composables/useApi', async (importOriginal) => { const actual = await importOriginal() return { ...actual, useApi: vi.fn() } }) afterEach(unmountDirectory) function menuLabels() { return Array.from(document.body.querySelectorAll('[role="menuitem"]')).map((item) => item.textContent?.trim(), ) } describe('Settings, Sites row actions for localization', () => { it('offers Languages and Public URL on each site row', async () => { await mountDirectory('sites', '/settings/sites') await openRowMenu('Journal') expect(menuLabels()).toEqual( expect.arrayContaining(['Edit', 'Languages', 'Public URL', 'Delete…']), ) }) it.each([ ['Languages', '/settings/sites/journal/languages'], ['Public URL', '/settings/sites/journal/public-url'], ])('opens %s at %s', async (label, target) => { await mountDirectory('sites', '/settings/sites') await openRowMenu('Journal') await chooseMenuItem(label) await vi.waitFor(() => expect(router.currentRoute.value.path).toBe(target)) }) })