Skip to content

Commit fa50f3e

Browse files
authored
fix(gatsby): Fix dirty check for schema rebuilding (#23658)
1 parent ee8c311 commit fa50f3e

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

packages/gatsby/src/schema/infer/__tests__/inference-metadata.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1148,9 +1148,10 @@ describe(`Type change detection`, () => {
11481148
expect(haveEqualFields(metadata, initialMetadata)).toEqual(false)
11491149
metadata.dirty = false
11501150

1151+
// Deleting is expected to restore initial metadata state
11511152
metadata = deleteOne({ relatedNode___NODE: `added` }, metadata)
11521153
expect(metadata.dirty).toEqual(true)
1153-
expect(haveEqualFields(metadata, initialMetadata)).toEqual(false)
1154+
expect(haveEqualFields(metadata, initialMetadata)).toEqual(true)
11541155
})
11551156

11561157
it(`does not detect when the same node added to the relatedNode field`, () => {
@@ -1165,9 +1166,10 @@ describe(`Type change detection`, () => {
11651166
expect(haveEqualFields(metadata, initialMetadata)).toEqual(false)
11661167
metadata.dirty = false
11671168

1169+
// Deleting is expected to restore initial metadata state
11681170
metadata = deleteOne({ relatedNodeList___NODE: [`added`] }, metadata)
11691171
expect(metadata.dirty).toEqual(true)
1170-
expect(haveEqualFields(metadata, initialMetadata)).toEqual(false)
1172+
expect(haveEqualFields(metadata, initialMetadata)).toEqual(true)
11711173
})
11721174

11731175
it(`does not detect when the same node added to the relatedNodeList field`, () => {

packages/gatsby/src/schema/infer/inference-metadata.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -391,10 +391,12 @@ const descriptorsAreEqual = (
391391
descriptor?.relatedNode?.nodes,
392392
otherDescriptor?.relatedNode?.nodes
393393
)
394+
// Must be present in both descriptors or absent in both
395+
// in order to be considered equal
394396
return nodeIds.every(
395397
id =>
396-
descriptor?.relatedNode?.nodes[id] &&
397-
otherDescriptor?.relatedNode?.nodes[id]
398+
Boolean(descriptor?.relatedNode?.nodes[id]) ===
399+
Boolean(otherDescriptor?.relatedNode?.nodes[id])
398400
)
399401
}
400402
case `relatedNodeList`: {
@@ -404,8 +406,8 @@ const descriptorsAreEqual = (
404406
)
405407
return nodeIds.every(
406408
id =>
407-
descriptor?.relatedNodeList?.nodes[id] &&
408-
otherDescriptor?.relatedNodeList?.nodes[id]
409+
Boolean(descriptor?.relatedNodeList?.nodes[id]) ===
410+
Boolean(otherDescriptor?.relatedNodeList?.nodes[id])
409411
)
410412
}
411413
default:

0 commit comments

Comments
 (0)