|
| 1 | +(ns logseq.e2e.flashcards-basic-test |
| 2 | + (:require [clojure.test :refer [deftest testing use-fixtures]] |
| 3 | + [logseq.e2e.api :refer [ls-api-call!]] |
| 4 | + [logseq.e2e.assert :as assert] |
| 5 | + [logseq.e2e.fixtures :as fixtures] |
| 6 | + [logseq.e2e.keyboard :as k] |
| 7 | + [logseq.e2e.locator :as loc] |
| 8 | + [logseq.e2e.util :as util] |
| 9 | + [wally.main :as w] |
| 10 | + [wally.repl :as repl])) |
| 11 | + |
| 12 | +(use-fixtures :once fixtures/open-page) |
| 13 | + |
| 14 | +(use-fixtures :each |
| 15 | + fixtures/validate-graph) |
| 16 | + |
| 17 | +(defn- open-flashcards |
| 18 | + [] |
| 19 | + (util/double-esc) |
| 20 | + (k/press ["t" "c"]) |
| 21 | + (assert/assert-is-visible "#cards-modal")) |
| 22 | + |
| 23 | +(defn- select-cards-option |
| 24 | + [label] |
| 25 | + (w/click "#cards-modal [role='combobox']") |
| 26 | + (w/click (loc/filter "[role='option']" :has-text label))) |
| 27 | + |
| 28 | +(defn- click-flashcards-plus |
| 29 | + [] |
| 30 | + (w/click "#ls-cards-add")) |
| 31 | + |
| 32 | +(defn- setup-flashcards-data! |
| 33 | + [{:keys [page-name tag-a tag-b card-a card-b query-a query-b]}] |
| 34 | + (ls-api-call! :editor.appendBlockInPage page-name (str card-a " #Card #" tag-a)) |
| 35 | + (ls-api-call! :editor.appendBlockInPage page-name (str card-b " #Card #" tag-b)) |
| 36 | + (let [cards (ls-api-call! :editor.getTag "logseq.class/Cards") |
| 37 | + cards-id (get cards "id") |
| 38 | + cards-a (ls-api-call! :editor.appendBlockInPage page-name "Cards A" |
| 39 | + {:properties {:block/tags #{cards-id}}}) |
| 40 | + cards-b (ls-api-call! :editor.appendBlockInPage page-name "Cards B" |
| 41 | + {:properties {:block/tags #{cards-id}}}) |
| 42 | + query-a-id (get cards-a ":logseq.property/query") |
| 43 | + query-b-id (get cards-b ":logseq.property/query")] |
| 44 | + (ls-api-call! :editor.updateBlock query-a-id query-a) |
| 45 | + (ls-api-call! :editor.updateBlock query-b-id query-b))) |
| 46 | + |
| 47 | +(deftest flashcards-plus-and-switching-test |
| 48 | + (testing "create #Cards blocks from flashcards dialog and switch card sets" |
| 49 | + (let [tag-a "fc-tag-a" |
| 50 | + tag-b "fc-tag-b" |
| 51 | + card-a "Card A" |
| 52 | + card-b "Card B" |
| 53 | + query-a (str "[[" tag-a "]]") |
| 54 | + query-b (str "[[" tag-b "]]")] |
| 55 | + (util/goto-journals) |
| 56 | + (let [page (ls-api-call! :editor.getCurrentPage) |
| 57 | + page-name (get page "name")] |
| 58 | + (setup-flashcards-data! |
| 59 | + {:page-name page-name |
| 60 | + :tag-a tag-a |
| 61 | + :tag-b tag-b |
| 62 | + :card-a card-a |
| 63 | + :card-b card-b |
| 64 | + :query-a query-a |
| 65 | + :query-b query-b})) |
| 66 | + |
| 67 | + (open-flashcards) |
| 68 | + (click-flashcards-plus) |
| 69 | + (w/wait-for ".ls-block .tag:has-text('Cards')") |
| 70 | + |
| 71 | + (open-flashcards) |
| 72 | + (select-cards-option "Cards A") |
| 73 | + (assert/assert-is-visible (format "#cards-modal .ls-card :text('%s')" card-a)) |
| 74 | + (assert/assert-have-count (format "#cards-modal .ls-card :text('%s')" card-b) 0) |
| 75 | + (assert/assert-is-visible (loc/filter "#cards-modal .text-sm.opacity-50" :has-text "1/1")) |
| 76 | + |
| 77 | + (select-cards-option "Cards B") |
| 78 | + (assert/assert-is-visible (format "#cards-modal .ls-card :text('%s')" card-b)) |
| 79 | + (assert/assert-have-count (format "#cards-modal .ls-card :text('%s')" card-a) 0) |
| 80 | + (assert/assert-is-visible (loc/filter "#cards-modal .text-sm.opacity-50" :has-text "1/1")) |
| 81 | + |
| 82 | + (select-cards-option "All cards") |
| 83 | + (assert/assert-is-visible (loc/filter "#cards-modal .text-sm.opacity-50" :has-text "1/2"))))) |
0 commit comments