Browse Source

Add number list and children commands tests

Tienson Qin 5 months ago
parent
commit
5133cf939d

+ 1 - 1
clj-e2e/dev/user.clj

@@ -69,7 +69,7 @@
   (repl/resume)
 
   ;; Run specific test
-  (future (run-test logseq.e2e.commands-test/date-time-test))
+  (future (run-test logseq.e2e.commands-test/number-children-test))
 
   ;; after the test has been paused, you can do anything with the current page like this
   (repl/with-page

+ 4 - 0
clj-e2e/src/logseq/e2e/block.clj

@@ -49,3 +49,7 @@
   [blocks]
   (doseq [block blocks]
     (assert/assert-is-visible (format ".ls-page-blocks .ls-block :text('%s')" block))))
+
+(defn jump-to-block
+  [block-text]
+  (w/click (w/find-one-by-text ".ls-block .block-content" block-text)))

+ 11 - 0
clj-e2e/src/logseq/e2e/util.clj

@@ -171,3 +171,14 @@
 (defn move-cursor-to-start
   []
   (k/press "ControlOrMeta+a" "ArrowLeft"))
+
+(defn input-command
+  [command]
+  (let [content (get-edit-content)]
+    (when (and (not= (str (last content)) " ")
+               (not= content ""))
+      (type " ")))
+  (type "/")
+  (type command)
+  (w/wait-for ".ui__popover-content")
+  (k/enter))

+ 38 - 26
clj-e2e/test/logseq/e2e/commands_test.clj

@@ -1,7 +1,6 @@
 (ns logseq.e2e.commands-test
   (:require
    [clj-time.core :as t]
-   [clj-time.format :as tf]
    [clj-time.local :as tl]
    [clojure.string :as string]
    [clojure.test :refer [deftest testing is use-fixtures]]
@@ -24,18 +23,11 @@
     (k/backspace)
     (w/wait-for-not-visible ".ui__popover-content")))
 
