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

91 lines (90 loc) 6.25 kB
"use strict"; 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); }); });