From 1756bacc6ee76b68f602c4ed2e6bc640b95baec5 Mon Sep 17 00:00:00 2001 From: George Mamadashvili Date: Thu, 20 Feb 2025 19:36:44 +0800 Subject: [PATCH] Core Data: Allow 'null' as raw attribute value (#69257) Co-authored-by: Mamaduka Co-authored-by: tyxla Co-authored-by: TimothyBJacobs --- packages/core-data/src/selectors.ts | 5 ++- packages/core-data/src/test/selectors.js | 42 ++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/packages/core-data/src/selectors.ts b/packages/core-data/src/selectors.ts index c31ebc04254640..64ff340afd0c27 100644 --- a/packages/core-data/src/selectors.ts +++ b/packages/core-data/src/selectors.ts @@ -465,7 +465,10 @@ export const getRawEntityRecord = createSelector( // Because edits are the "raw" attribute values, // we return those from record selectors to make rendering, // comparisons, and joins with edits easier. - accumulator[ _key ] = record[ _key ]?.raw ?? record[ _key ]; + accumulator[ _key ] = + record[ _key ]?.raw !== undefined + ? record[ _key ]?.raw + : record[ _key ]; } else { accumulator[ _key ] = record[ _key ]; } diff --git a/packages/core-data/src/test/selectors.js b/packages/core-data/src/test/selectors.js index 4b5e8417ad2028..0330865e959570 100644 --- a/packages/core-data/src/test/selectors.js +++ b/packages/core-data/src/test/selectors.js @@ -332,6 +332,48 @@ describe( 'getRawEntityRecord', () => { }, } ); } ); + it( 'should allow `null` as raw value', () => { + const state = deepFreeze( { + entities: { + config: [ + { + kind: 'someKind', + name: 'someName', + rawAttributes: [ 'title' ], + }, + ], + records: { + someKind: { + someName: { + queriedData: { + items: { + default: { + post: { + title: { + raw: null, + rendered: 'Placeholder', + }, + }, + }, + }, + itemIsComplete: { + default: { + post: true, + }, + }, + queries: {}, + }, + }, + }, + }, + }, + } ); + expect( + getRawEntityRecord( state, 'someKind', 'someName', 'post' ) + ).toEqual( { + title: null, + } ); + } ); } ); describe( 'getEntityRecords', () => {