enhance(e2e): add plugin tests

This commit is contained in:
charlie
2025-05-08 13:01:24 +08:00
parent 4c30aa2904
commit d7d88279ba

View File

@@ -0,0 +1,46 @@
(ns logseq.e2e.plugins-test
(:require
[clojure.string :as string]
[clojure.test :refer [deftest testing is use-fixtures]]
[logseq.e2e.fixtures :as fixtures]
[wally.main :as w]
[wally.repl :as repl]))
(use-fixtures :once fixtures/open-page)
(use-fixtures :each fixtures/new-logseq-page)
(defn- to-snake-case
"Converts a string to snake_case. Handles camelCase, PascalCase, spaces, hyphens, and existing underscores.
Examples:
'HelloWorld' -> 'hello_world'
'Hello World' -> 'hello_world'
'hello-world' -> 'hello_world'
'Hello__World' -> 'hello_world'"
[s]
(when (string? s)
(-> s
;; Normalize input: replace hyphens/spaces with underscores, collapse multiple underscores
(clojure.string/replace #"[-\s]+" "_")
;; Split on uppercase letters (except at start) and join with underscore
(clojure.string/replace #"(?<!^)([A-Z])" "_$1")
;; Remove redundant underscores and trim
(clojure.string/replace #"_+" "_")
(clojure.string/trim)
;; Convert to lowercase
(clojure.string/lower-case))))
(defn- ls-api-call!
[tag & args]
(let [tag (name tag)
ns' (string/split tag #"\.")
ns? (and (seq ns') (= (count ns') 2))
ns1 (string/lower-case (if ns? (str "sdk." (first ns')) "api"))
name1 (if ns? (to-snake-case (last ns')) tag)]
(w/eval-js
(format "args => { const o=logseq.%1$s; return o['%2$s']?.apply(null, args || []); }" ns1 name1)
(vec args))))
(deftest apis-related-test
(testing "block related apis"
(ls-api-call! :ui.showMsg "hello world" "error")
(repl/pause)))