39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
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<typeof import('@/composables/useApi')>()
|
|
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))
|
|
})
|
|
})
|