|
| 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