UNPKG

qe-fe-automation

Version:
203 lines (188 loc) 7.43 kB
import { Timeouts } from '@utility-lib/index'; import { LoginPage, AdminInterceptsApis } from '@admin-lib/index'; import { LRMApiIntercept } from '@lrm-lib/api-intercept'; import { GrowthInterceptApis, LoginSelfSell } from '@growth-lib/index'; import { GrowthModalUtility } from '../modal/growth_modal'; export const underWritingSubmittedApplicationsSelectors = { termsAndConditionCheck: '[data-testid="termsAndConditionCheck"] input', searchForUnderWritingCompanies: '.content-container .filter-container .search-input-wrapper', searchForUnderWritingCompaniesInput: '.content-container .filter-container .search-input-wrapper input', company: 'tbody tr', companyNameFilterInput: '[placeholder="Company Name"]', liquidApplicationStatus: '.MuiCardContent-root dt + dd', plaidStatus: '.content-container .plaid-status', assignedToStatus: '.content-container .assigned-to', monthlyCardSpent: '.spendlimit li:nth-child(3) span:nth-child(2)', requestedSpendLimit: '.spendlimit li:nth-child(2) span:nth-child(2)', travelSubmitted: '.content-container .travel-submitted', declineLiquidCard: '.action-card .secondary', approveLiquidCard: '.action-card .success', spendLimitTextBox: '.amount-input .input-wrapper input', confirmLiquidApprovalButton: '.tal-modal.application-approval-modal .primary', toastSummaryMessageDetails: '.p-toast-detail', applicationStatus: 'div dt + dd', alloyApplicationStatus: 'div h3 + p + ul li span div', plaidConnectivity: '.MuiCard-root:nth-child(4) > ul li:nth-child(3) span:nth-child(2)', uwStatusCardApplicationUpdate: '.action-card uw-status-card div div', confirmLiquidDeclineButton: '.tal-modal.application-decline-modal .primary' }; type SubmitDetails = { liquidStatus: string; requestedSpendLimit: string; monthlyCardSpent: string; }; export class UnderWritingApplications { static onBoardSelfSellUpsellUser(emailSuffix: string) { let token: string; LRMApiIntercept.interceptLRMApis(); GrowthInterceptApis.interceptApis(); LoginSelfSell.createNewSelfSellLead({ emailSuffix: emailSuffix }) .then((login) => { token = login.token; }) .then(() => { GrowthModalUtility.onBoardGrowthUser(token); }); } static validateSubmittedApplication(): void { let nameSuffix: any; cy.allure().logStep('Validate Submitted Application:'); cy.task('getDataFromCache', 'companyNameSuffix').then((companyNameSuffix) => { nameSuffix = companyNameSuffix; cy.get(underWritingSubmittedApplicationsSelectors.companyNameFilterInput).type( nameSuffix ); this.validateCompany(); }); } static loginToUnderWritingAndValidateCompanyStatus( email: string, superAdminCredentials: string ): void { LoginPage.clearExistingLoginSession(); AdminInterceptsApis.interceptAdminsApis(); cy.loginWithAuthToken({ email, password: superAdminCredentials, isSA: true }); cy.visit('/app/underwriting/companies').then(() => { UnderWritingApplications.validateSubmittedApplication(); }); } static selectSubmittedApplication(): void { cy.allure().logStep('Select Submitted Application:'); cy.wait(Timeouts.MEDIUM_TIMEOUT_10_SEC.timeout); cy.get(underWritingSubmittedApplicationsSelectors.company) .eq(0) .should('be.visible') .click(); cy.wait('@selfSellApplications'); } static validateApproveLiquidDetails(connectBankCheck: string) { cy.get(underWritingSubmittedApplicationsSelectors.alloyApplicationStatus).contains( 'Alloy awaiting answer' ); if (connectBankCheck == 'plaid') { cy.get(underWritingSubmittedApplicationsSelectors.plaidConnectivity).contains( 'Yes' ); } else { cy.get(underWritingSubmittedApplicationsSelectors.plaidConnectivity).contains('No'); } } static approveLiquid(limitAmount: string) { cy.allure().logStep('Approve Liquid Amount:' + limitAmount); cy.wait(Timeouts.MEDIUM_TIMEOUT_10_SEC.timeout); cy.get(underWritingSubmittedApplicationsSelectors.spendLimitTextBox) .should('be.visible') .type(limitAmount); cy.get(underWritingSubmittedApplicationsSelectors.approveLiquidCard) .should('be.visible') .click({ force: true }); cy.get( underWritingSubmittedApplicationsSelectors.confirmLiquidApprovalButton, Timeouts.MEDIUM_TIMEOUT_60_SEC ) .should('be.visible') .click({ force: true }); cy.get(underWritingSubmittedApplicationsSelectors.toastSummaryMessageDetails) .should('be.visible') .contains('approved'); cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout); cy.reload(); cy.wait(Timeouts.MEDIUM_TIMEOUT_10_SEC.timeout); cy.go('back'); } static declineLiquid() { cy.allure().logStep('Decline Liquid'); cy.get(underWritingSubmittedApplicationsSelectors.declineLiquidCard) .should('be.visible') .click({ force: true }); cy.get( underWritingSubmittedApplicationsSelectors.confirmLiquidDeclineButton, Timeouts.MEDIUM_TIMEOUT_60_SEC ) .should('be.visible') .click({ force: true }); cy.get(underWritingSubmittedApplicationsSelectors.toastSummaryMessageDetails) .should('be.visible') .contains('decline'); cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout); cy.reload(); cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout); cy.go('back'); } static validateSubmitDetails(submitDetails: SubmitDetails): void { const { liquidStatus, requestedSpendLimit, monthlyCardSpent } = submitDetails; cy.allure().logStep( 'Validate Submit Details ' + ' liquidStatus ' + liquidStatus + ' requestedSpendLimit ' + requestedSpendLimit + ' monthlyCardSpent ' + monthlyCardSpent ); this.validateLiquidStatus(liquidStatus); this.validateRequestedSpendLimit(requestedSpendLimit); this.validateMonthlyCardSpend(monthlyCardSpent); } static validateCompany() { cy.task('getDataFromCache', 'companyName').then((companyName) => { cy.allure().logStep(`Validate Company: ${companyName}`); this.checkIfLocatorExist( underWritingSubmittedApplicationsSelectors.company, `${companyName}` ); }); } static checkIfLocatorExist(selectorText: string, expectedString: string) { for (let i = 0; i < 5; i++) { if (!cy.checkIfExist(selectorText)) { cy.reload(true); } else { cy.get(selectorText).contains(`${expectedString}`); break; } } } static validateLiquidStatus(LiquidStatus: string) { cy.allure().logStep(`validate Liquid Status: ${LiquidStatus}`); cy.get(underWritingSubmittedApplicationsSelectors.liquidApplicationStatus) .should('be.visible') .should('have.text', LiquidStatus); } static validateMonthlyCardSpend(MonthlyCardSpent: string) { cy.allure().logStep(`Validate Monthyl Card Spend: ${MonthlyCardSpent}`); cy.get(underWritingSubmittedApplicationsSelectors.monthlyCardSpent) .should('be.visible') .should('have.text', MonthlyCardSpent); } static validateRequestedSpendLimit(SpendLimit: string) { cy.allure().logStep(`Validate Requested spend limit: ${SpendLimit}`); cy.get(underWritingSubmittedApplicationsSelectors.requestedSpendLimit) .should('be.visible') .should('have.text', SpendLimit); } }