Add vitest and unit coverage for provider helpers
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
"lint:fix": "biome check --write src",
|
||||
"format": "biome format src",
|
||||
"format:fix": "biome format src --write",
|
||||
"test": "echo \"No tests yet\""
|
||||
"test": "vitest"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
@@ -48,6 +48,7 @@
|
||||
"@types/express": "^5.0.5",
|
||||
"@types/node": "^24.10.1",
|
||||
"tsx": "^4.20.6",
|
||||
"typescript": "^5.9.3"
|
||||
"typescript": "^5.9.3",
|
||||
"vitest": "^2.1.4"
|
||||
}
|
||||
}
|
||||
|
||||
29
src/index.test.ts
Normal file
29
src/index.test.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { normalizeE164, toWhatsappJid, assertProvider } from "./index.js";
|
||||
|
||||
describe("normalizeE164", () => {
|
||||
it("strips whatsapp: prefix and whitespace", () => {
|
||||
expect(normalizeE164("whatsapp:+1 555 123 4567")).toBe("+15551234567");
|
||||
});
|
||||
|
||||
it("adds plus when missing", () => {
|
||||
expect(normalizeE164("1555123")).toBe("+1555123");
|
||||
});
|
||||
});
|
||||
|
||||
describe("toWhatsappJid", () => {
|
||||
it("converts E164 to jid", () => {
|
||||
expect(toWhatsappJid("+1 555 123 4567")).toBe("15551234567@s.whatsapp.net");
|
||||
});
|
||||
});
|
||||
|
||||
describe("assertProvider", () => {
|
||||
it("accepts valid providers", () => {
|
||||
expect(() => assertProvider("twilio")).not.toThrow();
|
||||
expect(() => assertProvider("web")).not.toThrow();
|
||||
});
|
||||
|
||||
it("throws on invalid provider", () => {
|
||||
expect(() => assertProvider("invalid" as string)).toThrow();
|
||||
});
|
||||
});
|
||||
13
src/index.ts
13
src/index.ts
@@ -5,6 +5,7 @@ import net from "node:net";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import process, { stdin as input, stdout as output } from "node:process";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import readline from "node:readline/promises";
|
||||
import { promisify } from "node:util";
|
||||
import bodyParser from "body-parser";
|
||||
@@ -384,8 +385,7 @@ type Provider = "twilio" | "web";
|
||||
|
||||
function assertProvider(input: string): asserts input is Provider {
|
||||
if (input !== "twilio" && input !== "web") {
|
||||
console.error("Provider must be 'twilio' or 'web'");
|
||||
process.exit(1);
|
||||
throw new Error("Provider must be 'twilio' or 'web'");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1818,4 +1818,11 @@ program
|
||||
await waitForever();
|
||||
});
|
||||
|
||||
program.parseAsync(process.argv);
|
||||
export { normalizeE164, toWhatsappJid, assertProvider };
|
||||
|
||||
const isMain =
|
||||
process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1];
|
||||
|
||||
if (isMain) {
|
||||
program.parseAsync(process.argv);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user