fix: correct db-worker ui request response args

This commit is contained in:
Tienson Qin
2026-05-03 22:22:45 +08:00
parent 74c2cc9393
commit ac102e70fe
2 changed files with 53 additions and 3 deletions

View File

@@ -90,7 +90,7 @@
(defn- <invoke-worker-thread-api
[wrapped-worker qkw & args]
(apply wrapped-worker qkw false args))
(apply wrapped-worker qkw args))
(defn- ui-request-error->payload
[error]

View File

@@ -1,7 +1,8 @@
(ns frontend.handler.worker-test
(:require [cljs.test :refer [deftest is]]
(:require [cljs.test :refer [async deftest is]]
[frontend.handler.worker :as worker-handler]
[frontend.state :as state]))
[frontend.state :as state]
[promesa.core :as p]))
(deftest handle-message-reports-comlink-worker-throw-with-extra-data-test
(let [captured-events (atom [])
@@ -42,3 +43,52 @@
(finally
(aset js/console "error" orig-console-error)
(aset js/console "log" orig-console-log)))))
(deftest db-worker-ui-request-resolve-passes-request-id-and-result-test
(async done
(let [calls (atom [])
wrapped-worker (fn [qkw & args]
(swap! calls conj [qkw args])
(p/resolved {:ok true}))]
(with-redefs [frontend.handler.worker/<db-worker-ui-action
(fn [_action _payload]
(p/resolved {:password "pw"}))]
(-> (worker-handler/handle :db-worker/ui-request
wrapped-worker
{:request-id "req-1"
:action :request-e2ee-password
:payload {:reason :decrypt-user-rsa-private-key}})
(p/then (fn [_]
(is (= [[:thread-api/resolve-ui-request ["req-1" {:password "pw"}]]]
@calls))
(done)))
(p/catch (fn [error]
(is nil (str "unexpected error: " error))
(done))))))))
(deftest db-worker-ui-request-reject-passes-request-id-and-error-test
(async done
(let [calls (atom [])
wrapped-worker (fn [qkw & args]
(swap! calls conj [qkw args])
(p/resolved {:ok true}))]
(with-redefs [frontend.handler.worker/<db-worker-ui-action
(fn [_action _payload]
(p/rejected (ex-info "boom" {:code :boom :x 1})))]
(-> (worker-handler/handle :db-worker/ui-request
wrapped-worker
{:request-id "req-2"
:action :request-e2ee-password
:payload {:reason :decrypt-user-rsa-private-key}})
(p/then (fn [_]
(is (= [[:thread-api/reject-ui-request
["req-2"
{:code :boom
:message "boom"
:data {:code :boom
:x 1}}]]]
@calls))
(done)))
(p/catch (fn [error]
(is nil (str "unexpected error: " error))
(done))))))))