-(defn- input-command
-  [command-match]
-  (util/type "/")
-  (util/type command-match)
-  (w/wait-for ".ui__popover-content")
-  (k/enter))
-
 (deftest node-reference-test
   (testing "Node reference"
     (testing "Page reference"
       (b/new-blocks ["b1" ""])
-      (input-command "Node eferen")
+      (util/input-command "Node eferen")
       (util/type "Another page")
       (k/enter)
       (is (= "[[Another page]]" (util/get-edit-content)))
@@ -43,7 +35,7 @@
       (is (= "Another page" (util/get-text "a.page-ref"))))
     (testing "Block reference"
       (b/new-block "")
-      (input-command "Node eferen")
+      (util/input-command "Node eferen")
       (util/type "b1")
       (util/wait-timeout 300)
       (k/enter)
@@ -60,11 +52,11 @@
                             (k/tab)
                             (k/enter))]
       (b/new-block "")
-      (input-command "link")
+      (util/input-command "link")
       (add-logseq-link)
       (is (= "[Logseq](https://logseq.com)" (util/get-edit-content)))
       (util/type " some content ")
-      (input-command "link")
+      (util/input-command "link")
       (add-logseq-link)
       (is (= (str "[Logseq](https://logseq.com)"
                   " some content "
@@ -73,7 +65,7 @@
 (deftest link-image-test
   (testing "/image link"
     (b/new-block "")
-    (input-command "image link")
+    (util/input-command "image link")
     (util/type "https://logseq.com/test.png")
     (k/tab)
     (util/type "Logseq")
@@ -84,7 +76,7 @@
 (deftest underline-test
   (testing "/underline"
     (b/new-block "")
-    (input-command "underline")
+    (util/input-command "underline")
     (is (= "<ins></ins>" (util/get-edit-content)))
     (util/type "test")
     (is (= "<ins>test</ins>" (util/get-edit-content)))
@@ -93,7 +85,7 @@
 (deftest code-block-test
   (testing "/code block"
     (b/new-block "")
-    (input-command "code block")
+    (util/input-command "code block")
     (w/wait-for ".CodeMirror")
     (util/wait-timeout 100)
     ;; create another block
@@ -102,7 +94,7 @@
 (deftest math-block-test
   (testing "/math block"
     (b/new-block "")
-    (input-command "math block")
+    (util/input-command "math block")
     (util/type "1 + 2 = 3")
     (util/exit-edit)
     (w/wait-for ".katex")))
@@ -110,7 +102,7 @@
 (deftest quote-test
   (testing "/quote"
     (b/new-block "")
-    (input-command "quote")
+    (util/input-command "quote")
     (w/wait-for "div[data-node-type='quote']")))
 
 (deftest headings-test
@@ -119,7 +111,7 @@
       (let [heading (str "h" (inc i))
             text (str heading " test ")]
         (b/new-block text)
-        (input-command heading)
+        (util/input-command heading)
         (is (= text (util/get-edit-content)))
         (util/exit-edit)
         (w/wait-for heading)))))
@@ -132,7 +124,7 @@
       (doseq [status ["Backlog" "Todo" "Doing" "In review" "Done" "Canceled"]]
         (let [text (str status " test ")]
           (b/new-block text)
-          (input-command status)
+          (util/input-command status)
           (is (= text (util/get-edit-content)))
           (util/exit-edit)
           (w/wait-for (str ".ls-icon-" (get status->icon status status))))))))
@@ -143,7 +135,7 @@
       (doseq [priority ["No priority" "Low" "Medium" "High" "Urgent"]]
         (let [text (str priority " test ")]
           (b/new-block text)
-          (input-command priority)
+          (util/input-command priority)
           (is (= text (util/get-edit-content)))
           (util/exit-edit)
           (w/wait-for (str ".ls-icon-" (get priority->icon priority
@@ -155,7 +147,7 @@
       (fixtures/create-page)
       (let [text (str command " test ")]
         (b/new-block text)
-        (input-command command)
+        (util/input-command command)
         (k/enter)
         (k/esc)
         (util/exit-edit)
@@ -165,27 +157,47 @@
 ;; TODO: java "MMMM d, yyyy" vs js "MMM do, yyyy"
 (deftest date-time-test
   (testing "date time commands"
-    (input-command "today")
+    (util/input-command "today")
     (let [text (util/get-edit-content)]
       (and (string/starts-with? text "[[")
            (string/ends-with? text "]]")))
     (b/new-block "")
-    (input-command "yesterday")
+    (util/input-command "yesterday")
     (let [text (util/get-edit-content)]
       (and (string/starts-with? text "[[")
            (string/ends-with? text "]]")))
     (b/new-block "")
-    (input-command "tomorrow")
+    (util/input-command "tomorrow")
     (let [text (util/get-edit-content)]
       (and (string/starts-with? text "[[")
            (string/ends-with? text "]]")))
     (b/new-block "")
-    (input-command "time")
+    (util/input-command "time")
     (let [text (util/get-edit-content)
           t (tl/local-now)]
       (is (= text (str (t/hour t) ":" (t/minute t)))))
     (b/new-block "")
-    (input-command "date picker")
+    (util/input-command "date picker")
     (let [text (util/get-edit-content)]
       (and (string/starts-with? text "[[")
            (string/ends-with? text "]]")))))
+
+(deftest number-list-test
+  (testing "number list commands"
+    (util/input-command "number list")
+    (b/new-blocks ["a" "b" "c"])
+    (is (= ["1." "2." "3."] (w/all-text-contents "span.typed-list")))
+    ;; double `enter` convert the next block to bullet block
+    (k/enter)
+    (k/enter)
+    (is (= ["1." "2." "3."] (w/all-text-contents "span.typed-list")))))
+
+(deftest number-children-test
+  (testing "number children commands"
+    (b/new-blocks ["a" "a1" "a2" "a3" "b"])
+    (k/arrow-up)
+    (util/repeat-keyboard 3 "Shift+ArrowUp")
+    (k/tab)
+    (b/jump-to-block "a")
+    (util/input-command "number children")
+    (is (= ["1." "2." "3."] (w/all-text-contents "span.typed-list")))))