66 lines
2.6 KiB
TypeScript
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);
|
|
});
|