Skip to content

Commit

Permalink
Merge pull request #57 from Hacksore/develop
Browse files Browse the repository at this point in the history
Fix #55 and update unit tests
  • Loading branch information
Hacksore authored Jul 18, 2020
2 parents dcfbbbe + 200b5ba commit 2c97e73
Show file tree
Hide file tree
Showing 7 changed files with 219 additions and 26 deletions.
50 changes: 50 additions & 0 deletions __tests__/mock/americanStatus.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"vehicleStatus": {
"dateTime": "2020-05-20T23:20:39Z",
"acc": false,
"trunkOpen": false,
"doorLock": false,
"defrostStatus": "false",
"transCond": true,
"doorLockStatus": "false",
"doorOpen": {
"frontRight": 1,
"frontLeft": 1,
"backLeft": 0,
"backRight": 0
},
"airCtrlOn": false,
"airTemp": {
"unit": 1,
"hvacTempType": 1,
"value": "LO"
},
"battery": {
"batSignalReferenceValue": {},
"batSoc": 67,
"batState": 0,
"sjbDeliveryMode": 1
},
"ign3": false,
"ignitionStatus": "false",
"lowFuelLight": false,
"sideBackWindowHeat": 0,
"dte": {
"unit": 3,
"value": 142
},
"engine": false,
"defrost": false,
"hoodOpen": false,
"airConditionStatus": "false",
"steerWheelHeat": 0,
"tirePressureLamp": {
"tirePressureWarningLampRearLeft": 0,
"tirePressureWarningLampFrontLeft": 0,
"tirePressureWarningLampFrontRight": 0,
"tirePressureWarningLampAll": 0,
"tirePressureWarningLampRearRight": 0
},
"trunkOpenStatus": "false"
}
}
123 changes: 123 additions & 0 deletions __tests__/mock/europeStatus.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
{
"resMsg": {
"vehicleStatusInfo": {
"vehicleStatus": {
"airCtrlOn": false,
"engine": false,
"doorLock": true,
"doorOpen": {
"frontLeft": 0,
"frontRight": 0,
"backLeft": 0,
"backRight": 0
},
"trunkOpen": false,
"airTemp": { "value": "0FH", "unit": 0, "hvacTempType": 1 },
"defrost": false,
"acc": false,
"evStatus": {
"batteryCharge": false,
"batteryStatus": 54,
"batteryPlugin": 0,
"remainTime2": {
"etc1": { "value": 22, "unit": 1 },
"etc2": { "value": 1020, "unit": 1 },
"etc3": { "value": 230, "unit": 1 },
"atc": { "value": 410, "unit": 1 }
},
"drvDistance": [
{
"rangeByFuel": {
"evModeRange": { "value": 235, "unit": 1 },
"totalAvailableRange": { "value": 235, "unit": 1 }
},
"type": 2
}
],
"reservChargeInfos": {
"reservChargeInfo": {
"reservChargeInfoDetail": {
"reservInfo": {
"day": [4],
"time": { "time": "1030", "timeSection": 0 }
},
"reservChargeSet": true,
"reservFatcSet": {
"defrost": false,
"airTemp": { "value": "0FH", "unit": 0, "hvacTempType": 1 },
"airCtrl": 0,
"heating1": 0
}
}
},
"offpeakPowerInfo": {
"offPeakPowerTime1": {
"starttime": { "time": "1200", "timeSection": 0 },
"endtime": { "time": "1200", "timeSection": 0 }
},
"offPeakPowerFlag": 0
},
"reserveChargeInfo2": {
"reservChargeInfoDetail": {
"reservInfo": {
"day": [0],
"time": { "time": "1100", "timeSection": 0 }
},
"reservChargeSet": false,
"reservFatcSet": {
"defrost": false,
"airTemp": { "value": "0FH", "unit": 0, "hvacTempType": 1 },
"airCtrl": 0,
"heating1": 0
}
}
},
"reservFlag": 0,
"ect": {
"start": { "day": 9, "time": { "time": "1200", "timeSection": 0 } },
"end": { "day": 9, "time": { "time": "1200", "timeSection": 0 } }
},
"targetSOClist": [
{
"targetSOClevel": 80,
"dte": {
"rangeByFuel": {
"evModeRange": { "value": 354, "unit": 1 },
"totalAvailableRange": { "value": 354, "unit": 1 }
},
"type": 2
},
"plugType": 0
},
{
"targetSOClevel": 100,
"dte": {
"rangeByFuel": {
"evModeRange": { "value": 447, "unit": 1 },
"totalAvailableRange": { "value": 447, "unit": 1 }
},
"type": 2
},
"plugType": 1
}
]
}
},
"ign3": true,
"hoodOpen": false,
"transCond": true,
"steerWheelHeat": 0,
"sideBackWindowHeat": 0,
"tirePressureLamp": {
"tirePressureLampAll": 0,
"tirePressureLampFL": 0,
"tirePressureLampFR": 0,
"tirePressureLampRL": 0,
"tirePressureLampRR": 0
},
"battery": { "batSoc": 91, "batState": 0 },
"time": "20200718192140"
}
}
}
}
52 changes: 32 additions & 20 deletions __tests__/vehicle.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ import { EuropeanController } from '../lib/controllers/european.controller';
import CanadianVehicle from '../lib/vehicles/canadian.vehicle';
import { CanadianController } from '../lib/controllers/canadian.controller';

