@ledgerhq/coin-algorand
Version:
Ledger Algorand Coin integration
63 lines (49 loc) • 1.91 kB
text/typescript
import { addPrefixToken, extractTokenId } from "./tokens";
describe("tokens", () => {
describe("addPrefixToken", () => {
it("should add algorand/asa/ prefix to token ID", () => {
expect(addPrefixToken("12345")).toBe("algorand/asa/12345");
});
it("should handle numeric token IDs", () => {
expect(addPrefixToken("0")).toBe("algorand/asa/0");
expect(addPrefixToken("999999999")).toBe("algorand/asa/999999999");
});
it("should handle empty string", () => {
expect(addPrefixToken("")).toBe("algorand/asa/");
});
it("should handle USDC token ID", () => {
expect(addPrefixToken("31566704")).toBe("algorand/asa/31566704");
});
});
describe("extractTokenId", () => {
it("should extract token ID from prefixed string", () => {
expect(extractTokenId("algorand/asa/12345")).toBe("12345");
});
it("should extract USDC token ID", () => {
expect(extractTokenId("algorand/asa/31566704")).toBe("31566704");
});
it("should handle token ID with only two parts", () => {
expect(extractTokenId("algorand/asa")).toBeUndefined();
});
it("should handle empty token ID", () => {
expect(extractTokenId("algorand/asa/")).toBe("");
});
it("should return undefined for single value", () => {
expect(extractTokenId("12345")).toBeUndefined();
});
});
describe("round-trip", () => {
it("should preserve token ID through addPrefix and extract", () => {
const originalId = "31566704";
const prefixed = addPrefixToken(originalId);
const extracted = extractTokenId(prefixed);
expect(extracted).toBe(originalId);
});
it("should work with various token IDs", () => {
const tokenIds = ["0", "1", "12345", "999999999", "31566704"];
for (const id of tokenIds) {
expect(extractTokenId(addPrefixToken(id))).toBe(id);
}
});
});
});