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