lotr-sut/tests/api/steps/quests-api.steps.ts
Fellowship Scholar f6a5823439 init commit
2026-03-29 20:07:56 +00:00

66 lines
2.6 KiB
TypeScript

import { Given, When, Then } from '../support/fixtures';
import { storeResponse } from '../support/api-utils';
import { expect } from '@playwright/test';
// ── Setup ────────────────────────────────────────────────────────────────────
Given(
'I have created a quest with title {string} type {string}',
async ({ request, apiState }, title: string, type: string) => {
const response = await request.post(`${apiState.baseUrl}/api/quests`, {
data: {
title,
description: `Test quest: ${title}`,
status: 'Not Yet Begun',
type,
},
});
await storeResponse(response, apiState);
apiState.context.createdQuestId = apiState.lastBody?.id;
}
);
// ── Actions ──────────────────────────────────────────────────────────────────
When(
'I create a quest with title {string} type {string} status {string}',
async ({ request, apiState }, title: string, type: string, status: string) => {
const response = await request.post(`${apiState.baseUrl}/api/quests`, {
data: { title, description: `Test quest: ${title}`, status, type },
});
await storeResponse(response, apiState);
apiState.context.createdQuestId = apiState.lastBody?.id;
}
);
When('I GET the created quest', async ({ request, apiState }) => {
const id = apiState.context.createdQuestId;
const response = await request.get(`${apiState.baseUrl}/api/quests/${id}`);
await storeResponse(response, apiState);
});
When(
'I update the created quest title to {string}',
async ({ request, apiState }, newTitle: string) => {
const id = apiState.context.createdQuestId;
const response = await request.put(`${apiState.baseUrl}/api/quests/${id}`, {
data: { title: newTitle, status: 'The Road Goes Ever On...' },
});
await storeResponse(response, apiState);
}
);
When('I delete the created quest', async ({ request, apiState }) => {
const id = apiState.context.createdQuestId;
const response = await request.delete(`${apiState.baseUrl}/api/quests/${id}`);
await storeResponse(response, apiState);
});
When('I complete the created quest', async ({ request, apiState }) => {
const id = apiState.context.createdQuestId;
const response = await request.put(`${apiState.baseUrl}/api/quests/${id}/complete`, {
data: {},
});
await storeResponse(response, apiState);
});