@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
64 lines (63 loc) • 3.55 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = require("./index");
const activity_types_1 = require("./activities/activity.types");
const data_activity_types_1 = require("./data/data.activity-types");
const data_distance_1 = require("./data/data.distance");
const data_ibi_1 = require("./data/data.ibi");
const data_power_curve_1 = require("./data/data.power-curve");
const data_time_1 = require("./data/data.time");
const file_type_enum_1 = require("./events/adapters/file-type.enum");
const privacy_class_interface_1 = require("./privacy/privacy.class.interface");
const data_duration_1 = require("./data/data.duration");
const data_power_1 = require("./data/data.power");
describe('SportsLib', () => {
it('should import native JSON events through the public API with activities and power curves intact', () => {
var _a, _b, _c, _d;
const eventCurve = new data_power_curve_1.DataPowerCurve([{ duration: new data_duration_1.DataDuration(1), power: new data_power_1.DataPower(300) }]).toJSON();
const activityCurve = new data_power_curve_1.DataPowerCurve([{ duration: new data_duration_1.DataDuration(5), power: new data_power_1.DataPower(250) }]).toJSON();
const event = index_1.SportsLib.importFromJSON({
name: 'native-json',
startDate: 0,
endDate: 3000,
srcFileType: file_type_enum_1.FileType.FIT,
description: null,
isMerge: false,
privacy: privacy_class_interface_1.Privacy.Private,
powerCurve: eventCurve,
stats: {
[data_activity_types_1.DataActivityTypes.type]: [activity_types_1.ActivityTypes.Running]
},
activities: [
{
name: null,
startDate: 0,
endDate: 3000,
type: activity_types_1.ActivityTypes.Running,
powerMeter: false,
trainer: false,
powerCurve: activityCurve,
stats: {},
streams: [
{ type: data_time_1.DataTime.type, data: [0, 1, 2, 3] },
{ type: data_distance_1.DataDistance.type, data: [0, null, null, 30] },
{ type: data_ibi_1.DataIBI.type, data: [823, 823, 823] }
],
laps: [],
creator: { name: 'test', devices: [] },
intensityZones: [],
events: []
}
]
});
expect(event.getActivities()).toHaveLength(1);
expect((_a = event.powerCurve) === null || _a === void 0 ? void 0 : _a.toJSON()).toEqual(eventCurve);
expect((_b = event.getStat(data_power_curve_1.DataPowerCurve.type)) === null || _b === void 0 ? void 0 : _b.toJSON()).toEqual(eventCurve);
const activity = event.getFirstActivity();
expect(activity.hasStreamData(data_time_1.DataTime.type)).toBe(false);
expect(activity.getStream(data_distance_1.DataDistance.type).getData()).toEqual([0, null, null, 30]);
expect(activity.generateTimeStream([data_ibi_1.DataIBI.type]).getData(true)).toEqual([1, 2]);
expect((_c = activity.powerCurve) === null || _c === void 0 ? void 0 : _c.toJSON()).toEqual(activityCurve);
expect((_d = activity.getStat(data_power_curve_1.DataPowerCurve.type)) === null || _d === void 0 ? void 0 : _d.toJSON()).toEqual(activityCurve);
});
});