UNPKG

qe-fe-automation

Version:
121 lines (105 loc) 3.38 kB
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); }); }