UNPKG

@sports-alliance/sports-lib

Version:

A Library to for importing / exporting and processing GPX, TCX, FIT and JSON files from services such as Strava, Movescount, Garmin, Polar etc

47 lines (46 loc) 2.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const importer_fit_1 = require("./importer.fit"); const activity_1 = require("../../../../activities/activity"); const activity_types_1 = require("../../../../activities/activity.types"); const creator_1 = require("../../../../creators/creator"); const data_duration_1 = require("../../../../data/data.duration"); const data_elapsed_time_1 = require("../../../../data/data.elapsed-time"); const data_timer_time_1 = require("../../../../data/data.timer-time"); describe('EventImporterFIT duration policy', () => { let mockActivity; beforeEach(() => { mockActivity = new activity_1.Activity(new Date(), new Date(Date.now() + 60000), activity_types_1.ActivityTypes.Cycling, new creator_1.Creator('Test')); }); const getStatValue = (stats, type) => { var _a; return (_a = stats.find(stat => stat.getType() === type)) === null || _a === void 0 ? void 0 : _a.getValue(); }; it('uses timer time as Duration and keeps elapsed time as a dedicated stat', () => { const stats = importer_fit_1.EventImporterFIT.getStatsFromObject({ total_elapsed_time: 20436.242, total_timer_time: 13705.229 }, mockActivity, false); expect(getStatValue(stats, data_duration_1.DataDuration.type)).toBe(13705.23); expect(getStatValue(stats, data_timer_time_1.DataTimerTime.type)).toBe(13705.23); expect(getStatValue(stats, data_elapsed_time_1.DataElapsedTime.type)).toBe(20436.24); }); it('clamps tiny timer > elapsed discrepancies as rounding noise instead of swapping', () => { const stats = importer_fit_1.EventImporterFIT.getStatsFromObject({ total_elapsed_time: 4077.19, total_timer_time: 4077.392 }, mockActivity, false); expect(getStatValue(stats, data_duration_1.DataDuration.type)).toBe(4077.19); expect(getStatValue(stats, data_timer_time_1.DataTimerTime.type)).toBe(4077.19); expect(getStatValue(stats, data_elapsed_time_1.DataElapsedTime.type)).toBe(4077.19); }); it('swaps materially inverted elapsed/timer values from broken FIT files', () => { const stats = importer_fit_1.EventImporterFIT.getStatsFromObject({ total_elapsed_time: 100, total_timer_time: 120 }, mockActivity, false); expect(getStatValue(stats, data_duration_1.DataDuration.type)).toBe(100); expect(getStatValue(stats, data_timer_time_1.DataTimerTime.type)).toBe(100); expect(getStatValue(stats, data_elapsed_time_1.DataElapsedTime.type)).toBe(120); }); });