fleetmap-reports 2.0.357 → 2.0.358
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/worktrees/eager-stonebraker-c08ac7/.eslintrc.js +15 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/lang/enGB.js +309 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/lang/esCL.js +297 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/lang/frFR.json +324 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/lang/index.js +35 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/lang/ptBR.js +301 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/lang/ptPT.js +310 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/package-lock.json +11944 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/package.json +45 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/activity-report.js +822 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/automaticReports.js +34 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/carbone/index.js +13 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/custom/vistawasteActivity-report.js +544 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/events-report.js +360 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/fuel-consumption-report.js +296 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/fuel-drop-report.js +128 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/here.js +172 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/idle-report.js +403 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/index.js +244 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/kms-report.js +549 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/location-report.js +496 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/machines-report.js +278 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/afriquia.js +129 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/dailyuse-report.js +80 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/delayedstart-report.js +223 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/driverranking-report.js +328 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/gpsjump-report.js +61 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/partnerReports/performance-report.js +359 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/refueling-report.js +345 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/reportStyle.js +34 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/sensor-report.js +447 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/speeding-report.js +663 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/stop-report.js +242 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/ActivityReportTemplate.mjml +51 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/EmptyReportTemplate.mjml +25 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/EventsReportTemplate.mjml +75 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/FuelDropReportTemplate.mjml +60 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/IdleReportTemplate.mjml +54 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/KmsReportGroupByDayTemplate.mjml +43 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/KmsReportTemplate.mjml +44 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/LocationReportTemplate.mjml +37 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/RefuelingReportTemplate.mjml +60 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/SensorReportTemplate.mjml +23 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/SpeedingReportTemplate.mjml +80 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/TripReportTemplate.mjml +97 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/ZoneReportTemplate.mjml +52 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/templates/report.mjml +96 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/activity.test.js +99 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/carbone.test.js +20 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/events.test.js +30 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/fuel.test.js +35 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/idle.test.js +16 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/index.js +24 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/index.test.js +203 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/kms.test.js +74 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/performance.test.js +36 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/positions.test.js +67 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/speeding.test.js +120 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/translations.test.js +21 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/trips.test.js +140 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/tests/zones.test.js +162 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/trip-report.js +641 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/device.js +13 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/driver.js +90 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/fuel.js +102 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/geofence.js +52 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/odoo.js +18 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/parallel.js +64 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/pdfDocument.js +140 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/route.js +78 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/timetable.js +30 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/traccar.js +213 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/traccar.worker.js +49 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/trips.js +270 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/utils.js +358 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/worker.js +14 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/util/xpert.js +58 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/word/index.js +95 -0
- package/.claude/worktrees/eager-stonebraker-c08ac7/src/zone-report.js +904 -0
- package/lang/enGB.js +18 -0
- package/lang/esCL.js +18 -0
- package/lang/frFR.json +7 -1
- package/lang/ptBR.js +18 -0
- package/lang/ptPT.js +18 -0
- package/package.json +1 -1
- package/src/partnerReports/driverranking-report.js +149 -49
- package/src/util/pdfDocument.js +2 -1
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/* eslint-disable no-undef */
|
|
2
|
+
const { getReports } = require('./index')
|
|
3
|
+
const assert = require('assert')
|
|
4
|
+
const utils = require('../util/utils')
|
|
5
|
+
|
|
6
|
+
// eslint-disable-next-line no-undef
|
|
7
|
+
describe('Test_Reports', function () {
|
|
8
|
+
it('converts to pdf', async () => {
|
|
9
|
+
const report = await getReports()
|
|
10
|
+
const userData = await report.getUserData()
|
|
11
|
+
userData.roadSpeedLimits = false
|
|
12
|
+
userData.customSpeed = false
|
|
13
|
+
userData.useVehicleSpeedLimit = true
|
|
14
|
+
const data = await report.speedingReport(
|
|
15
|
+
new Date(Date.UTC(2023, 7, 1, 0, 0, 0, 0)),
|
|
16
|
+
new Date(Date.UTC(2023, 7, 2, 23, 59, 59, 0)),
|
|
17
|
+
userData)
|
|
18
|
+
const pdf = await report.speedingReportToPDF(userData, data[0])
|
|
19
|
+
pdf.save()
|
|
20
|
+
}, 40000)
|
|
21
|
+
|
|
22
|
+
it('converts madrid time', async () => {
|
|
23
|
+
assert.equal(false, utils.isClientSide())
|
|
24
|
+
console.log(utils.convertToLocaleString(new Date(), 'es-CL', 'Europe/Madrid'))
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
it('Idle by device', async () => {
|
|
28
|
+
const report = await getReports()
|
|
29
|
+
const userData = await report.getUserData()
|
|
30
|
+
userData.minimumIdleMinutes = 2
|
|
31
|
+
const data = await report.idleReport(new Date(2022, 0, 3, 0, 0, 0, 0),
|
|
32
|
+
new Date(2022, 0, 7, 23, 59, 59, 0),
|
|
33
|
+
userData)
|
|
34
|
+
assert.equal(data.length, 1)
|
|
35
|
+
const device = data[0].devices.find(d => d.device.id === 22326)
|
|
36
|
+
const totalIdleTime = device.idleEvents.reduce((a, b) => a + b.idleTime, 0)
|
|
37
|
+
assert.equal(device.idleEvents.length, 9) // Total Alerts
|
|
38
|
+
assert.equal(totalIdleTime, 1592000) // Total Duration
|
|
39
|
+
}, 20000)
|
|
40
|
+
// eslint-disable-next-line no-undef
|
|
41
|
+
it('Idle by driver', async () => {
|
|
42
|
+
const report = await getReports()
|
|
43
|
+
const userData = await report.getUserData()
|
|
44
|
+
userData.minimumIdleMinutes = 0
|
|
45
|
+
userData.byDriver = true
|
|
46
|
+
|
|
47
|
+
console.log(userData.drivers)
|
|
48
|
+
const data = await report.idleReport(new Date(2022, 0, 3, 0, 0, 0, 0),
|
|
49
|
+
new Date(2022, 0, 7, 23, 59, 59, 0),
|
|
50
|
+
userData)
|
|
51
|
+
assert.equal(data.length, 1)
|
|
52
|
+
const driver = data[0].drivers.find(d => d.driver.id === 14020)
|
|
53
|
+
|
|
54
|
+
const totalIdleTime = driver.idleEvents.reduce((a, b) => a + b.idleTime, 0)
|
|
55
|
+
assert.equal(driver.idleEvents.length, 15) // Total Alerts
|
|
56
|
+
assert.equal(totalIdleTime, 16000) // Total Duration
|
|
57
|
+
}, 20000)
|
|
58
|
+
// eslint-disable-next-line no-undef
|
|
59
|
+
it('test allinone', async () => {
|
|
60
|
+
console.log('Start')
|
|
61
|
+
const reports = await getReports()
|
|
62
|
+
const userData = await reports.getUserData()
|
|
63
|
+
const r = await require('../util/traccar').getAllInOne(reports.traccar,
|
|
64
|
+
new Date(2022, 1, 1, 0, 0, 0, 0),
|
|
65
|
+
new Date(2022, 1, 4, 23, 59, 59, 0),
|
|
66
|
+
userData.devices,
|
|
67
|
+
false,
|
|
68
|
+
true,
|
|
69
|
+
true,
|
|
70
|
+
false)
|
|
71
|
+
|
|
72
|
+
assert.equal(r.trips.filter(t => t.deviceId === 22327).length, 20)
|
|
73
|
+
assert.equal(r.stops.filter(t => t.deviceId === 22327).length, 21)
|
|
74
|
+
}, 20000)
|
|
75
|
+
// eslint-disable-next-line no-undef
|
|
76
|
+
it('Total KMS', async () => {
|
|
77
|
+
const report = await getReports()
|
|
78
|
+
const userData = await report.getUserData()
|
|
79
|
+
|
|
80
|
+
const tripsReport = await report.tripReport(
|
|
81
|
+
new Date(Date.UTC(2022, 1, 11, 0, 0, 0, 0)),
|
|
82
|
+
new Date(Date.UTC(2022, 1, 14, 23, 59, 59, 0)),
|
|
83
|
+
userData)
|
|
84
|
+
|
|
85
|
+
const kmsReport = await report.kmsReport(
|
|
86
|
+
new Date(Date.UTC(2022, 1, 11, 0, 0, 0, 0)),
|
|
87
|
+
new Date(Date.UTC(2022, 1, 14, 23, 59, 59, 0)),
|
|
88
|
+
userData)
|
|
89
|
+
|
|
90
|
+
assert.equal(tripsReport.length, 1)
|
|
91
|
+
const device1 = tripsReport[0].devices.find(d => d.device.id === 22327)
|
|
92
|
+
assert.equal(device1.trips.length, 14) // Total Trips
|
|
93
|
+
assert.equal(device1.totalDistance, 85462.79000000097) // Total Kms
|
|
94
|
+
|
|
95
|
+
const device2 = kmsReport[0].devices.find(d => d.device.id === 22327)
|
|
96
|
+
assert.equal(device2.summary.distance, device1.totalDistance) // Total Kms
|
|
97
|
+
}, 30000)
|
|
98
|
+
// eslint-disable-next-line no-undef
|
|
99
|
+
it('Refueling Report', async () => {
|
|
100
|
+
const report = await getReports()
|
|
101
|
+
const userData = await report.getUserData()
|
|
102
|
+
|
|
103
|
+
const data = await report.refuelingReport(
|
|
104
|
+
new Date(Date.UTC(2022, 1, 2, 0, 0, 0, 0)),
|
|
105
|
+
new Date(Date.UTC(2022, 1, 2, 23, 59, 59, 0)),
|
|
106
|
+
userData)
|
|
107
|
+
|
|
108
|
+
assert.equal(data.length, 1)
|
|
109
|
+
}, 30000)
|
|
110
|
+
// eslint-disable-next-line no-undef
|
|
111
|
+
it('Refueling2 Report', async () => {
|
|
112
|
+
const report = await getReports()
|
|
113
|
+
const userData = await report.getUserData()
|
|
114
|
+
|
|
115
|
+
const data = await report.refuelingReport(new Date(2022, 1, 21, 0, 0, 0, 0),
|
|
116
|
+
new Date(2022, 1, 25, 23, 59, 59, 0),
|
|
117
|
+
userData)
|
|
118
|
+
|
|
119
|
+
assert.equal(data.length, 1)
|
|
120
|
+
}, 30000)
|
|
121
|
+
// eslint-disable-next-line no-undef
|
|
122
|
+
it('FuelConsumption Report', async () => {
|
|
123
|
+
const device1 = 22326
|
|
124
|
+
const device2 = 122575
|
|
125
|
+
const report = await getReports()
|
|
126
|
+
const userData = await report.getUserData()
|
|
127
|
+
const devices = userData.devices
|
|
128
|
+
userData.devices = devices.filter(d => d.id === device1)
|
|
129
|
+
let data = await report.fuelConsumptionReport(new Date(2022, 0, 1, 0, 0, 0, 0),
|
|
130
|
+
new Date(2022, 0, 10, 23, 59, 59, 0),
|
|
131
|
+
userData)
|
|
132
|
+
|
|
133
|
+
assert.equal(data.length, 1)
|
|
134
|
+
let device = data[0].devices.find(d => d.device.id === device1)
|
|
135
|
+
console.log(device.days)
|
|
136
|
+
assert.equal(device.days.length, 8)
|
|
137
|
+
assert.equal(device.days[0].spentFuel, 2)
|
|
138
|
+
userData.devices = devices.filter(d => d.id === device2)
|
|
139
|
+
data = await report.fuelConsumptionReport(new Date(2023, 0, 26, 0, 0, 0, 0),
|
|
140
|
+
new Date(2023, 0, 26, 23, 59, 59, 0),
|
|
141
|
+
userData)
|
|
142
|
+
device = data[0].devices.find(d => d.device.id === device2)
|
|
143
|
+
console.log(device.days)
|
|
144
|
+
}, 30000)
|
|
145
|
+
// eslint-disable-next-line no-undef
|
|
146
|
+
it('FuelConsumption Odoo Report', async () => {
|
|
147
|
+
const report = await getReports()
|
|
148
|
+
const userData = await report.getUserData()
|
|
149
|
+
userData.devices = userData.devices.filter(d => d.id === 22326)
|
|
150
|
+
const data = await report.fuelConsumptionReport(
|
|
151
|
+
new Date(Date.UTC(2022, 9, 1, 0, 0, 0, 0)),
|
|
152
|
+
new Date(Date.UTC(2022, 9, 31, 23, 59, 59, 0)),
|
|
153
|
+
userData)
|
|
154
|
+
|
|
155
|
+
assert.equal(data.length, 1)
|
|
156
|
+
const device = data[0].devices.find(d => d.device.id === 22326)
|
|
157
|
+
assert.equal(device.days.length, 26)
|
|
158
|
+
}, 30000)
|
|
159
|
+
// eslint-disable-next-line no-undef
|
|
160
|
+
it('FuelConsumption xpert', async () => {
|
|
161
|
+
const report = await getReports()
|
|
162
|
+
const userData = await report.getUserData()
|
|
163
|
+
userData.devices = userData.devices.filter(d => d.id === 69114)
|
|
164
|
+
const data = await report.fuelConsumptionReport(new Date(2023, 5, 11, 0, 0, 0, 0),
|
|
165
|
+
new Date(2023, 6, 11, 23, 59, 59, 0),
|
|
166
|
+
userData)
|
|
167
|
+
assert.equal(data.length, 1)
|
|
168
|
+
const device = data[0].devices.find(d => d.device.id === 69114)
|
|
169
|
+
assert.equal(device.days.reduce((a, b) => a + b.spentFuel, 0), 168.91999999999985)
|
|
170
|
+
}, 30000)
|
|
171
|
+
// eslint-disable-next-line no-undef
|
|
172
|
+
it('Zone Report', async () => {
|
|
173
|
+
const report = await getReports()
|
|
174
|
+
const userData = await report.getUserData()
|
|
175
|
+
const data = await report.zoneReport(new Date(2022, 3, 25, 0, 0, 0, 0),
|
|
176
|
+
new Date(2022, 3, 28, 23, 59, 59, 0),
|
|
177
|
+
{ ...userData, devices: userData.devices.filter(d => d.id === 22326) })
|
|
178
|
+
|
|
179
|
+
assert.equal(data.length, 1)
|
|
180
|
+
const device = data[0].devices.find(d => d.device.id === 22326)
|
|
181
|
+
assert.equal(device.geofences.length, 19)
|
|
182
|
+
console.log(device.geofences[0])
|
|
183
|
+
assert.equal(device.geofences[0].inTime.fixTime, '2022-04-25T23:47:58.000+0000')
|
|
184
|
+
assert.equal(device.geofences[0].outTime.fixTime, '2022-04-26T07:47:35.000+0000')
|
|
185
|
+
assert.equal(device.geofences[0].totalTime, '28777')
|
|
186
|
+
assert.equal(device.geofences[0].geofenceName, 'Casa João')
|
|
187
|
+
assert.equal(device.geofences[0].distanceIn, 0.38569639521207727)
|
|
188
|
+
// expect(device.geofences[0].distanceOut).toBeGreaterThan(0)
|
|
189
|
+
}, 990000)
|
|
190
|
+
// eslint-disable-next-line no-undef
|
|
191
|
+
it('Zone Report With Stops', async () => {
|
|
192
|
+
const report = await getReports()
|
|
193
|
+
const userData = await report.getUserData()
|
|
194
|
+
userData.onlyWithStop = true
|
|
195
|
+
const data = await report.zoneReport(new Date(2023, 1, 1, 0, 0, 0, 0),
|
|
196
|
+
new Date(2023, 1, 5, 23, 59, 59, 0),
|
|
197
|
+
userData)
|
|
198
|
+
|
|
199
|
+
assert.equal(data.length, 1)
|
|
200
|
+
const device = data[0].devices.find(d => d.device.id === 82063)
|
|
201
|
+
assert.equal(device.geofences.length, 15)
|
|
202
|
+
}, 30000)
|
|
203
|
+
})
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/* eslint-disable no-undef */
|
|
2
|
+
const { getReports } = require('./index')
|
|
3
|
+
const assert = require('assert')
|
|
4
|
+
const { convertFromLocal } = require('../util/utils')
|
|
5
|
+
|
|
6
|
+
describe('Kms_Reports', function () {
|
|
7
|
+
// eslint-disable-next-line no-undef
|
|
8
|
+
it('KmsReport by device', async () => {
|
|
9
|
+
const reports = await getReports()
|
|
10
|
+
const userData = await reports.getUserData()
|
|
11
|
+
userData.devices = userData.devices.filter(d => d.id === 22326)
|
|
12
|
+
const data = await reports.kmsReport(new Date(2023, 5, 1, 0, 0, 0), new Date(2023, 5, 31, 23, 59, 59),
|
|
13
|
+
userData)
|
|
14
|
+
assert.equal(data.length, 1)
|
|
15
|
+
assert.equal(data.length, 1)
|
|
16
|
+
const device = data[0].devices.find(d => d.device.id === 22326)
|
|
17
|
+
assert.notEqual(device, undefined)
|
|
18
|
+
assert.equal(device.summary.distance, 1878840.7300000389) // Total Kms
|
|
19
|
+
}, 30000)
|
|
20
|
+
it('works with many devices', async () => {
|
|
21
|
+
const reports = await getReports(process.env.USER_NOGARTEL, process.env.PASS_NOGARTEL)
|
|
22
|
+
const userData = await reports.getUserData()
|
|
23
|
+
const data = await reports.kmsReport(new Date(2023, 5, 1, 0, 0, 0), new Date(2023, 5, 31, 23, 59, 59),
|
|
24
|
+
userData)
|
|
25
|
+
assert.equal(data.length, 1)
|
|
26
|
+
assert.notEqual(device, undefined)
|
|
27
|
+
assert.equal(device.summary.distance, 1878840.7300000389) // Total Kms
|
|
28
|
+
}, 300000)
|
|
29
|
+
// eslint-disable-next-line no-undef
|
|
30
|
+
it('KmsReport byDevice groupByDay', async () => {
|
|
31
|
+
const reports = await getReports()
|
|
32
|
+
const userData = await reports.getUserData()
|
|
33
|
+
userData.devices = userData.devices.filter(d => d.id === 22326)
|
|
34
|
+
userData.groupByDay = true
|
|
35
|
+
const data = await reports.kmsReport(new Date(2021, 10, 1, 0, 0, 0), new Date(2021, 10, 10, 23, 59, 59),
|
|
36
|
+
userData)
|
|
37
|
+
assert.equal(data.length, 1)
|
|
38
|
+
assert.equal(data.length, 1)
|
|
39
|
+
const device = data[0].devices.find(d => d.device.id === 22326)
|
|
40
|
+
assert.equal(device.days.length, 10) // Total Kms
|
|
41
|
+
assert.equal(device.days[5].kms, 23124.280000001192) // Total Kms
|
|
42
|
+
}, 30000)
|
|
43
|
+
// eslint-disable-next-line no-undef
|
|
44
|
+
it('KmsReport by device2', async () => {
|
|
45
|
+
const reports = await getReports()
|
|
46
|
+
const userData = await reports.getUserData()
|
|
47
|
+
userData.groupByDay = true
|
|
48
|
+
userData.devices = userData.devices.filter(d => d.id === 25000)
|
|
49
|
+
const data = await reports.kmsReport(new Date(2023, 4, 26, 0, 0, 0), new Date(2023, 5, 24, 23, 59, 59),
|
|
50
|
+
userData)
|
|
51
|
+
assert.equal(data.length, 1)
|
|
52
|
+
const device = data[0].devices.find(d => d.device.id === 25000)// Total Kms
|
|
53
|
+
assert.equal(device.days.length, 30) // Total Kms
|
|
54
|
+
assert.equal(device.days[29].kms, 136174.93281451002) // Total Kms
|
|
55
|
+
}, 30000)
|
|
56
|
+
it('KmsReport by driver', async () => {
|
|
57
|
+
const reports = await getReports(process.env.USER_CTM_MOVIFLOTTE, process.env.PASS_CTM_MOVIFLOTTE)
|
|
58
|
+
const userData = await reports.getUserData()
|
|
59
|
+
userData.byDriver = true
|
|
60
|
+
console.log(userData.drivers)
|
|
61
|
+
const data = await reports.kmsReport(new Date(2024, 0, 1, 0, 0, 0), new Date(2024, 0, 31, 23, 59, 59),
|
|
62
|
+
userData)
|
|
63
|
+
assert.equal(data.length, 1)
|
|
64
|
+
}, 3000000)
|
|
65
|
+
it('KmsReport by timezone marrocos', async () => {
|
|
66
|
+
const reports = await getReports(process.env.email, process.env.password)
|
|
67
|
+
const userData = await reports.getUserData()
|
|
68
|
+
userData.devices = userData.devices.filter(d => d.id === 93497)
|
|
69
|
+
const data = await reports.kmsReport(convertFromLocal(new Date(2024, 2, 18, 0, 0, 0), userData.user.attributes.timezone), convertFromLocal(new Date(2024, 2, 18, 23, 59, 59), userData.user.attributes.timezone),
|
|
70
|
+
userData)
|
|
71
|
+
const device = data[0].devices.find(d => d.device.id === 93497)
|
|
72
|
+
assert.equal(device, 1)
|
|
73
|
+
}, 3000000)
|
|
74
|
+
})
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const { getReports } = require('./index')
|
|
2
|
+
const { createPerformanceReport } = require('../partnerReports/performance-report')
|
|
3
|
+
const assert = require('assert')
|
|
4
|
+
const { convertMS } = require('../util/utils')
|
|
5
|
+
// eslint-disable-next-line no-undef
|
|
6
|
+
describe('performance', function () {
|
|
7
|
+
// eslint-disable-next-line no-undef
|
|
8
|
+
it('performance report teltonika', async () => {
|
|
9
|
+
const report = await getReports()
|
|
10
|
+
const userData = await report.getUserData()
|
|
11
|
+
userData.devices = userData.devices.filter(d => d.id === 22326)
|
|
12
|
+
const data = await createPerformanceReport(
|
|
13
|
+
new Date(Date.UTC(2023, 6, 1, 0, 0, 0, 0)),
|
|
14
|
+
new Date(Date.UTC(2023, 6, 17, 23, 59, 59, 0)),
|
|
15
|
+
userData,
|
|
16
|
+
report.traccar)
|
|
17
|
+
console.log(data)
|
|
18
|
+
assert.equal(data[0].consumption, 19.799999999999997)
|
|
19
|
+
assert.equal(data[0].distance, 326.7657)
|
|
20
|
+
assert.equal(convertMS(data[1].time * 1000, false), '08:19')
|
|
21
|
+
}, 8000000)
|
|
22
|
+
|
|
23
|
+
// eslint-disable-next-line no-undef
|
|
24
|
+
it('performance report inofleet', async () => {
|
|
25
|
+
const report = await getReports()
|
|
26
|
+
const userData = await report.getUserData()
|
|
27
|
+
userData.devices = userData.devices.filter(d => d.id === 69114)
|
|
28
|
+
const data = await createPerformanceReport(
|
|
29
|
+
new Date(Date.UTC(2023, 5, 11, 0, 0, 0, 0)),
|
|
30
|
+
new Date(Date.UTC(2023, 6, 11, 23, 59, 59, 0)),
|
|
31
|
+
userData,
|
|
32
|
+
report.traccar)
|
|
33
|
+
console.log(data)
|
|
34
|
+
assert.equal(data[0].consumption, 168.51989999999998)
|
|
35
|
+
}, 8000000)
|
|
36
|
+
})
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const { getReports } = require('./index')
|
|
2
|
+
const assert = require('assert')
|
|
3
|
+
const xlsx = require('json-as-xlsx')
|
|
4
|
+
// eslint-disable-next-line no-undef
|
|
5
|
+
describe('test positions', function () {
|
|
6
|
+
// eslint-disable-next-line no-undef
|
|
7
|
+
it('works by device', async () => {
|
|
8
|
+
const deviceId = 209673
|
|
9
|
+
const report = await getReports(process.env.USER_NOGARTEL, process.env.PASS_NOGARTEL)
|
|
10
|
+
const userData = await report.getUserData()
|
|
11
|
+
userData.devices = userData.devices.filter(d => d.id === deviceId)
|
|
12
|
+
const data = await report.locationReport(
|
|
13
|
+
new Date(Date.UTC(2023, 7, 24, 0, 0, 0, 0)),
|
|
14
|
+
new Date(Date.UTC(2023, 7, 24, 23, 59, 59, 0)),
|
|
15
|
+
userData)
|
|
16
|
+
assert.equal(data.length, 1)
|
|
17
|
+
console.log('data', data)
|
|
18
|
+
const device = data[0].devices.find(d => d.device.id === deviceId)
|
|
19
|
+
assert.equal(device.positions.length, 2414) // Total Positions
|
|
20
|
+
userData.includeDigitalPorts = true
|
|
21
|
+
const pdf = await report.locationReportToPDF(userData, data[0])
|
|
22
|
+
pdf.save('report.pdf')
|
|
23
|
+
}, 30000)
|
|
24
|
+
// eslint-disable-next-line no-undef
|
|
25
|
+
it('works by driver', async () => {
|
|
26
|
+
const report = await getReports()
|
|
27
|
+
try {
|
|
28
|
+
const userData = await report.getUserData()
|
|
29
|
+
userData.byDriver = true
|
|
30
|
+
userData.drivers = userData.drivers.filter(d => d.name.startsWith('ERICA'))
|
|
31
|
+
const data = await report.locationReport(
|
|
32
|
+
new Date(Date.UTC(2025, 0, 1, 0, 0, 0)),
|
|
33
|
+
new Date(Date.UTC(2025, 0, 31, 23, 59, 59, 0)),
|
|
34
|
+
userData)
|
|
35
|
+
assert.equal(data.length, 1)
|
|
36
|
+
console.log(data[0].drivers)
|
|
37
|
+
const driver = data[0].drivers.find(d => d.driver.name.startsWith('ERICA'))
|
|
38
|
+
console.log(driver.positions)
|
|
39
|
+
assert.equal(driver.positions.length, 8805) // Total Positions
|
|
40
|
+
} catch (e) {
|
|
41
|
+
console.error(e.message, e.response && e.response.data, e)
|
|
42
|
+
}
|
|
43
|
+
}, 2000000)
|
|
44
|
+
// eslint-disable-next-line no-undef
|
|
45
|
+
it('works with sensores', async () => {
|
|
46
|
+
const deviceId = 288082
|
|
47
|
+
const report = await getReports(process.env.USER_ARCESE, process.env.PASS_ARCESE)
|
|
48
|
+
const userData = await report.getUserData()
|
|
49
|
+
userData.devices = userData.devices.filter(d => d.id === deviceId)
|
|
50
|
+
userData.includeDigitalPorts = true
|
|
51
|
+
const [data] = await report.locationReport(
|
|
52
|
+
new Date(Date.UTC(2024, 0, 23, 22, 0, 0, 0)),
|
|
53
|
+
new Date(Date.UTC(2024, 0, 24, 23, 59, 59, 0)),
|
|
54
|
+
userData)
|
|
55
|
+
const device = data.devices.find(d => d.device.id === deviceId)
|
|
56
|
+
assert.equal(device.positions.length, 3599) // Total Positions
|
|
57
|
+
const pdf = await report.locationReportToPDF(userData, data)
|
|
58
|
+
pdf.save()
|
|
59
|
+
const excel = report.locationReportToExcel(userData, data)
|
|
60
|
+
xlsx([{
|
|
61
|
+
sheet: 'Sheet1',
|
|
62
|
+
columns: excel.headers,
|
|
63
|
+
content: excel.data
|
|
64
|
+
}], excel.settings)
|
|
65
|
+
}, 30000)
|
|
66
|
+
// eslint-disable-next-line no-undef
|
|
67
|
+
})
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
const { getReports } = require('./index')
|
|
2
|
+
const assert = require('assert')
|
|
3
|
+
const { getCountry } = require('../util/utils')
|
|
4
|
+
|
|
5
|
+
async function getSpeedingReport (report, userData) {
|
|
6
|
+
const data = await report.speedingReport(
|
|
7
|
+
new Date(Date.UTC(2025, 4, 1, 0, 0, 0, 0)),
|
|
8
|
+
new Date(Date.UTC(2025, 4, 31, 23, 59, 59, 0)),
|
|
9
|
+
userData)
|
|
10
|
+
|
|
11
|
+
const device = data[0].devices[0]
|
|
12
|
+
const totalDistance = device && device.alerts.reduce((a, b) => a + b.distance, 0)
|
|
13
|
+
const totalEventTime = device && device.alerts.reduce((a, b) => a + b.eventTime, 0)
|
|
14
|
+
return { device, totalDistance, totalEventTime }
|
|
15
|
+
}
|
|
16
|
+
// eslint-disable-next-line no-undef
|
|
17
|
+
describe('speeding tests', function () {
|
|
18
|
+
// eslint-disable-next-line no-undef
|
|
19
|
+
it('works with road speed limits in Chile', async () => {
|
|
20
|
+
const report = await getReports(process.env.USER_CHILE, process.env.PASS_CHILE)
|
|
21
|
+
const userData = await report.getUserData()
|
|
22
|
+
// userData.devices = [userData.devices[0]]
|
|
23
|
+
userData.roadSpeedLimits = true
|
|
24
|
+
const { device } = await getSpeedingReport(report, userData)
|
|
25
|
+
assert.equal(device.alerts.length, 6) // Total Alerts
|
|
26
|
+
console.log(device.alerts)
|
|
27
|
+
}, 200000)
|
|
28
|
+
|
|
29
|
+
// eslint-disable-next-line no-undef
|
|
30
|
+
it('works by device speed limit', async () => {
|
|
31
|
+
const report = await getReports()
|
|
32
|
+
const userData = await report.getUserData()
|
|
33
|
+
userData.roadSpeedLimits = false
|
|
34
|
+
userData.customSpeed = false
|
|
35
|
+
userData.useVehicleSpeedLimit = true
|
|
36
|
+
const data = await report.speedingReport(
|
|
37
|
+
new Date(Date.UTC(2023, 7, 22, 0, 0, 0, 0)),
|
|
38
|
+
new Date(Date.UTC(2023, 7, 23, 23, 59, 59, 0)),
|
|
39
|
+
userData)
|
|
40
|
+
console.log(data[0].devices[0].alerts.length)
|
|
41
|
+
console.log(data[0].devices[0].alerts)
|
|
42
|
+
assert.equal(data[0].devices.length, 2)
|
|
43
|
+
}, 900000)
|
|
44
|
+
|
|
45
|
+
// eslint-disable-next-line no-undef
|
|
46
|
+
it('Speeding with custom speed', async () => {
|
|
47
|
+
const report = await getReports()
|
|
48
|
+
const userData = await report.getUserData()
|
|
49
|
+
|
|
50
|
+
userData.useVehicleSpeedLimit = false
|
|
51
|
+
userData.customSpeed = 100
|
|
52
|
+
const {
|
|
53
|
+
device,
|
|
54
|
+
totalDistance,
|
|
55
|
+
totalEventTime
|
|
56
|
+
} = await getSpeedingReport(report, userData)
|
|
57
|
+
assert.equal(device.alerts.length, 13) // Total Alerts
|
|
58
|
+
assert.equal(totalDistance, 46.64576895855739) // Total Kms
|
|
59
|
+
assert.equal(totalEventTime, 1402000) // Total Duration
|
|
60
|
+
}, 999990000)
|
|
61
|
+
|
|
62
|
+
// eslint-disable-next-line no-undef
|
|
63
|
+
it('Speeding by driver', async () => {
|
|
64
|
+
const report = await getReports(process.env.email, process.env.password)
|
|
65
|
+
const userData = await report.getUserData()
|
|
66
|
+
userData.byDriver = true
|
|
67
|
+
userData.useVehicleSpeedLimit = false
|
|
68
|
+
userData.customSpeed = 60
|
|
69
|
+
const data = await report.speedingReport(
|
|
70
|
+
new Date(Date.UTC(2024, 4, 2, 0, 0, 0, 0)),
|
|
71
|
+
new Date(Date.UTC(2024, 4, 2, 23, 59, 59, 0)),
|
|
72
|
+
userData)
|
|
73
|
+
assert.equal(data.drivers[0].alerts.length, 2) // Total Alerts
|
|
74
|
+
}, 999990000)
|
|
75
|
+
|
|
76
|
+
// eslint-disable-next-line no-undef
|
|
77
|
+
it('detects brazil', () => {
|
|
78
|
+
const p = {
|
|
79
|
+
id: 24088423790,
|
|
80
|
+
attributes: {
|
|
81
|
+
door: false,
|
|
82
|
+
hours: 2520745000,
|
|
83
|
+
motion: false,
|
|
84
|
+
distance: 0,
|
|
85
|
+
odometer: 5973617,
|
|
86
|
+
sat: 17,
|
|
87
|
+
battery: 4.03,
|
|
88
|
+
hdop: 0.7,
|
|
89
|
+
idleTime: 0,
|
|
90
|
+
output: 0,
|
|
91
|
+
input: 0,
|
|
92
|
+
driverUniqueId: '',
|
|
93
|
+
power: 12.61,
|
|
94
|
+
event: 0,
|
|
95
|
+
totalDistance: 31419705.27,
|
|
96
|
+
ignition: false,
|
|
97
|
+
adc3: 0,
|
|
98
|
+
adc2: 0,
|
|
99
|
+
status: 61,
|
|
100
|
+
tripTime: 0
|
|
101
|
+
},
|
|
102
|
+
deviceId: 28097,
|
|
103
|
+
type: null,
|
|
104
|
+
protocol: 'startek',
|
|
105
|
+
serverTime: '2024-01-20T03:01:50.000+00:00',
|
|
106
|
+
deviceTime: '2024-01-20T03:01:50.000+00:00',
|
|
107
|
+
fixTime: '2024-01-20T03:01:50.000+00:00',
|
|
108
|
+
outdated: false,
|
|
109
|
+
valid: true,
|
|
110
|
+
latitude: -22.295906,
|
|
111
|
+
longitude: -48.576135,
|
|
112
|
+
altitude: 579,
|
|
113
|
+
speed: 0,
|
|
114
|
+
course: 80,
|
|
115
|
+
address: 'Avenida Deputado Zien Nassif, 938, Vila Industrial, Jaú - SP, 17204-212, Brazil',
|
|
116
|
+
accuracy: 0
|
|
117
|
+
}
|
|
118
|
+
assert.equal('BRA', getCountry(p))
|
|
119
|
+
})
|
|
120
|
+
})
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const lang = require('../../lang')
|
|
2
|
+
|
|
3
|
+
// eslint-disable-next-line no-undef
|
|
4
|
+
describe('translations', function () {
|
|
5
|
+
// eslint-disable-next-line no-undef
|
|
6
|
+
it('s not missing any', function () {
|
|
7
|
+
recursiveCheck(lang['pt-BR'], lang['pt-PT'])
|
|
8
|
+
recursiveCheck(lang['pt-BR'], lang['fr-FR'])
|
|
9
|
+
recursiveCheck(lang['es-CL'], lang['fr-FR'])
|
|
10
|
+
console.log(JSON.stringify(lang['fr-FR']))
|
|
11
|
+
})
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
function recursiveCheck (object1, object2) {
|
|
15
|
+
Object.keys(object1).forEach(k1 => {
|
|
16
|
+
Object.keys(object1[k1]).forEach(k2 => {
|
|
17
|
+
console.log(k1)
|
|
18
|
+
expect(object2[k1]).toHaveProperty(k2)
|
|
19
|
+
})
|
|
20
|
+
})
|
|
21
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
const { getReports } = require('./index')
|
|
2
|
+
const assert = require('assert')
|
|
3
|
+
// eslint-disable-next-line no-undef
|
|
4
|
+
describe('trips', function () {
|
|
5
|
+
// eslint-disable-next-line no-undef
|
|
6
|
+
it('converts to pdf', async () => {
|
|
7
|
+
const report = await getReports()
|
|
8
|
+
const userData = await report.getUserData()
|
|
9
|
+
userData.roadSpeedLimits = false
|
|
10
|
+
userData.customSpeed = false
|
|
11
|
+
userData.useVehicleSpeedLimit = true
|
|
12
|
+
await report.tripReport(
|
|
13
|
+
new Date(Date.UTC(2022, 9, 22, 0, 0, 0, 0)),
|
|
14
|
+
new Date(Date.UTC(2022, 9, 22, 23, 59, 59, 0)),
|
|
15
|
+
userData)
|
|
16
|
+
// await report.tripReportToPDF(userData, data)
|
|
17
|
+
}, 40000)
|
|
18
|
+
// eslint-disable-next-line no-undef
|
|
19
|
+
it('Trip by device', async () => {
|
|
20
|
+
const report = await getReports()
|
|
21
|
+
const userData = await report.getUserData()
|
|
22
|
+
|
|
23
|
+
const data = await report.tripReport(new Date(2022, 0, 3, 0, 0, 0, 0),
|
|
24
|
+
new Date(2022, 0, 4, 23, 59, 59, 0),
|
|
25
|
+
userData)
|
|
26
|
+
|
|
27
|
+
assert.equal(data.length, 1)
|
|
28
|
+
const device = data[0].devices.find(d => d.device.id === 22326)
|
|
29
|
+
assert.equal(device.trips.length, 7) // Total Trips
|
|
30
|
+
assert.equal(device.trips[0].endPOIName, 'Casa João')
|
|
31
|
+
assert.equal(device.trips[0].idleTime, 602000)
|
|
32
|
+
assert.equal(device.trips[1].endPOIName, undefined)
|
|
33
|
+
assert.equal(device.totalDistance, 339170.3099999875) // Total Kms
|
|
34
|
+
}, 30000)
|
|
35
|
+
// eslint-disable-next-line no-undef
|
|
36
|
+
it('Trip by driver', async () => {
|
|
37
|
+
const report = await getReports()
|
|
38
|
+
const userData = await report.getUserData()
|
|
39
|
+
userData.byDriver = true
|
|
40
|
+
const data = await report.tripReport(new Date(2022, 1, 1, 0, 0, 0, 0),
|
|
41
|
+
new Date(2022, 1, 10, 23, 59, 59, 0),
|
|
42
|
+
userData)
|
|
43
|
+
assert.equal(data.length, 1)
|
|
44
|
+
console.log(data[0].drivers)
|
|
45
|
+
const driver = data[0].drivers.find(d => d.driver.id === 14020)
|
|
46
|
+
assert.equal(driver.trips.length, 13) // Total Trips
|
|
47
|
+
assert.equal(driver.totalDuration, 8159000)
|
|
48
|
+
assert.equal(driver.maxSpeed, 78.8337)
|
|
49
|
+
}, 90000)
|
|
50
|
+
// eslint-disable-next-line no-undef
|
|
51
|
+
it('Trip without addresses', async () => {
|
|
52
|
+
const report = await getReports()
|
|
53
|
+
const userData = await report.getUserData()
|
|
54
|
+
|
|
55
|
+
const data = await report.tripReport(new Date(2022, 4, 27, 0, 0, 0, 0),
|
|
56
|
+
new Date(2022, 4, 27, 23, 59, 59, 0),
|
|
57
|
+
userData)
|
|
58
|
+
|
|
59
|
+
assert.equal(data.length, 1)
|
|
60
|
+
const device = data[0].devices.find(d => d.device.id === 25808)
|
|
61
|
+
assert.equal(device.trips.length, 12) // Total Trips
|
|
62
|
+
console.log(device.trips[0])
|
|
63
|
+
// assert.equal(device.trips[0].endAddress, 'RS-409, 184-314 - Centro, Vera Cruz - RS, 96880-000, Brazil')
|
|
64
|
+
assert.equal(device.trips[1].endPOIName, undefined)
|
|
65
|
+
}, 20000)
|
|
66
|
+
// eslint-disable-next-line no-undef
|
|
67
|
+
it('Trip by device with time period ', async () => {
|
|
68
|
+
const report = await getReports(process.env.jppenas_email, process.env.jppenas_password)
|
|
69
|
+
const userData = await report.getUserData()
|
|
70
|
+
|
|
71
|
+
userData.allWeek = false
|
|
72
|
+
userData.weekDays = {
|
|
73
|
+
sunday: true,
|
|
74
|
+
monday: true,
|
|
75
|
+
tuesday: true,
|
|
76
|
+
wednesday: true,
|
|
77
|
+
thursday: true,
|
|
78
|
+
friday: true,
|
|
79
|
+
saturday: true
|
|
80
|
+
}
|
|
81
|
+
userData.dayHours = {
|
|
82
|
+
startTime: '15:00',
|
|
83
|
+
endTime: '19:00'
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const data = await report.tripReport(
|
|
87
|
+
new Date(Date.UTC(2023, 9, 1, 0, 0, 0, 0)),
|
|
88
|
+
new Date(Date.UTC(2023, 9, 1, 23, 59, 59, 0)),
|
|
89
|
+
userData)
|
|
90
|
+
|
|
91
|
+
assert.equal(data.length, 1)
|
|
92
|
+
const device = data[0].devices.find(d => d.device.id === 22326)
|
|
93
|
+
assert.equal(device.trips.length, 1) // Total Trips
|
|
94
|
+
assert.equal(device.totalDistance, 33538.860000000335) // Total Kms
|
|
95
|
+
}, 20000)
|
|
96
|
+
// eslint-disable-next-line no-undef
|
|
97
|
+
it('Trip by device with time period 2', async () => {
|
|
98
|
+
const report = await getReports(process.env.jppenas_email, process.env.jppenas_password)
|
|
99
|
+
const userData = await report.getUserData()
|
|
100
|
+
|
|
101
|
+
userData.allWeek = false
|
|
102
|
+
userData.weekDays = {
|
|
103
|
+
sunday: true,
|
|
104
|
+
monday: true,
|
|
105
|
+
tuesday: true,
|
|
106
|
+
wednesday: true,
|
|
107
|
+
thursday: true,
|
|
108
|
+
friday: true,
|
|
109
|
+
saturday: true
|
|
110
|
+
}
|
|
111
|
+
userData.dayHours = {
|
|
112
|
+
startTime: '20:00',
|
|
113
|
+
endTime: '09:00'
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const data = await report.tripReport(
|
|
117
|
+
new Date(Date.UTC(2023, 9, 2, 0, 0, 0, 0)),
|
|
118
|
+
new Date(Date.UTC(2023, 9, 2, 23, 59, 59, 0)),
|
|
119
|
+
userData)
|
|
120
|
+
|
|
121
|
+
assert.equal(data.length, 1)
|
|
122
|
+
const device = data[0].devices.find(d => d.device.id === 22326)
|
|
123
|
+
assert.equal(device.trips.length, 3) // Total Trips
|
|
124
|
+
assert.equal(device.totalDistance, 18589.02999999933) // Total Kms
|
|
125
|
+
}, 20000)
|
|
126
|
+
|
|
127
|
+
// eslint-disable-next-line no-undef
|
|
128
|
+
it('Trip fuel consumption', async () => {
|
|
129
|
+
const report = await getReports()
|
|
130
|
+
const userData = await report.getUserData()
|
|
131
|
+
userData.devices = userData.devices.filter(d => d.id === 69114)
|
|
132
|
+
const data = await report.tripReport(new Date(2023, 5, 11, 0, 0, 0, 0),
|
|
133
|
+
new Date(2023, 6, 11, 23, 59, 59, 0),
|
|
134
|
+
userData)
|
|
135
|
+
|
|
136
|
+
assert.equal(data.length, 1)
|
|
137
|
+
const device = data[0].devices.find(d => d.device.id === 69114)
|
|
138
|
+
assert.equal(device.trips.reduce((a, b) => a + b.fuelConsumption, 0), 167.69999999999987) // Total Trips
|
|
139
|
+
}, 30000)
|
|
140
|
+
})
|