diff --git a/src/graphql/shared/types/scalar/usd-cents.ts b/src/graphql/shared/types/scalar/usd-cents.ts index c285f546b..d9e505d0e 100644 --- a/src/graphql/shared/types/scalar/usd-cents.ts +++ b/src/graphql/shared/types/scalar/usd-cents.ts @@ -1,4 +1,4 @@ -import { USDAmount } from "@domain/shared" +import { USDAmount, USDTAmount } from "@domain/shared" import { GT } from "@graphql/index" const USDCentsScalar = GT.Scalar({ @@ -16,6 +16,9 @@ const USDCentsScalar = GT.Scalar({ if (value instanceof USDAmount) { return Number(value.asCents(2)) } + if (value instanceof USDTAmount) { + return Number(value.asSmallestUnits()) + } else throw new Error(`Failed to serialize USDAmount: ${value}`) } }) diff --git a/test/flash/unit/graphql/shared/types/scalar/usd-cents.spec.ts b/test/flash/unit/graphql/shared/types/scalar/usd-cents.spec.ts new file mode 100644 index 000000000..497ab3903 --- /dev/null +++ b/test/flash/unit/graphql/shared/types/scalar/usd-cents.spec.ts @@ -0,0 +1,18 @@ +import { USDAmount, USDTAmount } from "@domain/shared" +import USDCentsScalar from "@graphql/shared/types/scalar/usd-cents" + +describe("USDCentsScalar", () => { + it("serializes USD amounts as cents", () => { + const amount = USDAmount.cents("123") + if (amount instanceof Error) throw amount + + expect(USDCentsScalar.serialize(amount)).toBe(123) + }) + + it("serializes USDT amounts as micro-USDT units", () => { + const amount = USDTAmount.smallestUnits("1234567") + if (amount instanceof Error) throw amount + + expect(USDCentsScalar.serialize(amount)).toBe(1234567) + }) +})