@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
82 lines (81 loc) • 3.41 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const data_cadence_1 = require("../data/data.cadence");
const data_distance_1 = require("../data/data.distance");
const data_duration_1 = require("../data/data.duration");
const data_energy_1 = require("../data/data.energy");
const data_heart_rate_1 = require("../data/data.heart-rate");
const data_speed_1 = require("../data/data.speed");
const swim_length_1 = require("./swim-length");
describe('SwimLength', () => {
it('hydrates nullable measured fields defensively from partial JSON rows', () => {
const swimLength = swim_length_1.SwimLength.fromJSON({
index: 1,
startDate: 1778945229000,
endDate: 1778945254000,
type: 'active'
});
expect(swimLength.lapIndex).toBeNull();
expect(swimLength.stroke).toBeNull();
expect(swimLength.strokes).toBeNull();
expect(swimLength.elapsedTime).toBeNull();
expect(swimLength.timerTime).toBeNull();
expect(swimLength.distance).toBeNull();
expect(swimLength.poolLength).toBeNull();
expect(swimLength.avgSpeed).toBeNull();
expect(swimLength.avgCadence).toBeNull();
expect(swimLength.avgHeartRate).toBeNull();
expect(swimLength.maxHeartRate).toBeNull();
expect(swimLength.swolf).toBeNull();
expect(swimLength.calories).toBeNull();
expect(swimLength.toJSON()).toEqual(expect.objectContaining({
lapIndex: null,
stroke: null,
strokes: null,
elapsedTime: null,
timerTime: null,
distance: null,
poolLength: null,
avgSpeed: null,
avgCadence: null,
avgHeartRate: null,
maxHeartRate: null,
swolf: null,
calories: null
}));
});
it('hydrates numeric measured fields as sports-lib data objects', () => {
const swimLength = swim_length_1.SwimLength.fromJSON({
index: 1,
lapIndex: 1,
startDate: 1778945229000,
endDate: 1778945254000,
type: 'active',
stroke: 'freestyle',
strokes: 8,
elapsedTime: 25,
timerTime: 24,
distance: 25,
poolLength: 25,
avgSpeed: 1,
avgCadence: 20,
avgHeartRate: 140,
maxHeartRate: 150,
swolf: 39,
calories: 4
});
expect(swimLength.elapsedTime).toBeInstanceOf(data_duration_1.DataDuration);
expect(swimLength.timerTime).toBeInstanceOf(data_duration_1.DataDuration);
expect(swimLength.distance).toBeInstanceOf(data_distance_1.DataDistance);
expect(swimLength.poolLength).toBeInstanceOf(data_distance_1.DataDistance);
expect(swimLength.avgSpeed).toBeInstanceOf(data_speed_1.DataSpeed);
expect(swimLength.avgCadence).toBeInstanceOf(data_cadence_1.DataCadence);
expect(swimLength.avgHeartRate).toBeInstanceOf(data_heart_rate_1.DataHeartRate);
expect(swimLength.maxHeartRate).toBeInstanceOf(data_heart_rate_1.DataHeartRate);
expect(swimLength.calories).toBeInstanceOf(data_energy_1.DataEnergy);
expect(swimLength.toJSON()).toEqual(expect.objectContaining({
elapsedTime: 25,
distance: 25
}));
});
});