From 94b0802e64123b98adc9ba05cd2091a5d4aa9830 Mon Sep 17 00:00:00 2001 From: forehalo Date: Fri, 17 Jan 2025 07:43:07 +0000 Subject: [PATCH] fix(nbstore): userdata id converter (#9748) --- .../src/utils/__tests__/id-converter.spec.ts | 51 +++++++++++++++++++ .../common/nbstore/src/utils/id-converter.ts | 2 +- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 packages/common/nbstore/src/utils/__tests__/id-converter.spec.ts diff --git a/packages/common/nbstore/src/utils/__tests__/id-converter.spec.ts b/packages/common/nbstore/src/utils/__tests__/id-converter.spec.ts new file mode 100644 index 000000000..9abc07ac4 --- /dev/null +++ b/packages/common/nbstore/src/utils/__tests__/id-converter.spec.ts @@ -0,0 +1,51 @@ +import { beforeAll, describe, expect, it } from 'vitest'; + +import { getIdConverter, type IdConverter } from '../id-converter'; + +const workspaceId = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'; +const userId = 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb'; + +const oldIds = [ + workspaceId, + 'abcdefg', + `db$${workspaceId}$folder`, + `db$${workspaceId}$docProperties`, + `userdata$${userId}$${workspaceId}$favorite`, +]; + +const newIds = [`db$folder`, `db$docProperties`, `userdata$${userId}$favorite`]; + +let converter: IdConverter; + +beforeAll(async () => { + converter = await getIdConverter( + { + getDocBuffer: async () => null, + }, + workspaceId + ); +}); + +describe('idConverter', async () => { + it('should convert old id to new id', () => { + expect(oldIds.map(id => converter.oldIdToNewId(id))).toMatchInlineSnapshot(` + [ + "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", + "abcdefg", + "db$folder", + "db$docProperties", + "userdata$bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb$favorite", + ] + `); + }); + + it('should convert new id to old id', () => { + expect(newIds.map(id => converter.newIdToOldId(id))).toMatchInlineSnapshot(` + [ + "db$aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa$folder", + "db$aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa$docProperties", + "userdata$bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb$aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa$favorite", + ] + `); + }); +}); diff --git a/packages/common/nbstore/src/utils/id-converter.ts b/packages/common/nbstore/src/utils/id-converter.ts index a2d96b41b..14f57699f 100644 --- a/packages/common/nbstore/src/utils/id-converter.ts +++ b/packages/common/nbstore/src/utils/id-converter.ts @@ -64,7 +64,7 @@ export async function getIdConverter( return oldId.replace(`db$${spaceId}$`, `db$`); } // userdata$userId$spaceId$docId -> userdata$userId$docId - if (oldId.match(new RegExp(`^userdata\\$[\\w-]+\\$${spaceId}$`))) { + if (oldId.match(new RegExp(`^userdata\\$[\\w-]+\\$${spaceId}\\$`))) { return oldId.replace(`$${spaceId}$`, '$'); } return oldIdToNewId[oldId] ?? oldId;