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>
This commit is contained in:
2026-08-25 15:32:15 +02:00
commit 40631362b3
2016 changed files with 543898 additions and 0 deletions

View File

@@ -0,0 +1,131 @@
(ns logseq.e2e.property-scoped-choices-test
(:require [clojure.test :refer [deftest use-fixtures]]
[logseq.e2e.assert :as assert]
[logseq.e2e.block :as b]
[logseq.e2e.fixtures :as fixtures]
[logseq.e2e.keyboard :as k]
[logseq.e2e.locator :as loc]
[logseq.e2e.page :as page]
[logseq.e2e.util :as util]
[wally.main :as w]
[wally.repl :as repl]))
(use-fixtures :once fixtures/open-page)
(use-fixtures :each
fixtures/new-logseq-page
fixtures/validate-graph)
(defn- add-property
[property-name]
(b/new-blocks ["setup"])
(w/click (util/get-by-text "setup" true))
(k/press "Control+e")
(util/input-command "Add property")
(w/click "input[placeholder]")
(util/input property-name)
(w/click (w/get-by-text "New option:"))
(w/click (loc/and "span" (util/get-by-text "Text" true)))
(k/esc)
(assert/assert-is-visible (format ".property-k:text('%s')" property-name)))
(defn- add-tag-property
[property-name]
(w/click "button:has-text('Add tag property')")
(w/click "input[placeholder='Add or change property']")
(util/input property-name)
(w/click (loc/filter "a.menu-link" :has-text property-name))
(assert/assert-is-visible (format ".property-k:text('%s')" property-name)))
(defn- open-choices-pane
[property-name]
(w/click (loc/filter ".property-k" :has-text property-name))
(w/click (loc/filter "div[role='menuitem']" :has-text "Available choices")))
(defn- add-choice
[property-name choice]
(open-choices-pane property-name)
(w/click (loc/filter "div[role='menuitem']" :has-text "Add choice"))
(w/fill "input[placeholder='title']" choice)
(w/click "button:has-text('Save')")
(k/esc))
(defn- hide-choice-for-tag
[property-name choice tag]
(open-choices-pane property-name)
(util/wait-timeout 100)
(w/click (format ".choices-list li:has-text('%s') button[title='More settings']" choice))
(util/wait-timeout 100)
(w/click (loc/filter "div[role='menuitem']" :has-text (str "Hide for #" tag)))
(k/esc))
(defn- open-property-value-select
[property-name]
(w/click (format ".bottom-property-pill:has(.property-k:has-text('%s')) .property-value-container .jtrigger"
property-name))
(assert/assert-is-visible (format "input[placeholder='Set %s']" property-name))
(w/click (format "input[placeholder='Set %s']" property-name))
(assert/assert-is-visible ".cp__select-results"))
(deftest tag-scoped-property-choices-test
(let [setup-page (page/get-page-name)
tag "Device"
property-name "device-type"
scoped-choice "wired"
global-choice "wireless"]
(add-property property-name)
(page/new-page tag)
(page/convert-to-tag tag)
(add-tag-property property-name)
(add-choice property-name scoped-choice)
(util/wait-timeout 100)
(k/esc)
(page/goto-page setup-page)
(add-choice property-name global-choice)
(util/wait-timeout 100)
(k/esc)
(page/goto-page tag)
;; open tag properties
(w/click (.first (w/-query "a.block-control")))
(hide-choice-for-tag property-name global-choice tag)
(util/wait-timeout 100)
(k/esc)
(page/new-page "scoped-choices-test")
(b/new-block "Device item")
(util/set-tag tag)
(open-property-value-select property-name)
(assert/assert-is-visible (loc/filter ".cp__select-results" :has-text scoped-choice))
(assert/assert-have-count (loc/filter ".cp__select-results" :has-text global-choice) 0)))
(deftest tag-scoped-property-choices-isolated-test
(let [tag-a "Device2"
tag-b "Vehicle"
property-name "device2-type"
choice-a "wired2"
choice-b "gas"]
(add-property property-name)
(page/new-page tag-a)
(page/convert-to-tag tag-a)
(add-tag-property property-name)
(add-choice property-name choice-a)
(util/wait-timeout 100)
(k/esc)
(page/new-page tag-b)
(page/convert-to-tag tag-b)
(add-tag-property property-name)
(add-choice property-name choice-b)
(util/wait-timeout 100)
(k/esc)
(page/new-page "scoped-choices-device2")
(b/new-block "Device2 item")
(util/set-tag tag-a)
(open-property-value-select property-name)
(assert/assert-is-visible (loc/filter ".cp__select-results" :has-text choice-a))
(assert/assert-have-count (loc/filter ".cp__select-results" :has-text choice-b) 0)
(k/esc)
(page/new-page "scoped-choices-vehicle")
(b/new-block "Vehicle item")
(util/set-tag tag-b)
(open-property-value-select property-name)
(assert/assert-is-visible (loc/filter ".cp__select-results" :has-text choice-b))
(assert/assert-have-count (loc/filter ".cp__select-results" :has-text choice-a) 0)))