diff --git a/deps/db/src/logseq/db.cljs b/deps/db/src/logseq/db.cljs index b9a990359..79beb3da8 100644 --- a/deps/db/src/logseq/db.cljs +++ b/deps/db/src/logseq/db.cljs @@ -584,8 +584,8 @@ (loop [current-parent parent] (when (and current-parent - (class? parent) - (not (contains? @*classes (:db/id parent)))) + (class? current-parent) + (not (contains? @*classes (:db/id current-parent)))) (swap! *classes conj (:db/id current-parent)) (recur (:logseq.property/parent current-parent))))) @*classes)) diff --git a/deps/db/test/logseq/db_test.cljs b/deps/db/test/logseq/db_test.cljs index 0d91144ff..874335798 100644 --- a/deps/db/test/logseq/db_test.cljs +++ b/deps/db/test/logseq/db_test.cljs @@ -2,7 +2,9 @@ (:require [cljs.test :refer [deftest is]] [logseq.db.frontend.schema :as db-schema] [datascript.core :as d] - [logseq.db :as ldb])) + [logseq.db :as ldb] + [logseq.db.sqlite.create-graph :as sqlite-create-graph] + [logseq.db.sqlite.build :as sqlite-build])) ;;; datoms @@ -27,3 +29,27 @@ (try (ldb/get-block-children-ids db #uuid "e538d319-48d4-4a6d-ae70-c03bb55b6fe4") (catch :default e (ex-message e))))))) + +(def class-parents-data + [{:block/type "class" + :block/title "x" + :block/name "x" + :block/uuid #uuid "6c353967-f79b-4785-b804-a39b81d72461"} + {:block/type "class" + :block/title "y" + :block/name "y" + :block/uuid #uuid "7008db08-ba0c-4aa9-afc6-7e4783e40a99" + :logseq.property/parent [:block/uuid #uuid "6c353967-f79b-4785-b804-a39b81d72461"]} + {:block/type "class" + :block/title "z" + :block/name "z" + :block/uuid #uuid "d95f2912-a7af-41b9-8ed5-28861f7fc0be" + :logseq.property/parent [:block/uuid #uuid "7008db08-ba0c-4aa9-afc6-7e4783e40a99"]}]) + +(deftest get-class-parents-test + (let [conn (d/create-conn db-schema/schema-for-db-based-graph)] + (d/transact! conn (sqlite-create-graph/build-db-initial-data "{}")) + (d/transact! conn class-parents-data) + (->> (ldb/get-class-parents (ldb/get-page @conn "z")) + (map #(:block/title (d/entity @conn %))) + (= #{"x" "y"})))) diff --git a/deps/outliner/src/logseq/outliner/property.cljs b/deps/outliner/src/logseq/outliner/property.cljs index 7785164bf..603d7ef0f 100644 --- a/deps/outliner/src/logseq/outliner/property.cljs +++ b/deps/outliner/src/logseq/outliner/property.cljs @@ -343,7 +343,7 @@ (let [tags' (filter ldb/class? tags) result (map (fn [id] (d/entity db id)) - (set (mapcat ldb/get-class-parents tags')))] + (mapcat ldb/get-class-parents tags'))] (set result))) (defn ^:api get-class-properties