Skip to content

Commit d146919

Browse files
committed
Add tests for Packages
1 parent 83c6454 commit d146919

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

library/agent/Packages.test.ts

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import * as t from "tap";
2+
import * as FakeTimers from "@sinonjs/fake-timers";
3+
import { Packages } from "./Packages";
4+
5+
t.test("addPackage should add a new package", async (t) => {
6+
const clock = FakeTimers.install();
7+
const packages = new Packages();
8+
packages.addPackage({ name: "express", version: "4.17.1" });
9+
const arr = packages.asArray();
10+
t.same(arr, [{ name: "express", version: "4.17.1", requiredAt: 0 }]);
11+
clock.uninstall();
12+
});
13+
14+
t.test(
15+
"addPackage should add a new version for an existing package",
16+
async (t) => {
17+
const clock = FakeTimers.install();
18+
const packages = new Packages();
19+
packages.addPackage({ name: "lodash", version: "4.17.20" });
20+
clock.tick(10);
21+
packages.addPackage({ name: "lodash", version: "4.17.21" });
22+
const arr = packages.asArray();
23+
t.same(arr, [
24+
{ name: "lodash", version: "4.17.20", requiredAt: 0 },
25+
{ name: "lodash", version: "4.17.21", requiredAt: 10 },
26+
]);
27+
clock.uninstall();
28+
}
29+
);
30+
31+
t.test("addPackage should not add a duplicate package version", async (t) => {
32+
const clock = FakeTimers.install();
33+
const packages = new Packages();
34+
packages.addPackage({ name: "moment", version: "2.29.1" });
35+
packages.addPackage({ name: "moment", version: "2.29.1" });
36+
const arr = packages.asArray();
37+
t.same(arr, [{ name: "moment", version: "2.29.1", requiredAt: 0 }]);
38+
clock.uninstall();
39+
});
40+
41+
t.test(
42+
"asArray should return an empty array when no packages are added",
43+
async (t) => {
44+
const packages = new Packages();
45+
const arr = packages.asArray();
46+
t.same(arr, [], "should return an empty array");
47+
}
48+
);
49+
50+
t.test("asArray should return all packages and versions", async (t) => {
51+
const clock = FakeTimers.install();
52+
const packages = new Packages();
53+
packages.addPackage({ name: "express", version: "4.17.1" });
54+
clock.tick(5);
55+
packages.addPackage({ name: "lodash", version: "4.17.20" });
56+
clock.tick(15);
57+
packages.addPackage({ name: "lodash", version: "4.17.21" });
58+
const arr = packages.asArray();
59+
t.same(arr, [
60+
{ name: "express", version: "4.17.1", requiredAt: 0 },
61+
{ name: "lodash", version: "4.17.20", requiredAt: 5 },
62+
{ name: "lodash", version: "4.17.21", requiredAt: 20 },
63+
]);
64+
clock.uninstall();
65+
});
66+
67+
t.test("clear should remove all packages", async (t) => {
68+
const clock = FakeTimers.install();
69+
const packages = new Packages();
70+
packages.addPackage({ name: "express", version: "4.17.1" });
71+
packages.addPackage({ name: "lodash", version: "4.17.20" });
72+
packages.clear();
73+
const arr = packages.asArray();
74+
t.same(arr, [], "should return an empty array after clear");
75+
clock.uninstall();
76+
});

0 commit comments

Comments
 (0)