qe-fe-automation
Version:
FE test automation framework using cypress
121 lines (105 loc) • 3.38 kB
text/typescript
import { TeamEventParamsStringInvitees } from '@group-events-lib/interface';
Cypress.Commands.add(
'createGroupEventViaApi',
(teamEventParams: TeamEventParamsStringInvitees) => {
if (!AUTH_TOKEN) {
throw new Error('Please login before calling api endpoints');
}
const eventDataBody = generateEventData(teamEventParams);
createTeamEvent(eventDataBody).then(({ travelEvent }) => {
addParticipants(travelEvent.id, teamEventParams.inviteeIdsOrEmails);
sendTeamInvitation(travelEvent.id);
getParticipant(travelEvent.id).then((participant) => {
cy.log('PARTICIPANTS: ' + JSON.stringify(participant));
const eventItemBody = generateParticipantDataWithCarsTrains(participant);
editParticipant(travelEvent.id, eventItemBody);
});
});
}
);
import { HttpRequest, HttpStatusCodes } from '../base';
import { AUTH_TOKEN } from '../commands';
import { generateEventData, generateParticipantDataWithCarsTrains } from './factory';
function createTeamEvent(body: any): Cypress.Chainable<any> {
return cy
.request({
method: HttpRequest.Post,
url: '/api/v1/user/travel-events',
headers: {
Authorization: AUTH_TOKEN
},
body,
failOnStatusCode: true
})
.then(({ status, body }) => {
expect(status, 'Team event created').to.equal(HttpStatusCodes.Ok);
return body;
});
}
function addParticipants(
eventId: string,
inviteeEmails: string[]
): Cypress.Chainable<any> {
return cy
.request({
method: HttpRequest.Post,
url: `/api/v1/user/travel-events/${eventId}/invitations/bulk-create`,
headers: {
Authorization: AUTH_TOKEN
},
body: {
participants: inviteeEmails.map((email) => {
return { email: email };
})
},
failOnStatusCode: true
})
.then(({ status, body }) => {
expect(status, 'Participants are added to the event').to.equal(HttpStatusCodes.Ok);
return body;
});
}
function getParticipant(eventId: string): Cypress.Chainable<any> {
cy.allure().logStep('retrieve event item');
return cy
.request({
method: HttpRequest.Get,
url: `api/v1/user/travel-events/${eventId}/invitations?size=20&page=0`,
headers: {
Authorization: AUTH_TOKEN
},
failOnStatusCode: true
})
.then(({ body, status }) => {
expect(status, 'Participant data received').to.equal(HttpStatusCodes.Ok);
return body.invitations.content[0];
});
}
function editParticipant(eventId: string, body: any) {
console.log('TRYING HERE: ' + JSON.stringify(body));
return cy
.request({
method: HttpRequest.Put,
url: `/api/v1/user/travel-events/${eventId}/invitations/${body.id}`,
headers: {
Authorization: AUTH_TOKEN
},
body: { updatedInvitation: body },
failOnStatusCode: true
})
.then(({ status }) => {
expect(status, 'Participant is updated').to.equal(HttpStatusCodes.Ok);
});
}
function sendTeamInvitation(eventId: string) {
cy.request({
method: HttpRequest.Post,
url: `/api/v1/user/travel-events/${eventId}/activate`,
headers: {
Authorization: AUTH_TOKEN
},
failOnStatusCode: true
}).then(({ status }) => {
expect(status, 'Team event invitation is sent').to.equal(HttpStatusCodes.Ok);
});
}