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>
85 lines
3.3 KiB
Clojure
85 lines
3.3 KiB
Clojure
(ns logseq.e2e.flashcards-basic-test
|
|
(:require [clojure.test :refer [deftest testing use-fixtures]]
|
|
[logseq.e2e.api :refer [ls-api-call!]]
|
|
[logseq.e2e.assert :as assert]
|
|
[logseq.e2e.fixtures :as fixtures]
|
|
[logseq.e2e.locator :as loc]
|
|
[logseq.e2e.util :as util]
|
|
[wally.main :as w]))
|
|
|
|
(use-fixtures :once fixtures/open-page)
|
|
|
|
(use-fixtures :each
|
|
fixtures/validate-graph)
|
|
|
|
(defn- open-flashcards
|
|
[]
|
|
(util/double-esc)
|
|
(when-not (w/visible? ".flashcards-nav")
|
|
(w/click "#left-menu")
|
|
(w/wait-for ".flashcards-nav"))
|
|
(w/eval-js "selector => document.querySelector(selector)?.click()" ".flashcards-nav a")
|
|
(assert/assert-is-visible "#cards-modal"))
|
|
|
|
(defn- select-cards-option
|
|
[label]
|
|
(w/click "#cards-modal [role='combobox']")
|
|
(w/click (loc/filter "[role='option']" :has-text label)))
|
|
|
|
(defn- click-flashcards-plus
|
|
[]
|
|
(w/click "#ls-cards-add"))
|
|
|
|
(defn- setup-flashcards-data!
|
|
[{:keys [page-name tag-a tag-b card-a card-b query-a query-b]}]
|
|
(ls-api-call! :editor.appendBlockInPage page-name (str card-a " #Card #" tag-a))
|
|
(ls-api-call! :editor.appendBlockInPage page-name (str card-b " #Card #" tag-b))
|
|
(let [cards (ls-api-call! :editor.getTag "logseq.class/Cards")
|
|
cards-id (get cards "id")
|
|
cards-a (ls-api-call! :editor.appendBlockInPage page-name "Cards A"
|
|
{:properties {:block/tags #{cards-id}}})
|
|
cards-b (ls-api-call! :editor.appendBlockInPage page-name "Cards B"
|
|
{:properties {:block/tags #{cards-id}}})
|
|
query-a-id (get cards-a ":logseq.property/query")
|
|
query-b-id (get cards-b ":logseq.property/query")]
|
|
(ls-api-call! :editor.updateBlock query-a-id query-a)
|
|
(ls-api-call! :editor.updateBlock query-b-id query-b)))
|
|
|
|
(deftest flashcards-plus-and-switching-test
|
|
(testing "create #Cards blocks from flashcards dialog and switch card sets"
|
|
(let [tag-a "fc-tag-a"
|
|
tag-b "fc-tag-b"
|
|
card-a "Card A"
|
|
card-b "Card B"
|
|
query-a (str "[[" tag-a "]]")
|
|
query-b (str "[[" tag-b "]]")]
|
|
(util/goto-journals)
|
|
(let [page (ls-api-call! :editor.getCurrentPage)
|
|
page-name (get page "name")]
|
|
(setup-flashcards-data!
|
|
{:page-name page-name
|
|
:tag-a tag-a
|
|
:tag-b tag-b
|
|
:card-a card-a
|
|
:card-b card-b
|
|
:query-a query-a
|
|
:query-b query-b}))
|
|
|
|
(open-flashcards)
|
|
(click-flashcards-plus)
|
|
(w/wait-for ".ls-block .tag:has-text('Cards')")
|
|
|
|
(open-flashcards)
|
|
(select-cards-option "Cards A")
|
|
(assert/assert-is-visible (format "#cards-modal .ls-card :text('%s')" card-a))
|
|
(assert/assert-have-count (format "#cards-modal .ls-card :text('%s')" card-b) 0)
|
|
(assert/assert-is-visible (loc/filter "#cards-modal .text-sm.opacity-50" :has-text "1/1"))
|
|
|
|
(select-cards-option "Cards B")
|
|
(assert/assert-is-visible (format "#cards-modal .ls-card :text('%s')" card-b))
|
|
(assert/assert-have-count (format "#cards-modal .ls-card :text('%s')" card-a) 0)
|
|
(assert/assert-is-visible (loc/filter "#cards-modal .text-sm.opacity-50" :has-text "1/1"))
|
|
|
|
(select-cards-option "All cards")
|
|
(assert/assert-is-visible (loc/filter "#cards-modal .text-sm.opacity-50" :has-text "1/2")))))
|