59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import {
|
|
seedLoreWithFolder,
|
|
seedTemplate,
|
|
seedPage,
|
|
deleteLore,
|
|
type SeededLore,
|
|
type SeededTemplate,
|
|
type SeededPage,
|
|
} from '../../fixtures/api';
|
|
|
|
test.describe('Page delete', () => {
|
|
let seeded: SeededLore;
|
|
let template: SeededTemplate;
|
|
let pageEntity: SeededPage;
|
|
|
|
test.beforeEach(async ({ request }) => {
|
|
seeded = await seedLoreWithFolder(request);
|
|
template = await seedTemplate(request, {
|
|
loreId: seeded.id,
|
|
defaultNodeId: seeded.rootFolderId,
|
|
});
|
|
pageEntity = await seedPage(request, {
|
|
loreId: seeded.id,
|
|
nodeId: seeded.rootFolderId,
|
|
templateId: template.id,
|
|
});
|
|
});
|
|
|
|
test.afterEach(async ({ request }) => {
|
|
if (seeded?.id) await deleteLore(request, seeded.id);
|
|
});
|
|
|
|
test('deletes the page after accepting confirm', async ({ page, request }) => {
|
|
page.on('dialog', (dialog) => dialog.accept());
|
|
|
|
await page.goto(`/lore/${seeded.id}/pages/${pageEntity.id}/edit`);
|
|
await page.getByRole('button', { name: /^Supprimer$/i }).click();
|
|
|
|
// Le composant redirige vers la racine du Lore après suppression.
|
|
await expect(page).toHaveURL(new RegExp(`/lore/${seeded.id}$`));
|
|
|
|
const res = await request.get(`/api/pages/${pageEntity.id}`);
|
|
expect(res.status()).toBe(404);
|
|
});
|
|
|
|
test('keeps the page when confirm is dismissed', async ({ page, request }) => {
|
|
page.on('dialog', (dialog) => dialog.dismiss());
|
|
|
|
await page.goto(`/lore/${seeded.id}/pages/${pageEntity.id}/edit`);
|
|
await page.getByRole('button', { name: /^Supprimer$/i }).click();
|
|
|
|
await expect(page).toHaveURL(new RegExp(`/lore/${seeded.id}/pages/${pageEntity.id}/edit$`));
|
|
|
|
const res = await request.get(`/api/pages/${pageEntity.id}`);
|
|
expect(res.ok()).toBeTruthy();
|
|
});
|
|
});
|