Skip to content

Commit

Permalink
Merge pull request #131 from Hacksore/develop
Browse files Browse the repository at this point in the history
v7.1.0
  • Loading branch information
Hacksore authored Apr 13, 2021
2 parents a1d4be2 + d0966e5 commit ee38234
Show file tree
Hide file tree
Showing 21 changed files with 15,442 additions and 133 deletions.
4 changes: 3 additions & 1 deletion __tests__/mock/americanStatus.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
"value": "LO"
},
"battery": {
"batSignalReferenceValue": {},
"batSignalReferenceValue": {

},
"batSoc": 67,
"batState": 0,
"sjbDeliveryMode": 1
Expand Down
113 changes: 113 additions & 0 deletions __tests__/mock/americanStatusEV.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
{
"dateTime": "2021-04-03T19:58:29Z",
"acc": false,
"trunkOpen": false,
"doorLock": true,
"defrostStatus": "false",
"transCond": true,
"doorLockStatus": "true",
"doorOpen": { "frontRight": 0, "frontLeft": 0, "backLeft": 0, "backRight": 0 },
"airCtrlOn": false,
"airTemp": { "unit": 1, "hvacTempType": 1, "value": "LO" },
"evStatus": {
"valueDiff": 0,
"remainTime2": {
"etc3": { "unit": 1, "value": 0 },
"etc2": { "unit": 1, "value": 0 },
"atc": { "unit": 1, "value": 0 },
"etc1": { "unit": 1, "value": 0 }
},
"evIgnitionStatus": true,
"batteryPlugin": 0,
"timeDiff": 20415,
"batteryCharge": false,
"batteryStatus": 100,
"remainTime": [],
"drvDistance": [
{
"rangeByFuel": {
"gasModeRange": { "unit": 3, "value": 0 },
"totalAvailableRange": { "unit": 3, "value": 294 },
"evModeRange": { "unit": 3, "value": 294 }
},
"type": 2
}
],
"reservChargeInfos": {
"targetSOClist": [
{
"rangeByFuel": {
"gasModeRange": { "unit": 3, "value": 0 },
"totalAvailableRange": { "unit": 3, "value": 294 },
"evModeRange": { "unit": 3, "value": 294 }
},
"plugType": 0,
"targetSOClevel": 100,
"type": 2
},
{
"rangeByFuel": {
"gasModeRange": { "unit": 3, "value": 0 },
"totalAvailableRange": { "unit": 3, "value": 294 },
"evModeRange": { "unit": 3, "value": 294 }
},
"plugType": 1,
"targetSOClevel": 100,
"type": 2
}
],
"reservChargeInfo": {
"dateTime": "2021/04/03T14:16:58Z",
"reservChargeInfoDetail": {
"reservChargeSet": false,
"reservEndTime": "",
"reservFatcSet": {
"defrost": false,
"airTemp": { "unit": 1, "value": "75" },
"airCtrl": 0
},
"reservInfo": { "time": { "timeSection": 0, "time": "1200" }, "day": [9] }
}
},
"reservFlag": 0,
"reserveChargeInfo2": {
"reservChargeInfoDetail": {
"reservChargeSet": false,
"reservEndTime": "",
"reservFatcSet": {
"defrost": false,
"airTemp": { "unit": 1, "value": "75" },
"airCtrl": 0
},
"reservInfo": { "time": { "timeSection": 0, "time": "1200" }, "day": [9] }
}
},
"offpeakPowerInfo": {
"offPeakPowerFlag": 0,
"offPeakPowerTime1": {
"startTime": { "timeSection": 0, "time": "1200" },
"endTime": { "timeSection": 0, "time": "1200" }
}
}
}
},
"battery": { "batSoc": 82, "batState": 0, "sjbDeliveryMode": 0 },
"ign3": true,
"ignitionStatus": "false",
"lowFuelLight": false,
"sideBackWindowHeat": 0,
"engine": false,
"sleepModeCheck": false,
"defrost": false,
"hoodOpen": false,
"airConditionStatus": "false",
"steerWheelHeat": 0,
"tirePressureLamp": {
"tirePressureWarningLampRearLeft": 0,
"tirePressureWarningLampFrontLeft": 0,
"tirePressureWarningLampFrontRight": 0,
"tirePressureWarningLampAll": 0,
"tirePressureWarningLampRearRight": 0
},
"trunkOpenStatus": "false"
}
11 changes: 10 additions & 1 deletion __tests__/util.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { tempCodeToCelsius, celciusToTempCode } from '../src/util';
import { tempCodeToCelsius, celciusToTempCode, parseDate, addMinutes } from '../src/util';

describe('Utility', () => {
it('converts temp code to celsius', () => {
Expand All @@ -10,4 +10,13 @@ describe('Utility', () => {
expect(celciusToTempCode(14)).toEqual('0H');
expect(celciusToTempCode(19)).toEqual('AH');
});

it('parseDate converts string to date', () => {
expect(parseDate('20210118153031')).toEqual(new Date('2021-01-18:15:30:31'));
});

it('addTime can add minutes to a date', () => {
const start = new Date('2021-01-18:12:00:00');
expect(addMinutes(start, 30)).toEqual(new Date('2021-01-18:12:30:00'));
});
});
82 changes: 82 additions & 0 deletions __tests__/vehicle.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,88 @@ describe('CanadianVehicle', () => {
const response = await vehicle.lock();
expect(response).toEqual('Lock successful');
});
it('call start command succesfully', async () => {
// default session with a valid token
vehicle.controller.session = {
accessToken: 'JEST_TOKEN',
refreshToken: 'JEST_TOKEN',
tokenExpiresAt: Date.now() / 1000 + 300,
};

gotMock.mockReturnValueOnce({
body: {
result: {
pAuth: 'test',
},
responseHeader: {
responseCode: 0,
},
},
statusCode: 200,
json: true,
});

gotMock.mockReturnValueOnce({
body: {
responseHeader: {
responseCode: 0,
},
},
statusCode: 200,
json: true,
});

const response = await vehicle.start({
airCtrl: false,
igniOnDuration: 10,
airTempvalue: 70,
defrost: false,
heating1: false,
});
expect(response).toEqual('Vehicle started!');
});

it('call start command with error', async () => {
// default session with a valid token
vehicle.controller.session = {
accessToken: 'JEST_TOKEN',
refreshToken: 'JEST_TOKEN',
tokenExpiresAt: Date.now() / 1000 + 300,
};

gotMock.mockReturnValueOnce({
body: {
result: {
pAuth: 'test',
},
responseHeader: {
responseCode: 0,
},
},
statusCode: 200,
json: true,
});

gotMock.mockReturnValueOnce({
body: {
responseHeader: {
responseCode: 1,
responseDesc: 'failed'
},
},
statusCode: 200,
json: true,
});

const response = await vehicle.start({
airCtrl: false,
igniOnDuration: 10,
airTempvalue: 70,
defrost: false,
heating1: false,
});
expect(response).toEqual('Failed to start vehicle');
});
});

describe('EuropeanVehicle', () => {
Expand Down
32 changes: 27 additions & 5 deletions debug.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ const apiCalls = [
{ name: 'lock', value: 'lock' },
{ name: 'unlock', value: 'unlock' },
{ name: 'locate', value: 'locate' },
{ name: 'monthly report', value: 'monthlyReport' },
{ name: 'trip informations', value: 'tripInfo' },
{ name: '[EV] get charge targets', value: 'getChargeTargets' },
{ name: '[EV] set charge targets', value: 'setChargeTargets' },
{ name: '[EU] monthly report', value: 'monthlyReport' },
{ name: '[EU] trip informations', value: 'tripInfo' },
{ name: '[EU][EV] get charge targets', value: 'getChargeTargets' },
{ name: '[EU][EV] set charge targets', value: 'setChargeTargets' },
];

let vehicle;
Expand Down Expand Up @@ -166,7 +166,29 @@ async function performCommand(command) {
console.log('monthyReport : ' + JSON.stringify(report, null, 2));
break;
case 'tripInfo':
const trips = await vehicle.tripInfo();
const currentYear = new Date().getFullYear();
const { year, month, day } = await inquirer
.prompt([
{
type: 'list',
name: 'year',
message: 'Which year?',
choices: new Array(currentYear - 2015).fill(0).map((_, i) => currentYear - i),
},
{
type: 'list',
name: 'month',
message: 'Which month?',
choices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
},
{
type: 'list',
name: 'day',
message: 'Which day (0 to ignore the day)?',
choices: new Array(32).fill(0).map((_, i) => i),
}
]);
const trips = await vehicle.tripInfo({ year, month, day: day === 0 ? undefined : day });
console.log('trips : ' + JSON.stringify(trips, null, 2));
break;
case 'getChargeTargets':
Expand Down
Loading

0 comments on commit ee38234

Please sign in to comment.