From 239e30104210912b4d20ae3059990639a766d554 Mon Sep 17 00:00:00 2001
From: 01zulfi <85733202+01zulfi@users.noreply.github.com>
Date: Mon, 29 Sep 2025 11:23:03 +0500
Subject: [PATCH] core: fix tag sort by title Signed-off-by: 01zulfi
<85733202+01zulfi@users.noreply.github.com>
---
packages/core/__tests__/tags.test.ts | 53 ++++++++++++++++++--
packages/core/src/database/sql-collection.ts | 2 +-
2 files changed, 51 insertions(+), 4 deletions(-)
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