From 3b816997d1ad6ab4e8f6727dda384d6719ce3efc Mon Sep 17 00:00:00 2001 From: Mounir Dhahri Date: Fri, 1 Dec 2023 15:31:36 +0100 Subject: [PATCH] fix: properly transform CommerceDate --- _schemaV2.graphql | 7 ++++++- .../__tests__/replaceComerceDateTime.test.ts | 17 +++++++++++++---- .../transformers/replaceCommerceDateTimeType.ts | 8 ++++++-- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/_schemaV2.graphql b/_schemaV2.graphql index f6dbc59e53..3053d8c829 100644 --- a/_schemaV2.graphql +++ b/_schemaV2.graphql @@ -4535,7 +4535,12 @@ type CommerceFulfillment { # A tz database time zone, otherwise falls back to "X-TIMEZONE" header. See http://www.iana.org/time-zones, https://en.wikipedia.org/wiki/List_of_tz_database_time_zones timezone: String ): String! - estimatedDelivery: CommerceDate + estimatedDelivery( + format: String + + # A tz database time zone, otherwise falls back to "X-TIMEZONE" header. See http://www.iana.org/time-zones, https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + timezone: String + ): String id: ID! internalID: ID! notes: String diff --git a/src/lib/stitching/exchange/__tests__/replaceComerceDateTime.test.ts b/src/lib/stitching/exchange/__tests__/replaceComerceDateTime.test.ts index 743e969f2c..1159c2f9fc 100644 --- a/src/lib/stitching/exchange/__tests__/replaceComerceDateTime.test.ts +++ b/src/lib/stitching/exchange/__tests__/replaceComerceDateTime.test.ts @@ -16,12 +16,18 @@ const originalSchema = new GraphQLSchema({ type: new GraphQLObjectType({ name: "SomeType", fields: { - someDateField: { + someCommerceDateTimeField: { type: new GraphQLScalarType({ name: "CommerceDateTime", serialize: (x) => x, }), }, + someCommerceDateField: { + type: new GraphQLScalarType({ + name: "CommerceDate", + serialize: (x) => x, + }), + }, }, }), }, @@ -41,20 +47,23 @@ describe("ReplaceCommerceDateTimeType", () => { source: gql` query { someRootField { - someDateField(format: "[The year is] YYYY") + someCommerceDateTimeField(format: "[The year is] YYYY") + someCommerceDateField(format: "[The year is] YYYY") } } `, rootValue: { someRootField: { - someDateField: "2019-07-16T19:39:10.001Z", + someCommerceDateTimeField: "2019-07-16T19:39:10.001Z", + someCommerceDateField: "2020-09-16T19:39:10.001Z", }, }, contextValue: {}, }) expect(data).toEqual({ someRootField: { - someDateField: "The year is 2019", + someCommerceDateTimeField: "The year is 2019", + someCommerceDateField: "The year is 2020", }, }) }) diff --git a/src/lib/stitching/exchange/transformers/replaceCommerceDateTimeType.ts b/src/lib/stitching/exchange/transformers/replaceCommerceDateTimeType.ts index 63f57e179f..94da47d6f6 100644 --- a/src/lib/stitching/exchange/transformers/replaceCommerceDateTimeType.ts +++ b/src/lib/stitching/exchange/transformers/replaceCommerceDateTimeType.ts @@ -9,7 +9,9 @@ export const ReplaceCommerceDateTimeType = ( ) => { let newFieldConfig = fieldToConfig(fieldConfig) - if (fieldConfig.type.toString() === "CommerceDateTime!") { + if ( + ["CommerceDateTime!", "CommerceDate!"].includes(fieldConfig.type.toString()) + ) { newFieldConfig = { ...newFieldConfig, ...dateField, @@ -18,7 +20,9 @@ export const ReplaceCommerceDateTimeType = ( return newFieldConfig } - if (fieldConfig.type.toString() === "CommerceDateTime") { + if ( + ["CommerceDateTime", "CommerceDate"].includes(fieldConfig.type.toString()) + ) { newFieldConfig = { ...newFieldConfig, ...dateField,