| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- (ns frontend.db.db-based-model-test
- (:require [cljs.test :refer [use-fixtures deftest is testing]]
- [frontend.db.model :as model]
- [frontend.db :as db]
- [frontend.test.helper :as test-helper]
- [datascript.core :as d]
- [logseq.outliner.property :as outliner-property]))
- (def repo test-helper/test-db-name-db-version)
- (def init-data (test-helper/initial-test-page-and-blocks))
- (defn start-and-destroy-db
- [f]
- (test-helper/db-based-start-and-destroy-db
- f
- {:init-data (fn [conn] (d/transact! conn init-data))}))
- (def fbid (:block/uuid (second init-data)))
- (def sbid (:block/uuid (nth init-data 2)))
- (use-fixtures :each start-and-destroy-db)
- (deftest get-all-classes-test
- (let [opts {:redirect? false :create-first-block? false :class? true}
- _ (test-helper/create-page! "class1" opts)
- _ (test-helper/create-page! "class2" opts)]
- (is (= ["Asset" "Card" "Cards" "Journal" "Query" "Root Tag" "Task" "class1" "class2"] (sort (map :block/title (model/get-all-classes repo)))))))
- (deftest ^:fix-me get-class-objects-test
- (let [opts {:redirect? false :create-first-block? false :class? true}
- _ (test-helper/create-page! "class1" opts)
- class (db/get-case-page "class1")
- _ (test-helper/save-block! repo fbid "Block 1" {:tags ["class1"]})]
- (is (= (map :db/id (model/get-class-objects repo (:db/id class)))
- [(:db/id (db/entity [:block/uuid fbid]))]))
- (testing "classes parent"
- (test-helper/create-page! "class2" opts)
- ;; set class2's parent to class1
- (let [class2 (db/get-case-page "class2")]
- (db/transact! [{:db/id (:db/id class2)
- :logseq.property/parent (:db/id class)}]))
- (test-helper/save-block! repo sbid "Block 2" {:tags ["class2"]})
- (is (= (map :db/id (model/get-class-objects repo (:db/id class)))
- [(:db/id (db/entity [:block/uuid fbid]))
- (:db/id (db/entity [:block/uuid sbid]))])))))
- (deftest get-classes-with-property-test
- (let [opts {:redirect? false :create-first-block? false :class? true}
- _ (test-helper/create-page! "class1" opts)
- _ (test-helper/create-page! "class2" opts)
- class1 (db/get-case-page "class1")
- class2 (db/get-case-page "class2")
- conn (db/get-db false)]
- (outliner-property/upsert-property! conn :user.property/property-1 {:type :node} {})
- (outliner-property/class-add-property! conn (:db/id class1) :user.property/property-1)
- (outliner-property/class-add-property! conn (:db/id class2) :user.property/property-1)
- (let [property (db/entity :user.property/property-1)
- classes (model/get-classes-with-property (:db/ident property))]
- (is (= (set (map :db/id classes))
- #{(:db/id class1) (:db/id class2)})))))
- (deftest hidden-page-test
- (let [opts {:redirect? false :create-first-block? false}
- _ (test-helper/create-page! "page 1" opts)]
- (is (false? (model/hidden-page? (db/get-page "page 1"))))
- (is (true? (model/hidden-page? "$$$test")))
- (is (true? (model/hidden-page? (str "$$$" (random-uuid)))))))
- (deftest get-class-children-test
- (let [opts {:redirect? false :create-first-block? false :class? true}
- _ (test-helper/create-page! "class1" opts)
- _ (test-helper/create-page! "class2" opts)
- _ (test-helper/create-page! "class3" opts)
- class1 (db/get-case-page "class1")
- class2 (db/get-case-page "class2")
- class3 (db/get-case-page "class3")
- _ (db/transact! [{:db/id (:db/id class2)
- :logseq.property/parent (:db/id class1)}
- {:db/id (:db/id class3)
- :logseq.property/parent (:db/id class2)}])]
- (is
- (= (model/get-structured-children repo (:db/id (db/get-case-page "class1")))
- [(:db/id class2) (:db/id class3)]))))
|