diff --git a/server/src/utils/folder.test.ts b/server/src/utils/folder.test.ts index afb5cdd1b..91358f846 100644 --- a/server/src/utils/folder.test.ts +++ b/server/src/utils/folder.test.ts @@ -4,7 +4,7 @@ import { ChartDocument, FolderDocument } from "tachi-common"; import t from "tap"; import ResetDBState from "test-utils/resets"; import { Testing511SPA } from "test-utils/test-data"; -import { GetFolderChartIDs, ResolveFolderToCharts } from "./folder"; +import { GetFolderChartIDs, ResolveFolderToCharts, TransposeFolderData } from "./folder"; t.todo("#CreateFolderChartLookup"); t.todo("#GetFolderCharts"); @@ -198,3 +198,47 @@ t.test("#GetFolderChartIDs", (t) => { t.end(); }); + +t.test("#TransposeFolderData", (t) => { + t.strictSame( + TransposeFolderData({ + "foo¬bar": 1, + }), + { + "foo.bar": 1, + }, + "Should transpose single keys." + ); + + t.strictSame( + TransposeFolderData({ + "foo¬bar": 1, + "foo¬baz": 2, + "foo~bar": 2, + "foo~baz": 2, + }), + { + "foo.bar": 1, + "foo.baz": 2, + foo$baz: 2, + foo$baz: 2, + }, + "Should transpose multiple keys." + ); + + t.strictSame( + TransposeFolderData({ + "foo¬bar¬baz": 1, + "foo¬bar~baz": 1, + "foo~bar~baz": 1, + }), + { + "foo.bar$baz": 1, + "foo.bar.baz": 1, + foo$bar$baz: 1, + }, + "Should transpose multiple items in one key." + ); + + t.end(); +}); diff --git a/server/src/utils/folder.ts b/server/src/utils/folder.ts index 3f2fc40f3..59e31c8af 100644 --- a/server/src/utils/folder.ts +++ b/server/src/utils/folder.ts @@ -93,7 +93,7 @@ export function TransposeFolderData(obj: Record) { const transposedObj: Record = {}; for (const key in obj) { - const transposedKey = key.replace(/~/u, "$").replace(/¬/u, "."); + const transposedKey = key.replace(/~/gu, "$").replace(/¬/gu, "."); if (typeof obj[key] === "object" && obj[key]) { transposedObj[transposedKey] = TransposeFolderData(obj[key] as Record);