@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
91 lines (90 loc) • 6.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const helpers_1 = require("../events/utilities/helpers");
const data_store_1 = require("./data.store");
const data_speed_1 = require("./data.speed");
const data_jump_stats_1 = require("./data.jump-stats");
const user_unit_settings_interface_1 = require("../users/settings/user.unit.settings.interface");
const data_jump_distance_1 = require("./data.jump-distance");
const data_distance_1 = require("./data.distance");
describe('Jump stats display and unit behavior', () => {
it('formats jump distance with the same behavior as DataDistance', () => {
const jumpDistanceAvg = new data_jump_stats_1.DataJumpDistanceAvg(2);
const jumpDistanceMin = new data_jump_stats_1.DataJumpDistanceMin(1.2);
const jumpDistanceMax = new data_jump_stats_1.DataJumpDistanceMax(3.456);
expect(jumpDistanceAvg.getDisplayUnit()).toBe('m');
expect(jumpDistanceAvg.getDisplayValue()).toBe('2.0');
expect(jumpDistanceMin.getDisplayValue()).toBe('1.2');
expect(jumpDistanceMax.getDisplayValue()).toBe('3.5');
});
it('formats jump distance in feet when the distance preference is miles and the value is below one mile', () => {
const milesSettings = {
speedUnits: [],
swimPaceUnits: [],
paceUnits: [],
gradeAdjustedSpeedUnits: [],
gradeAdjustedPaceUnits: [],
verticalSpeedUnits: [],
distanceUnits: user_unit_settings_interface_1.DistanceUnits.Miles
};
const converted = data_store_1.DynamicDataLoader.getUnitBasedDataFromDataInstance(new data_jump_distance_1.DataJumpDistance(2), milesSettings);
expect(converted).toHaveLength(1);
expect(converted[0].getType()).toBe(data_distance_1.DataDistanceFeet.type);
expect(converted[0].getValue()).toBeCloseTo((0, helpers_1.convertMetersToFeet)(2), 10);
expect(converted[0].getDisplayValue()).toBe('6.6');
expect(converted[0].getDisplayUnit()).toBe('ft');
});
it('formats jump speed with speed precision and converts to speed units', () => {
const jumpSpeedAvg = new data_jump_stats_1.DataJumpSpeedAvg(6.2);
const jumpSpeedMin = new data_jump_stats_1.DataJumpSpeedMin(5.4);
const jumpSpeedMax = new data_jump_stats_1.DataJumpSpeedMax(7.9);
expect(jumpSpeedAvg.getDisplayValue()).toBe('6.20');
expect(jumpSpeedAvg.getDisplayUnit()).toBe('m/s');
expect(jumpSpeedAvg.getValue(data_speed_1.DataSpeedKilometersPerHour.type)).toBeCloseTo((0, helpers_1.convertSpeedToSpeedInKilometersPerHour)(6.2), 10);
expect(jumpSpeedAvg.getValue(data_speed_1.DataSpeedMilesPerHour.type)).toBeCloseTo((0, helpers_1.convertSpeedToSpeedInMilesPerHour)(6.2), 10);
expect(jumpSpeedAvg.getValue(data_speed_1.DataSpeedFeetPerSecond.type)).toBeCloseTo((0, helpers_1.convertSpeedToSpeedInFeetPerSecond)(6.2), 10);
expect(jumpSpeedAvg.getValue(data_speed_1.DataSpeedKnots.type)).toBeCloseTo((0, helpers_1.convertSpeedToSpeedInKnots)(6.2), 10);
expect(jumpSpeedMin.getValue(data_speed_1.DataSpeedMilesPerHour.type)).toBeCloseTo((0, helpers_1.convertSpeedToSpeedInMilesPerHour)(5.4), 10);
expect(jumpSpeedMax.getValue(data_speed_1.DataSpeedKilometersPerHour.type)).toBeCloseTo((0, helpers_1.convertSpeedToSpeedInKilometersPerHour)(7.9), 10);
});
it('displays jump hang time in milliseconds while keeping canonical storage unit in seconds', () => {
const jumpHangTimeAvg = new data_jump_stats_1.DataJumpHangTimeAvg(0.456);
const jumpHangTimeMin = new data_jump_stats_1.DataJumpHangTimeMin(0.333);
const jumpHangTimeMax = new data_jump_stats_1.DataJumpHangTimeMax(0.9994);
expect(jumpHangTimeAvg.getUnit()).toBe('s');
expect(jumpHangTimeAvg.getDisplayUnit()).toBe('ms');
expect(jumpHangTimeAvg.getDisplayValue()).toBe('456');
expect(jumpHangTimeMin.getDisplayValue()).toBe('333');
expect(jumpHangTimeMax.getDisplayValue()).toBe('999');
});
it('formats jump score with fixed 1-decimal precision', () => {
expect(new data_jump_stats_1.DataJumpScoreAvg(12).getDisplayValue()).toBe('12.0');
expect(new data_jump_stats_1.DataJumpScoreMin(8.04).getDisplayValue()).toBe('8.0');
expect(new data_jump_stats_1.DataJumpScoreMax(8.06).getDisplayValue()).toBe('8.1');
});
it('keeps jump speed identity for derived unit instances', () => {
const mphSettings = {
speedUnits: [data_speed_1.DataSpeedMilesPerHour.type, data_speed_1.DataSpeedKilometersPerHour.type],
swimPaceUnits: [],
paceUnits: [],
gradeAdjustedSpeedUnits: [],
gradeAdjustedPaceUnits: [],
verticalSpeedUnits: [],
distanceUnits: user_unit_settings_interface_1.DistanceUnits.Kilometers
};
const converted = data_store_1.DynamicDataLoader.getUnitBasedDataFromDataInstance(new data_jump_stats_1.DataJumpSpeedAvg(5), mphSettings);
expect(converted).toHaveLength(2);
expect(converted[0].getType()).toBe(data_jump_stats_1.DataJumpSpeedAvgMilesPerHour.type);
expect(converted[1].getType()).toBe(data_jump_stats_1.DataJumpSpeedAvgKilometersPerHour.type);
expect(converted[0].getDisplayUnit()).toBe('mph');
expect(converted[1].getDisplayUnit()).toBe('km/h');
});
it('keeps canonical jump type names and legacy aliases compatible', () => {
expect(data_jump_stats_1.DataJumpSpeedAvg.type).toBe('Average Jump Speed');
expect(data_jump_stats_1.DataJumpHangTimeAvg.type).toBe('Average Jump Hang Time');
expect(data_jump_stats_1.DataJumpScoreAvg.type).toBe('Average Jump Score');
expect(data_store_1.DynamicDataLoader.getDataInstanceFromDataType('Jump Speed Avg', 6.2)).toBeInstanceOf(data_jump_stats_1.DataJumpSpeedAvg);
expect(data_store_1.DynamicDataLoader.getDataInstanceFromDataType('Jump Hang Time Avg', 0.5)).toBeInstanceOf(data_jump_stats_1.DataJumpHangTimeAvg);
expect(data_store_1.DynamicDataLoader.getDataInstanceFromDataType('Jump Score Avg', 8.1)).toBeInstanceOf(data_jump_stats_1.DataJumpScoreAvg);
});
});