repo_test.cljs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. (ns frontend.handler.repo-test
  2. (:require [cljs.test :refer [deftest use-fixtures testing is]]
  3. [frontend.handler.file-based.repo :as file-repo-handler]
  4. [frontend.test.helper :as test-helper :refer [load-test-files]]
  5. [logseq.graph-parser.cli :as gp-cli]
  6. [logseq.graph-parser.test.docs-graph-helper :as docs-graph-helper]
  7. [logseq.common.util.block-ref :as block-ref]
  8. [frontend.db.model :as model]
  9. [frontend.db.conn :as conn]
  10. [datascript.core :as d]
  11. [clojure.edn :as edn]
  12. ["path" :as node-path]
  13. ["fs" :as fs]))
  14. (use-fixtures :each test-helper/start-and-destroy-db)
  15. (deftest ^:integration parse-and-load-files-to-db
  16. (let [graph-dir "src/test/docs-0.10.9"
  17. _ (docs-graph-helper/clone-docs-repo-if-not-exists graph-dir "v0.10.9")
  18. repo-config (edn/read-string (str (fs/readFileSync (node-path/join graph-dir "logseq/config.edn"))))
  19. files (#'gp-cli/build-graph-files graph-dir repo-config)
  20. _ (test-helper/with-config repo-config
  21. (file-repo-handler/parse-files-and-load-to-db! test-helper/test-db files {:re-render? false :verbose false}))
  22. db (conn/get-db test-helper/test-db)]
  23. (docs-graph-helper/docs-graph-assertions db graph-dir (map :file/path files))
  24. (testing "Additional Counts"
  25. (is (= 77137 (count (d/datoms db :eavt))) "Correct datoms count")
  26. (is (= 7047
  27. (ffirst
  28. (d/q '[:find (count ?b)
  29. :where [?b :block/path-refs ?bp] [?bp :block/name]] db)))
  30. "Correct referenced blocks count"))))
  31. (deftest parse-files-and-load-to-db-with-block-refs-on-reload
  32. (testing "Refs to blocks on a page are retained if that page is reloaded"
  33. (let [test-uuid "16c90195-6a03-4b3f-839d-095a496d9acd"
  34. target-page-content (str "- target block\n id:: " test-uuid)
  35. referring-page-content (str "- " (block-ref/->block-ref test-uuid))]
  36. (load-test-files [{:file/path "pages/target.md"
  37. :file/content target-page-content}
  38. {:file/path "pages/referrer.md"
  39. :file/content referring-page-content}])
  40. (is (= [(parse-uuid test-uuid)] (model/get-all-referenced-blocks-uuid)))
  41. (load-test-files [{:file/path "pages/target.md"
  42. :file/content target-page-content}])
  43. (is (= [(parse-uuid test-uuid)] (model/get-all-referenced-blocks-uuid))))))
  44. (deftest parse-files-and-load-to-db-with-page-rename
  45. (testing
  46. "Reload a file when the disk contents result in the file having a new page name"
  47. (let [test-uuid "16c90195-6a03-4b3f-839d-095a496d9efc"
  48. target-page-content (str "- target block\n id:: " test-uuid)
  49. referring-page-content (str "- " (block-ref/->block-ref test-uuid))
  50. update-referring-page-content (str "title:: updatedPage\n- " (block-ref/->block-ref test-uuid))
  51. get-page-block-count (fn [page-name]
  52. (let [page-id (:db/id (model/get-page page-name))]
  53. (if (some? page-id)
  54. (model/get-page-blocks-count test-helper/test-db page-id)
  55. 0)))]
  56. (load-test-files [{:file/path "pages/target.md"
  57. :file/content target-page-content}
  58. {:file/path "pages/referrer.md"
  59. :file/content referring-page-content}])
  60. (is (= [(parse-uuid test-uuid)] (model/get-all-referenced-blocks-uuid)))
  61. (is (= 1 (get-page-block-count "referrer")))
  62. (is (= 0 (get-page-block-count "updatedPage")))
  63. (load-test-files [{:file/path "pages/referrer.md"
  64. :file/content update-referring-page-content}])
  65. (is (= [(parse-uuid test-uuid)] (model/get-all-referenced-blocks-uuid)))
  66. (is (= 0 (get-page-block-count "referrer")))
  67. (is (= 2 (get-page-block-count "updatedPage"))))))