fix: versions created with incomplete data when using select parameter (#13809)

### What?

Remove `select` parameter from database operations in update operation
during version creation to fix malformed version data.

### Why?

The `select` parameter was being passed to `saveVersion()` in update
operations, causing versions to only contain selected fields

### How?

- Removed `select` parameter from `payload.db.updateOne()` calls in
update operations
- Removed `select` parameter from `saveVersion()` call in update
operation


---
- To see the specific tasks where the Asana app for GitHub is being
used, see below:
  - https://app.asana.com/0/0/1211334352350013
This commit is contained in:
Patrik
2025-09-15 17:00:04 -04:00
committed by GitHub
parent 09dec43c15
commit faed3aaf26
2 changed files with 35 additions and 2 deletions

View File

@@ -1646,6 +1646,41 @@ describe('Select', () => {
expect(doc.version.createdAt).toBeUndefined()
expect(doc.version.text).toBe(post.text)
})
it('should create versions with complete data when updating with select', async () => {
// First, update the post with select to only return the id field
const updatedPost = await payload.update({
collection: 'versioned-posts',
id: postId,
data: {
text: 'updated text',
number: 999,
},
select: {},
})
// The update operation should only return the selected field
expect(updatedPost).toStrictEqual({
id: postId,
})
// However, the created version should contain the complete document
const versions = await payload.findVersions({
collection: 'versioned-posts',
where: { parent: { equals: postId } },
sort: '-updatedAt',
limit: 1,
})
const latestVersion = versions.docs[0]
assert(latestVersion)
// The version should have complete data, not just the selected fields
expect(latestVersion.version.text).toBe('updated text')
expect(latestVersion.version.number).toBe(999)
expect(latestVersion.version.array).toEqual(post.array)
expect(latestVersion.version.blocks).toEqual(post.blocks)
})
})
describe('Local API - Globals', () => {