diff --git a/packages/core/__tests__/tags.test.ts b/packages/core/__tests__/tags.test.ts index 4fe49ca77..4b31bff27 100644 --- a/packages/core/__tests__/tags.test.ts +++ b/packages/core/__tests__/tags.test.ts @@ -18,10 +18,10 @@ along with this program. If not, see . */ import { databaseTest, noteTest, TEST_NOTE } from "./utils/index.js"; -import { test, expect } from "vitest"; +import { test, expect, describe } from "vitest"; -function tag(title: string) { - return { title }; +function tag(title: string, dateCreated?: number) { + return { title, dateCreated }; } function color(title: string) { @@ -98,3 +98,50 @@ for (const type of ["tag", "color"] as const) { ); })); } + +describe("sort tags by", () => { + const tags = ["apple", "mango", "melon", "orange", "zucchini"]; + const sortTestCases = [ + { + sortBy: "title", + sortDirection: "asc", + expectedOrder: ["apple", "mango", "melon", "orange", "zucchini"] + }, + { + sortBy: "title", + sortDirection: "desc", + expectedOrder: ["zucchini", "orange", "melon", "mango", "apple"] + }, + { + sortBy: "dateCreated", + sortDirection: "asc", + expectedOrder: ["apple", "mango", "melon", "orange", "zucchini"] + }, + { + sortBy: "dateCreated", + sortDirection: "desc", + expectedOrder: ["zucchini", "orange", "melon", "mango", "apple"] + } + ] as const; + for (const testCase of sortTestCases) { + test(`${testCase.sortBy} ${testCase.sortDirection}`, () => + databaseTest().then(async (db) => { + let previousCreatedDate = Date.now(); + for (const title of tags) { + await db.tags.add(tag(title, previousCreatedDate++)); + } + + const items = await db.tags.all.grouped({ + sortBy: testCase.sortBy, + sortDirection: testCase.sortDirection, + groupBy: "default" + }); + + for (let i = 0; i < testCase.expectedOrder.length; i++) { + expect((await items.item(i)).item?.title).toEqual( + testCase.expectedOrder[i] + ); + } + })); + } +}); diff --git a/packages/core/src/database/sql-collection.ts b/packages/core/src/database/sql-collection.ts index 8e1f6b276..76d93ec21 100644 --- a/packages/core/src/database/sql-collection.ts +++ b/packages/core/src/database/sql-collection.ts @@ -609,10 +609,10 @@ export class FilteredSelector { sanitizeSortOptions(this.type, options); const sortBy: Set = new Set(); + sortBy.add(options.sortBy); if (options.groupBy === "abc") sortBy.add("title"); else if (options.sortBy === "title" && options.groupBy !== "none") sortBy.add("dateCreated"); - sortBy.add(options.sortBy); return ( qb: SelectQueryBuilder