From 10434c66e2d50791f2db79a64fdbf7d6ea62a5e1 Mon Sep 17 00:00:00 2001 From: kiki-kanri Date: Sun, 15 Dec 2024 14:21:15 +0800 Subject: [PATCH] fix: resolve issue in decimal128 schema builder's `setToStringGetter` not handling undefined input --- src/schema-builders/decimal128.ts | 4 ++-- tests/schema-builders/decimal128.test.ts | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/schema-builders/decimal128.ts b/src/schema-builders/decimal128.ts index ad47d10..b4c5eee 100644 --- a/src/schema-builders/decimal128.ts +++ b/src/schema-builders/decimal128.ts @@ -19,7 +19,7 @@ interface BaseProps { } interface ToStringGetterSchema { - get: (value: Types.Decimal128) => string; + get: (value?: Types.Decimal128) => string | undefined; } interface ToStringSetterSchema { @@ -87,7 +87,7 @@ export function decimal128SchemaBuilder() { } if (key === 'setToStringGetter') { - schema.get = (value: Types.Decimal128) => value.toString(); + schema.get = (value?: Types.Decimal128) => value?.toString(); return receiver; } diff --git a/tests/schema-builders/decimal128.test.ts b/tests/schema-builders/decimal128.test.ts index f840a2f..dfa792a 100644 --- a/tests/schema-builders/decimal128.test.ts +++ b/tests/schema-builders/decimal128.test.ts @@ -16,6 +16,11 @@ describe('decimal128SchemaBuilder', () => { expect(schema.get(new Types.Decimal128('114514.1919810'))).toEqual('114514.1919810'); }); + it('should return the undefined representation of Decimal128 when using setToStringGetter', () => { + const schema = decimal128SchemaBuilder().setToStringGetter.nonRequired; + expect(schema.get()).toBeUndefined(); + }); + it('should set the value correctly with rounding and fixed decimal places', () => { const schema1 = decimal128SchemaBuilder().setRoundAndToFixedSetter().nonRequired; expect(schema1.set('114514.1919810')).toEqual('114514.19');