UNPKG

aps-data-api

Version:

package for data extraction from APS company for omnimetic project

134 lines (123 loc) 3.34 kB
import fs from 'fs'; import path from 'path'; import { BrowserInterface } from '../../../src/typings'; import { GetMonthlyUtilityDataRequestHandler } from './get-monthly-utility-data-request-handler'; import { MockElementHandle } from './mock-element-handle'; import { MockTarget } from './mock-target'; const workFlowConfigFilePath = path.join( 'src', 'services', 'workflow', 'workflow.json', ); const apsWorkflowJson = JSON.parse( fs.readFileSync(workFlowConfigFilePath).toString(), ); export class GetMonthlyUtilityDataRequestHandlerImpl implements GetMonthlyUtilityDataRequestHandler { serviceAccountId = '7123467556'; // tslint:disable-next-line: no-empty async type() {} async waitForResponse( urlOrPredicate: | string | ((res: BrowserInterface.HTTPResponse) => boolean | Promise<boolean>), options?: { timeout?: number; }, ) { try { if ( urlOrPredicate === apsWorkflowJson.getMonthlyUtilityData.billDetailsUrl ) { const data = {}; return Promise.resolve(data); } if ( urlOrPredicate === apsWorkflowJson.getMonthlyUtilityData.userDetailsUrl ) { const data = { Details: { AccountDetails: { getAccountDetailsResponse: { getAccountDetailsRes: { getSASPListByAccountID: { premiseDetailsList: [ { premiseID: '7123467556', }, ], }, }, }, }, }, }; return Promise.resolve(data); } } catch (err) { return Promise.reject(err); } } async $eval<ReturnType>( selector: string, pageFunction: ( element: Element, ...args: unknown[] ) => ReturnType | Promise<ReturnType>, ) { if ( selector === apsWorkflowJson.getMonthlyUtilityData.selectValueStringSelector ) { const data: Awaited<any> = ' 1 - 10 of 25'; return Promise.resolve(data); } } async select(selector: string, ...values: string[]) { try { if ( selector === apsWorkflowJson.getMonthlyUtilityData.selectStringSelector ) { const data: string[] = ['desired number of pages selected']; return Promise.resolve(data); } } catch (err) { return Promise.reject(err); } } // tslint:disable-next-line: function-name async $$(selector: string) { try { if ( selector === apsWorkflowJson.getMonthlyUtilityData.billsDataSelector ) { const data: BrowserInterface.ElementHandle[] = [ new MockElementHandle(this.serviceAccountId), ]; return Promise.resolve(data); } } catch (err) { return Promise.reject(err); } } // tslint:disable-next-line: function-name async $$eval<ReturnType>( selector: string, pageFunction: ( elements: Element[], ...args: unknown[] ) => ReturnType | Promise<ReturnType>, ) { if ( selector === apsWorkflowJson.getMonthlyUtilityData.billsDateStringSelector ) { const data: Awaited<any> = [' Sep 08, 2021 ']; return Promise.resolve(data); } } target() { return new MockTarget(); } }