generated from obsidianmd/obsidian-sample-plugin
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathActivityImporter.test.ts
92 lines (81 loc) · 2.7 KB
/
ActivityImporter.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import * as fs from "node:fs";
import * as path from "node:path";
import { ActivityImporter } from "../ActivityImporter";
import { StravaApi } from "../StravaApi";
jest.mock("../StravaApi");
describe("ActivityImporter", () => {
let activityImporter: ActivityImporter;
let mockStravaApi: jest.Mocked<StravaApi>;
beforeEach(() => {
mockStravaApi = new StravaApi({} as any) as jest.Mocked<StravaApi>;
mockStravaApi.refreshTokenIfExpired = jest
.fn()
.mockResolvedValue(undefined);
activityImporter = new ActivityImporter(mockStravaApi);
});
it("should import latest activities", async () => {
const mockActivitiesList = JSON.parse(
fs.readFileSync(
path.join(__dirname, "../../assets/activities.json"),
"utf8",
),
);
const mockActivity1 = JSON.parse(
fs.readFileSync(
path.join(__dirname, "../../assets/activity_12271989718.json"),
"utf8",
),
);
const mockActivity2 = JSON.parse(
fs.readFileSync(
path.join(__dirname, "../../assets/activity_12288940553.json"),
"utf8",
),
);
const mockActivity3 = JSON.parse(
fs.readFileSync(
path.join(__dirname, "../../assets/activity_12315055573.json"),
"utf8",
),
);
(mockStravaApi.listActivities as jest.Mock).mockResolvedValue(
mockActivitiesList,
);
(mockStravaApi.getActivity as jest.Mock)
.mockResolvedValueOnce(mockActivity1)
.mockResolvedValueOnce(mockActivity2)
.mockResolvedValueOnce(mockActivity3);
const activities = await activityImporter.importLatestActivities();
expect(mockStravaApi.refreshTokenIfExpired).toHaveBeenCalled();
expect(mockStravaApi.listActivities).toHaveBeenCalledWith({ per_page: 30 });
expect(mockStravaApi.getActivity).toHaveBeenCalledTimes(3);
expect(activities).toHaveLength(3);
expect(activities[0]).toMatchObject({
id: 12271989718,
name: "Lunch Run",
sport_type: "Run",
start_date: new Date("2024-08-24T10:47:26Z"),
elapsed_time: 1955,
distance: 4551.3,
summary_polyline: "encoded_summary_polyline",
});
expect(activities[1]).toMatchObject({
id: 12288940553,
name: "Dynamo Challenge 2024",
sport_type: "Ride",
start_date: new Date("2024-08-28T05:07:43Z"),
elapsed_time: 38846,
distance: 154081.0,
summary_polyline: "encoded_summary_polyline",
});
expect(activities[2]).toMatchObject({
id: 12315055573,
name: "Lunch Swim",
sport_type: "Swim",
start_date: new Date("2024-09-09T10:23:12Z"),
elapsed_time: 1697,
distance: 1000.0,
});
expect(activities[2].summary_polyline).toBeUndefined();
});
});