fix: fix skill display name rename conflict (#41229)

This commit is contained in:
wangxiaolei
2026-08-25 06:13:47 +00:00
committed by GitHub
parent 1afac21690
commit bc845ea748
2 changed files with 65 additions and 6 deletions
@@ -807,7 +807,6 @@ describe('SkillDetailPage', () => {
latest_published_at: version.created_at,
latest_published_version_id: version.id,
latest_published_version_number: version.version_number,
updated_at: version.created_at,
}
: mocks.skillDetail
return version
@@ -2147,6 +2146,71 @@ describe('SkillDetailPage', () => {
expect(document.body).toHaveTextContent('skill.skillManagement.detail.unpublishedChanges')
})
it('keeps the skill timestamp for metadata updates after publishing', async () => {
const user = userEvent.setup()
const skillUpdatedAt = 1784638490
const versionCreatedAt = 1784638491
mocks.skillDetail = createSkillDetail({ updated_at: skillUpdatedAt })
mocks.publishSkillMutationFn.mockImplementationOnce(async () => {
const version = {
id: 'version-2',
version_number: 2,
version_name: '',
publish_note: '',
hash_code: 'hash-code',
archive_size: 180,
published_by: 'user-1',
published_by_name: 'Fate',
created_at: versionCreatedAt,
is_latest: true,
}
mocks.skillDetail = mocks.skillDetail
? {
...mocks.skillDetail,
latest_published_at: version.created_at,
latest_published_version_id: version.id,
latest_published_version_number: version.version_number,
}
: mocks.skillDetail
return version
})
renderSkillDetailPage()
await user.click(
await screen.findByRole('button', {
name: 'skill.skillManagement.detail.publishUpdate',
}),
)
await waitFor(() => {
expect(mocks.publishSkillMutationFn).toHaveBeenCalled()
})
await user.click(screen.getByRole('button', { name: 'common.operation.rename' }))
const renameInput = screen.getByRole('textbox', { name: 'common.operation.rename' })
await user.clear(renameInput)
await user.type(renameInput, 'Renamed after publish{Enter}')
await waitFor(() => {
expect(mocks.skillMetadataMutationFn).toHaveBeenCalledWith(
expect.objectContaining({
body: expect.objectContaining({
display_name: 'Renamed after publish',
expected_updated_at: skillUpdatedAt,
}),
}),
expect.anything(),
)
})
expect(mocks.skillMetadataMutationFn).not.toHaveBeenCalledWith(
expect.objectContaining({
body: expect.objectContaining({
expected_updated_at: versionCreatedAt,
}),
}),
expect.anything(),
)
})
it('adds custom metadata from the value field Enter key and saves it on publish', async () => {
const user = userEvent.setup()
renderSkillDetailPage()
-5
View File
@@ -127,10 +127,6 @@ export function SkillDetailPage({ skillId }: { skillId: string }) {
latest_published_at: publishedOverride.publishedAt,
latest_published_version_id: publishedOverride.id,
latest_published_version_number: publishedOverride.versionNumber,
updated_at:
baseDetail.latest_published_version_id === publishedOverride.id
? baseDetail.updated_at
: Math.max(baseDetail.updated_at, publishedOverride.publishedAt),
}
}, [baseDetail, publishedOverride])
if (
@@ -253,7 +249,6 @@ export function SkillDetailPage({ skillId }: { skillId: string }) {
latest_published_at: version.created_at,
latest_published_version_id: version.id,
latest_published_version_number: version.version_number,
updated_at: Math.max(detail.updated_at, version.created_at),
})
}
await queryClient.invalidateQueries({ queryKey: detailQueryKey })