@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
39 lines (38 loc) • 1.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const data_power_curve_1 = require("./data.power-curve");
const data_duration_1 = require("./data.duration");
const data_power_1 = require("./data.power");
describe('DataPowerCurve', () => {
it('should hydrate from raw JSON objects', () => {
const rawData = [
{ duration: 1, power: 100 },
{ duration: 5, power: 200 }
];
const powerCurve = new data_power_curve_1.DataPowerCurve(rawData);
const values = powerCurve.getValue();
expect(values[0].duration).toBeInstanceOf(data_duration_1.DataDuration);
expect(values[0].duration.getValue()).toBe(1);
expect(values[0].power).toBeInstanceOf(data_power_1.DataPower);
expect(values[0].power.getValue()).toBe(100);
expect(values[1].duration).toBeInstanceOf(data_duration_1.DataDuration);
expect(values[1].duration.getValue()).toBe(5);
expect(values[1].power).toBeInstanceOf(data_power_1.DataPower);
expect(values[1].power.getValue()).toBe(200);
});
it('should hydrate from already hydrated objects (idempotency)', () => {
const hydratedData = [{ duration: new data_duration_1.DataDuration(1), power: new data_power_1.DataPower(100) }];
const powerCurve = new data_power_curve_1.DataPowerCurve(hydratedData);
const values = powerCurve.getValue();
expect(values[0].duration).toBeInstanceOf(data_duration_1.DataDuration);
expect(values[0].duration.getValue()).toBe(1);
});
it('should serialize correctly to JSON', () => {
const rawData = [{ duration: 1, power: 100 }];
const powerCurve = new data_power_curve_1.DataPowerCurve(rawData);
const json = powerCurve.toJSON();
expect(json).toEqual({
[data_power_curve_1.DataPowerCurve.type]: [{ duration: 1, power: 100 }]
});
});
});