Skip to content

Commit 97b6fb4

Browse files
committed
Update TypeScript version and add tests for task management
- Downgraded TypeScript dependency from 5.8.3 to 5.6.2 in the ts-uploader package for compatibility. - Added new tests for the chainActions function to ensure proper execution order of tasks. - Enhanced TaskManager tests to verify task creation and promise resolution, improving overall test coverage.
1 parent 650338e commit 97b6fb4

File tree

4 files changed

+78
-6
lines changed

4 files changed

+78
-6
lines changed

packages/ts-uploader/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"@thunderstore/thunderstore-api": "^0.1.0",
2121
"@thunderstore/typed-event-emitter": "*",
2222
"crypto-js": "^4.2.0",
23-
"typescript": "^5.8.3"
23+
"typescript": "^5.6.2"
2424
},
2525
"devDependencies": {
2626
"@types/crypto-js": "^4.1.3",

packages/ts-uploader/src/tasks/__tests__/TaskManager.test.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,33 @@ describe("TaskManager", () => {
1313
vi.clearAllMocks();
1414
});
1515

16+
describe("tasks", () => {
17+
it("should get tasks", async () => {
18+
expect(taskManager.tasks.length).toBe(0);
19+
taskManager.createTask(async () => {}, {});
20+
taskManager.createTask(async () => {}, {});
21+
expect(taskManager.createdTasks.length).toBe(2);
22+
});
23+
});
24+
25+
describe("taskPromises", () => {
26+
it("should get taskPromises", async () => {
27+
expect(taskManager.tasks.length).toBe(0);
28+
expect(taskManager.taskPromises.length).toBe(0);
29+
taskManager.waitTask(
30+
taskManager.startTask(taskManager.createTask(async () => {}, {}))
31+
);
32+
taskManager.waitTask(
33+
taskManager.startTask(taskManager.createTask(async () => {}, {}))
34+
);
35+
expect(taskManager.tasks.length).toBe(4);
36+
expect(taskManager.taskPromises.length).toBe(2);
37+
await taskManager.resolveTaskPromises();
38+
expect(taskManager.tasks.length).toBe(6);
39+
expect(taskManager.taskPromises.length).toBe(2);
40+
});
41+
});
42+
1643
describe("createdTasks", () => {
1744
it("should get tasks with PENDING status", async () => {
1845
expect(taskManager.createdTasks.length).toBe(0);
@@ -135,6 +162,28 @@ describe("TaskManager", () => {
135162
});
136163
});
137164

165+
describe("resolveTaskPromises", () => {
166+
it("should resolve promises in _tasks and add the resolved tasks to _tasks", async () => {
167+
expect(taskManager.tasks.length).toBe(0);
168+
expect(taskManager.taskPromises.length).toBe(0);
169+
const task1 = taskManager.waitTask(
170+
taskManager.startTask(taskManager.createTask(async () => {}, {}))
171+
);
172+
const task2 = taskManager.waitTask(
173+
taskManager.startTask(taskManager.createTask(async () => {}, {}))
174+
);
175+
expect(taskManager.tasks.length).toBe(4);
176+
expect(taskManager.taskPromises.length).toBe(2);
177+
expect(taskManager.taskPromises[0]).toBe(task1);
178+
expect(taskManager.taskPromises[1]).toBe(task2);
179+
await taskManager.resolveTaskPromises();
180+
expect(taskManager.tasks[4]).toBe(await task1);
181+
expect(taskManager.tasks[5]).toBe(await task2);
182+
expect(taskManager.tasks.length).toBe(6);
183+
expect(taskManager.taskPromises.length).toBe(2);
184+
});
185+
});
186+
138187
describe("createTask", () => {
139188
it("should create a task and add it to the task manager tasks array", () => {
140189
const task = taskManager.createTask(async () => {}, {});
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { describe, it, expect } from "vitest";
2+
import { createTask, startTask, waitTask } from "../task";
3+
import { TaskStatus, TaskFinishReason } from "../types";
4+
import { chainActions } from "../chain";
5+
6+
describe("Chain Module", () => {
7+
describe("chainActions", () => {
8+
it("should call and await actions in order", async () => {
9+
const args = 5;
10+
const action1 = async (args: number) => args * 2;
11+
const action2 = async (args: number) => args * 2;
12+
13+
const chainedAction = chainActions(action1, action2);
14+
15+
const createdTask = createTask(chainedAction, args);
16+
const startedTask = startTask(createdTask);
17+
const taskPromise = waitTask(startedTask);
18+
const finishedTask = await taskPromise;
19+
expect(finishedTask.status).toBe(TaskStatus.FINISHED);
20+
expect(finishedTask.finishReason).toBe(TaskFinishReason.SUCCESS);
21+
if (finishedTask.finishReason === TaskFinishReason.SUCCESS) {
22+
expect(finishedTask.result).toBe(20);
23+
} else {
24+
throw new Error("Task didn't finnish successfully");
25+
}
26+
});
27+
});
28+
});

yarn.lock

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15631,11 +15631,6 @@ typescript@^5.6.2:
1563115631
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0"
1563215632
integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==
1563315633

15634-
typescript@^5.8.3:
15635-
version "5.8.3"
15636-
resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e"
15637-
integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==
15638-
1563915634
ufo@^1.5.3:
1564015635
version "1.5.4"
1564115636
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"

0 commit comments

Comments
 (0)