upskill-event-manager/wordpress-dev/tests/e2e/test-data/events/eventManager.ts
bengizmo d6211ee364 feat(testing): Implement HVAC_Test_User_Factory and update .gitignore
- Add HVAC_Test_User_Factory class with:
  * User creation with specific roles
  * Multiple role support
  * Persona management system
  * Account cleanup integration
- Create comprehensive test suite in HVAC_Test_User_Factory_Test.php
- Update testing improvement plan documentation
- Add implementation decisions to project memory bank
- Restructure .gitignore with:
  * Whitelist approach for better file management
  * Explicit backup exclusions
  * Specific bin directory inclusions

Part of the Account Management component from the testing framework improvement plan.
2025-04-14 17:41:36 -03:00

122 lines
No EOL
4 KiB
TypeScript

import { testEvents } from './eventDefinitions';
import { testEnvironment, API_ENDPOINTS } from '../environment/config';
import { Page } from '@playwright/test';
export class EventManager {
constructor(private page: Page, private authToken: string) {}
async createEvent(eventIndex: number) {
const event = testEvents[eventIndex];
if (!event) {
throw new Error(`No event found at index ${eventIndex}`);
}
try {
const response = await this.page.request.post(
`${testEnvironment.baseUrl}${API_ENDPOINTS.events}`,
{
headers: {
'Authorization': `Bearer ${this.authToken}`
},
data: {
title: event.title,
description: event.description,
start_date: event.startDate,
end_date: event.endDate,
capacity: event.capacity,
cost: event.price,
venue: event.location,
categories: [event.category],
tags: event.tags
}
}
);
const data = await response.json();
console.log(`Created event: ${event.title} with ID: ${data.id}`);
return data.id;
} catch (error) {
console.error(`Failed to create event ${event.title}:`, error);
throw error;
}
}
async createAllEvents() {
const eventIds = [];
for (let i = 0; i < testEvents.length; i++) {
const id = await this.createEvent(i);
eventIds.push(id);
}
return eventIds;
}
async deleteEvent(eventId: number) {
try {
await this.page.request.delete(
`${testEnvironment.baseUrl}${API_ENDPOINTS.events}/${eventId}`,
{
headers: {
'Authorization': `Bearer ${this.authToken}`
}
}
);
console.log(`Deleted event with ID: ${eventId}`);
} catch (error) {
console.error(`Failed to delete event ${eventId}:`, error);
throw error;
}
}
async deleteAllEvents() {
const response = await this.page.request.get(
`${testEnvironment.baseUrl}${API_ENDPOINTS.events}`,
{
headers: {
'Authorization': `Bearer ${this.authToken}`
}
}
);
const events = await response.json();
for (const event of events) {
await this.deleteEvent(event.id);
}
console.log('All test events deleted');
}
async getEventById(eventId: number) {
try {
const response = await this.page.request.get(
`${testEnvironment.baseUrl}${API_ENDPOINTS.events}/${eventId}`,
{
headers: {
'Authorization': `Bearer ${this.authToken}`
}
}
);
return await response.json();
} catch (error) {
console.error(`Failed to get event ${eventId}:`, error);
throw error;
}
}
async updateEvent(eventId: number, updates: Partial<typeof testEvents[0]>) {
try {
const response = await this.page.request.patch(
`${testEnvironment.baseUrl}${API_ENDPOINTS.events}/${eventId}`,
{
headers: {
'Authorization': `Bearer ${this.authToken}`
},
data: updates
}
);
console.log(`Updated event ${eventId}`);
return await response.json();
} catch (error) {
console.error(`Failed to update event ${eventId}:`, error);
throw error;
}
}
}