Files
Synapse/clj-e2e/test/logseq/e2e/bidirectional_properties_test.clj
Dasemu 40631362b3 Initial import of LogDarioSeq baseline
Establishes version control for the personal Logseq DB fork before
starting the server-client architecture migration and domain features
described in docs/agent-guide and the approved implementation plan.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-25 15:32:15 +02:00

52 lines
2.3 KiB
Clojure

(ns logseq.e2e.bidirectional-properties-test
(:require [clojure.test :refer [deftest is testing use-fixtures]]
[logseq.e2e.api :refer [ls-api-call!]]
[logseq.e2e.assert :as assert]
[logseq.e2e.fixtures :as fixtures]
[logseq.e2e.page :as page]
[wally.main :as w]))
(use-fixtures :once fixtures/open-page)
(use-fixtures :each
fixtures/new-logseq-page
fixtures/validate-graph)
(deftest bidirectional-properties-test
(testing "shows reverse property references when a class enables bidirectional properties"
(let [friend-prop "friend"
person-tag "Person"
project-tag "Project"
target "Bob"
container-page "Bidirectional Props"]
(ls-api-call! :editor.createTag person-tag
{:tagProperties [{:name friend-prop
:schema {:type "node"}}]})
(ls-api-call! :editor.createTag project-tag)
(let [person (ls-api-call! :editor.getTag person-tag)
person-uuid (get person "uuid")
friend (ls-api-call! :editor.getPage friend-prop)]
(ls-api-call! :editor.upsertBlockProperty (get friend "id")
"logseq.property/classes"
(get person "id"))
(is (string? person-uuid))
(ls-api-call! :editor.upsertBlockProperty person-uuid
"logseq.property.class/bidirectional-property-title"
"People")
(ls-api-call! :editor.upsertBlockProperty person-uuid
"logseq.property.class/enable-bidirectional?"
true))
(ls-api-call! :editor.createPage target)
(ls-api-call! :editor.createPage container-page)
(let [bob (ls-api-call! :editor.getPage target)
bob-id (get bob "id")]
(ls-api-call! :editor.insertBlock container-page (str "Alice #" person-tag)
{:properties {friend-prop bob-id}})
(ls-api-call! :editor.insertBlock container-page (str "Charlie #" project-tag)
{:properties {friend-prop bob-id}}))
(page/goto-page target)
(w/wait-for ".property-k:text('People')")
(assert/assert-is-visible ".property-value .block-title-wrap:text('Alice')")
(assert/assert-have-count ".property-k:text('Projects')" 0))))