import { Given, When } from '@cucumber/cucumber'; import { UsersPage } from '../../../pages/companySettings/users.page'; import scenarioContext from '../../../util/scenarioContext'; import { generateRadomEmail, getUserNameFromEmail } from '../../../util/stringUtil'; import * as glue from './glue'; Given( /^a new user is setup in default (applicant|beneficiary|issuingBank|confirmingBank|newConfirmingBank|advisingBank|newAdvisingBank|nominatedBank)'s node, with (maker|checker|approver|makerChecker|checkerApprover|admin1|admin2) role$/, glue.createUserInDefaultNode ); When( /^I create new user with email "([^"]+)?" and (maker|checker|approver|makerChecker|checkerApprover|admin1|admin2) role$/, async function (userEmail: string, role: string) { userEmail = scenarioContext().dataStore.set(userEmail, generateRadomEmail()); const usersPage = new UsersPage(); await usersPage.createUser(userEmail, role); } ); When( /^I (Approve|Reject) new user request for user "([^"]+)?"$/, async function (userAction: string, userName: string) { userName = getUserNameFromEmail(scenarioContext().dataStore.get(userName)); const usersPage = new UsersPage(); await usersPage.verifyUser(userAction, userName); } ); When( /^user "([^"]+)?" is listed under (Pending|Members) tab with (Status) column value equals (Active|Pending onboard|Pending creation approval)$/, async function (userName: string, tabName: string, columnName: string, valueToAssert: string) { const usersPage = new UsersPage(); userName = getUserNameFromEmail(scenarioContext().dataStore.get(userName)); await usersPage.checkUserStatus(tabName, userName, columnName, valueToAssert); } ); When(/^I load Setup user account page for user "([^"]+)?"$/, async function (userEmail: string) { userEmail = scenarioContext().dataStore.get(userEmail); const usersPage = new UsersPage(); await usersPage.loadSetupUserPage(userEmail); }); When('I submit Setup user account form with valid details', async function () { const usersPage = new UsersPage(); await usersPage.setupUser(); });