import AMERICAN_STATUS_MOCK from './mock/americanStatus.json';
import EUROPE_STATUS_MOCK from './mock/europeStatus.json';

jest.mock('got');

const referenceMap = {
Expand Down Expand Up @@ -73,6 +76,16 @@ describe('AmericanVehicle', () => {
const response = await vehicle.lock();
expect(response).toEqual('Lock successful');
});

it('call status commmand', async () => {
(got as any).mockReturnValueOnce({
body: JSON.stringify(AMERICAN_STATUS_MOCK),
statusCode: 200,
});

const response = await vehicle.status({ parsed: true });
expect(response.engine.range).toEqual(AMERICAN_STATUS_MOCK.vehicleStatus.dte.value);
});
});

describe('CanadianVehicle', () => {
Expand Down Expand Up @@ -116,24 +129,23 @@ describe('EuropeanVehicle', () => {
expect(vehicle.nickname()).toEqual('Jest is best');
});

// TODO: EU lead gets to write these :)
// it('call lock commmand', async () => {
// (got as any).mockReturnValueOnce({
// body: {},
// statusCode: 200
// });

// const response = await vehicle.lock();
// expect(response).toEqual('Lock successful');
// });

// it('call unlock commmand', async () => {
// (got as any).mockReturnValueOnce({
// body: {},
// statusCode: 200
// });

// const response = await vehicle.unlock();
// expect(response).toEqual('Unlock successful');
// });
it('call status commmand', async () => {
// mocks the pin code request
(got as any).mockReturnValueOnce({
body: {},
statusCode: 200,
});

(got as any).mockReturnValueOnce({
body: EUROPE_STATUS_MOCK,
statusCode: 200,
});

const response = await vehicle.status({ parsed: true });

const expected =
EUROPE_STATUS_MOCK.resMsg.vehicleStatusInfo.vehicleStatus.evStatus.drvDistance[0].rangeByFuel
.totalAvailableRange.value;
expect(response.engine.range).toEqual(expected);
});
});
12 changes: 10 additions & 2 deletions lib/util.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
export const getTempCode = (temperature: number): string => {
switch (temperature) {
case 14.0:
return '00H';
case 14.5:
return '01H';
case 15.0:
return '02H';
case 15.5:
Expand Down Expand Up @@ -63,12 +67,16 @@ export const getTempCode = (temperature: number): string => {
case 30.0:
return '20H';
default:
throw new Error('temperature out of bounds! min: 15.0* max: 30*, max step: 0.5');
throw new Error('temperature out of bounds! min: 14.0* max: 30*, max step: 0.5');
}
};

export const getTempFromCode = (code: string): number => {
switch (code) {
case '00H':
return 14.0;
case '01H':
return 14.5;
case '02H':
return 15.0;
case '03H':
Expand Down Expand Up @@ -132,6 +140,6 @@ export const getTempFromCode = (code: string): number => {
case '20H':
return 30.0;
default:
throw new Error('temperature out of bounds! min: 15.0* max: 30*, max step: 0.5');
throw new Error('temperature out of bounds! min: 14.0* max: 30*, max step: 0.5');
}
};
2 changes: 1 addition & 1 deletion lib/vehicles/american.vehicle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ export default class AmericanVehicle extends Vehicle {
} as VehicleStatus;

this._status = input.parsed ? parsedStatus : vehicleStatus;

return Promise.resolve(this._status);
}

Expand Down
4 changes: 2 additions & 2 deletions lib/vehicles/european.vehicle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ export default class EuropeanVehicle extends Vehicle {
hoodOpen: vehicleStatus.hoodOpen,
trunkOpen: vehicleStatus.trunkOpen,
locked: vehicleStatus.doorLock,
doors: {
openDoors: {
frontRight: !!vehicleStatus.doorOpen.frontRight,
frontLeft: !!vehicleStatus.doorOpen.frontLeft,
backLeft: !!vehicleStatus.doorOpen.backLeft,
Expand Down Expand Up @@ -214,7 +214,7 @@ export default class EuropeanVehicle extends Vehicle {
charging: vehicleStatus?.evStatus?.batteryCharge,
batteryCharge: vehicleStatus?.battery?.batSoc,
},
};
} as VehicleStatus;

this._status = input.parsed ? parsedStatus : vehicleStatus;

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bluelinky",
"version": "5.1.0",
"version": "5.1.1",
"description": "",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down

0 comments on commit 2c97e73

Please sign in to comment.