aps-data-api
Version:
package for data extraction from APS company for omnimetic project
134 lines (123 loc) • 3.34 kB
text/typescript
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();
}
}