qe-fe-automation
Version:
FE test automation framework using cypress
97 lines (92 loc) • 2.88 kB
text/typescript
import { ICreateCompany } from '../interface/company';
import { IOrganization } from '../interface/organization';
import { HttpRequest, HttpStatusCodes, Accept } from '../utilities/api';
import { LegalData } from './data/legal';
import { updateUserConfigurations } from './user';
/**
* Create company legal entity
* @param authToken
* @returns {IOrganization} Information
*/
export function createLegalEntityEU(
authToken: string,
legalEntitiesData: any
): Cypress.Chainable<IOrganization> {
return cy
.request({
method: HttpRequest.Post,
url: 'api/admin/billable_entities',
headers: {
Authorization: authToken,
Accept: Accept.ApplicationJson
},
retryOnStatusCodeFailure: true,
body: legalEntitiesData
})
.then(({ body, status }) => {
const billUuId = body.uuid;
expect(status, 'Successfully created legal entity').to.equal(HttpStatusCodes.Ok);
const officeResponse = addOfficeEU(authToken, billUuId, true);
officeResponse.then((response) => {
const officeUuid = response.uuid;
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
cy.getCurrentUserInfo();
cy.task<string>('getDataFromCache', 'userInfo').then((userInfo: any) => {
const userUuid = userInfo.sub;
const userConfigs = {
companyOfficeUuid: officeUuid
};
updateUserConfigurations(authToken, userUuid, userConfigs);
});
});
return cy
.request({
method: HttpRequest.Patch,
url: 'api/admin/company',
headers: {
Authorization: authToken,
Accept: Accept.ApplicationJson
},
retryOnStatusCodeFailure: true,
body: { defaultBillableEntityUuid: null }
})
.then(({ status }) => {
expect(status, 'Successfully updated default billable entity').to.equal(
HttpStatusCodes.Ok
);
return body;
});
});
}
/**
* Add office to given legal entity
* @param authToken
* @param billableEntityUuid
* @param defaultOffice
* @returns {ICreateCompany} Information
*/
export function addOfficeEU(
authToken: string,
billableEntityUuid: string,
defaultOffice = true
): Cypress.Chainable<ICreateCompany> {
const officeData = LegalData.generateEUOfficeData(billableEntityUuid, defaultOffice);
return cy
.request({
method: HttpRequest.Post,
url: 'api/admin/company/offices',
headers: {
Authorization: authToken,
Accept: Accept.ApplicationJson
},
retryOnStatusCodeFailure: true,
body: officeData
})
.then(({ body, status }) => {
expect(status, 'Successfully added office to given legal entity').to.equal(
HttpStatusCodes.Ok
);
return body;
});
}