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

74 lines (73 loc) 4.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const event_1 = require("./event"); const activity_1 = require("../activities/activity"); const creator_1 = require("../creators/creator"); const activity_types_1 = require("../activities/activity.types"); const file_type_enum_1 = require("./adapters/file-type.enum"); const data_activity_types_1 = require("../data/data.activity-types"); const data_device_names_1 = require("../data/data.device-names"); describe('Event', () => { let event; beforeEach(() => { event = new event_1.Event('Test', new Date(0), new Date(200), file_type_enum_1.FileType.FIT); event.description = 'Test'; }); it('should add an activity', () => { expect(event.getActivities().length).toBe(0); event.addActivity(new activity_1.Activity(new Date(0), new Date(new Date(0).getTime() + 10), activity_types_1.ActivityTypes.Running, new creator_1.Creator('Test'))); expect(event.getActivities().length).toBe(1); }); it('should remove an activity', () => { const activity = new activity_1.Activity(new Date(0), new Date(new Date(0).getTime() + 10), activity_types_1.ActivityTypes.Running, new creator_1.Creator('Test')); event.addActivity(activity); expect(event.getActivities().length).toBe(1); event.removeActivity(activity); expect(event.getActivities().length).toBe(0); }); it('should get the first and the last activity', () => { const activityA = new activity_1.Activity(new Date(20), new Date(30), activity_types_1.ActivityTypes.Running, new creator_1.Creator('Test')); const activityB = new activity_1.Activity(new Date(0), new Date(10), activity_types_1.ActivityTypes.Running, new creator_1.Creator('Test')); event.addActivity(activityA); event.addActivity(activityB); // Should get them sorted by date expect(event.getFirstActivity()).toEqual(activityB); expect(event.getLastActivity()).toEqual(activityA); }); it('should export correctly to JSON', () => { const d1 = new Date(0); const d2 = new Date(new Date(0).getTime() + 200); const activity = new activity_1.Activity(d1, d2, activity_types_1.ActivityTypes.Running, new creator_1.Creator('Test')); event.addActivity(activity); event.setID('123'); expect(event.toJSON()).toEqual({ name: 'Test', description: 'Test', isMerge: false, powerCurve: null, privacy: 'private', srcFileType: file_type_enum_1.FileType.FIT, stats: {}, activities: [activity.toJSON()], startDate: d1.getTime(), endDate: d2.getTime() }); }); it('should normalize single activity type aliases when formatting type string', () => { event.addStat(new data_activity_types_1.DataActivityTypes(['running_trail'])); expect(event.getActivityTypesAsString()).toBe(activity_types_1.ActivityTypes.TrailRunning); }); it('should preserve unknown single activity type strings when formatting type string', () => { event.addStat(new data_activity_types_1.DataActivityTypes(['mystery_sport'])); expect(event.getActivityTypesAsString()).toBe('mystery_sport'); }); it('should format device names with multiplicity', () => { event.addStat(new data_device_names_1.DataDeviceNames(['Edge', 'HRM', 'HRM'])); expect(event.getDeviceNamesAsString()).toBe('Edge, 2x HRM'); }); it('should classify non-merged events with multiple activities as multi-sport', () => { event.addActivity(new activity_1.Activity(new Date(0), new Date(1000), activity_types_1.ActivityTypes.Running, new creator_1.Creator('Run'))); event.addActivity(new activity_1.Activity(new Date(1000), new Date(2000), activity_types_1.ActivityTypes.Cycling, new creator_1.Creator('Ride'))); expect(event.isMultiSport()).toBe(true); }); });