From 323a781c632dd2a4bf223ab4833cc5ceb474c89a Mon Sep 17 00:00:00 2001 From: Jonas Auer Date: Wed, 19 Oct 2022 07:40:54 +0200 Subject: [PATCH] test(client): unit test for #12651 --- .../client/src/__tests__/query/floats.test.ts | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 packages/client/src/__tests__/query/floats.test.ts diff --git a/packages/client/src/__tests__/query/floats.test.ts b/packages/client/src/__tests__/query/floats.test.ts new file mode 100644 index 000000000000..3fce9d6d2a8a --- /dev/null +++ b/packages/client/src/__tests__/query/floats.test.ts @@ -0,0 +1,82 @@ +import { getDMMF } from '../../generation/getDMMF' +import { DMMFClass, makeDocument, transformDocument } from '../../runtime' + +const datamodel = /* Prisma */ ` + datasource my_db { + provider = "postgres" + url = env("POSTGRES_URL") + } + + model Floats { + id Int @id + value Float + } +` + +let dmmf + +function getTransformedDocument(select) { + const document = makeDocument({ + dmmf, + select, + rootTypeName: 'mutation', + rootField: 'createOneFloats', + }) + return String(transformDocument(document)) +} + +beforeAll(async () => { + dmmf = new DMMFClass(await getDMMF({ datamodel })) +}) + +test('serializes floats in exponential notation', () => { + const largeInt = getTransformedDocument({ + data: { + value: 100_000_000_000_000_000_000, + }, + }) + + expect(largeInt).toMatchInlineSnapshot(` + mutation { + createOneFloats(data: { + value: 1e+20 + }) { + id + value + } + } + `) + + const negativeInt = getTransformedDocument({ + data: { + value: Number.MIN_SAFE_INTEGER, + }, + }) + + expect(negativeInt).toMatchInlineSnapshot(` + mutation { + createOneFloats(data: { + value: -9.007199254740991e+15 + }) { + id + value + } + } + `) + + const otherFloat = getTransformedDocument({ + data: { + value: 13.37, + }, + }) + expect(otherFloat).toMatchInlineSnapshot(` + mutation { + createOneFloats(data: { + value: 1.337e+1 + }) { + id + value + } + } + `) +})