db_based_model_test.cljs 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. (ns frontend.db.db-based-model-test
  2. (:require [cljs.test :refer [use-fixtures deftest is testing]]
  3. [frontend.db.model :as model]
  4. [frontend.db :as db]
  5. [frontend.test.helper :as test-helper]
  6. [datascript.core :as d]
  7. [logseq.outliner.property :as outliner-property]))
  8. (def repo test-helper/test-db-name-db-version)
  9. (def init-data (test-helper/initial-test-page-and-blocks))
  10. (defn start-and-destroy-db
  11. [f]
  12. (test-helper/db-based-start-and-destroy-db
  13. f
  14. {:init-data (fn [conn] (d/transact! conn init-data))}))
  15. (def fbid (:block/uuid (second init-data)))
  16. (def sbid (:block/uuid (nth init-data 2)))
  17. (use-fixtures :each start-and-destroy-db)
  18. ;; (deftest get-db-property-values-test-with-pages
  19. ;; (let [opts {:redirect? false :create-first-block? false}
  20. ;; _ (test-helper/create-page! "page1" opts)
  21. ;; _ (test-helper/create-page! "page2" opts)
  22. ;; p1id (:block/uuid (db/get-page "page1"))
  23. ;; p2id (:block/uuid (db/get-page "page2"))]
  24. ;; (outliner-property/upsert-property! repo "property-1" {:type :page} {})
  25. ;; (outliner-property/set-block-property! repo fbid "property-1" p1id {})
  26. ;; (outliner-property/set-block-property! repo sbid "property-1" p2id {})
  27. ;; (is (= '("[[page1]]" "[[page2]]") (model/get-db-property-values repo "property-1")))))
  28. (deftest get-all-classes-test
  29. (let [opts {:redirect? false :create-first-block? false :class? true}
  30. _ (test-helper/create-page! "class1" opts)
  31. _ (test-helper/create-page! "class2" opts)]
  32. (is (= ["Card" "Root class" "Task" "class1" "class2"] (sort (map first (model/get-all-classes repo)))))))
  33. (deftest get-class-objects-test
  34. (let [opts {:redirect? false :create-first-block? false :class? true}
  35. _ (test-helper/create-page! "class1" opts)
  36. class (db/get-case-page "class1")
  37. _ (test-helper/save-block! repo fbid "Block 1" {:tags ["class1"]})]
  38. (is (= (model/get-class-objects repo (:db/id class))
  39. [(:db/id (db/entity [:block/uuid fbid]))]))
  40. (testing "classes parent"
  41. (test-helper/create-page! "class2" opts)
  42. ;; set class2's parent to class1
  43. (let [class2 (db/get-case-page "class2")]
  44. (db/transact! [{:db/id (:db/id class2)
  45. :class/parent (:db/id class)}]))
  46. (test-helper/save-block! repo sbid "Block 2" {:tags ["class2"]})
  47. (is (= (model/get-class-objects repo (:db/id class))
  48. [(:db/id (db/entity [:block/uuid fbid]))
  49. (:db/id (db/entity [:block/uuid sbid]))])))))
  50. (deftest get-classes-with-property-test
  51. (let [opts {:redirect? false :create-first-block? false :class? true}
  52. _ (test-helper/create-page! "class1" opts)
  53. _ (test-helper/create-page! "class2" opts)
  54. class1 (db/get-case-page "class1")
  55. class2 (db/get-case-page "class2")
  56. conn (db/get-db false)]
  57. (outliner-property/upsert-property! conn :user.property/property-1 {:type :page} {})
  58. (outliner-property/class-add-property! conn (:db/id class1) :user.property/property-1)
  59. (outliner-property/class-add-property! conn (:db/id class2) :user.property/property-1)
  60. (let [property (db/entity :user.property/property-1)
  61. classes (model/get-classes-with-property (:db/ident property))]
  62. (is (= (set (map :db/id classes))
  63. #{(:db/id class1) (:db/id class2)})))))
  64. (deftest hidden-page-test
  65. (let [opts {:redirect? false :create-first-block? false}
  66. _ (test-helper/create-page! "page 1" opts)]
  67. (is (false? (model/hidden-page? (db/get-page "page 1"))))
  68. (is (true? (model/hidden-page? "$$$test")))
  69. (is (true? (model/hidden-page? (str "$$$" (random-uuid)))))))
  70. (deftest get-class-children-test
  71. (let [opts {:redirect? false :create-first-block? false :class? true}
  72. _ (test-helper/create-page! "class1" opts)
  73. _ (test-helper/create-page! "class2" opts)
  74. _ (test-helper/create-page! "class3" opts)
  75. class1 (db/get-case-page "class1")
  76. class2 (db/get-case-page "class2")
  77. class3 (db/get-case-page "class3")
  78. _ (db/transact! [{:db/id (:db/id class2)
  79. :class/parent (:db/id class1)}
  80. {:db/id (:db/id class3)
  81. :class/parent (:db/id class2)}])]
  82. (is
  83. (= (model/get-class-children repo (:db/id (db/get-case-page "class1")))
  84. [(:db/id class2) (:db/id class3)]))))