mirror of
https://github.com/penpot/penpot.git
synced 2025-12-12 06:24:17 +01:00
♻️ Refactor front end test to make use of common file helpers
This commit is contained in:
56
frontend/test/frontend_tests/helpers/state.cljs
Normal file
56
frontend/test/frontend_tests/helpers/state.cljs
Normal file
@@ -0,0 +1,56 @@
|
||||
;; This Source Code Form is subject to the terms of the Mozilla Public
|
||||
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
;;
|
||||
;; Copyright (c) KALEIDOS INC
|
||||
|
||||
(ns frontend-tests.helpers.state
|
||||
(:require
|
||||
[app.common.pprint :refer [pprint]]
|
||||
[app.common.schema :as sm]
|
||||
[app.common.test-helpers.files :as cthf]
|
||||
[app.main.data.workspace.layout :as layout]
|
||||
[beicon.v2.core :as rx]
|
||||
[potok.v2.core :as ptk]))
|
||||
|
||||
(def ^private initial-state
|
||||
{:workspace-layout layout/default-layout
|
||||
:workspace-global layout/default-global
|
||||
:current-file-id nil
|
||||
:current-page-id nil
|
||||
:workspace-data nil
|
||||
:workspace-libraries {}
|
||||
:features/team #{"components/v2"}})
|
||||
|
||||
(defn- on-error
|
||||
[cause]
|
||||
(js/console.log "STORE ERROR" (.-stack cause))
|
||||
(when-let [data (some-> cause ex-data ::sm/explain)]
|
||||
(pprint (sm/humanize-explain data))))
|
||||
|
||||
(defn setup-store
|
||||
[file]
|
||||
(let [state (-> initial-state
|
||||
(assoc :current-file-id (:id file)
|
||||
:current-page-id (cthf/current-page-id file)
|
||||
:workspace-file (dissoc file :data)
|
||||
:workspace-data (:data file)))
|
||||
store (ptk/store {:state state :on-error on-error})]
|
||||
store))
|
||||
|
||||
(defn run-store
|
||||
[store done events completed-cb]
|
||||
(let [stream (ptk/input-stream store)]
|
||||
(->> stream
|
||||
(rx/take-until (rx/filter #(= :the/end %) stream))
|
||||
(rx/last)
|
||||
(rx/tap (fn []
|
||||
(completed-cb @store)))
|
||||
(rx/subs! (fn [_] (done))
|
||||
(fn [cause]
|
||||
(js/console.log "[error]:" cause))
|
||||
(fn [_]
|
||||
(js/console.log "[complete]"))))
|
||||
(doall (for [event events]
|
||||
(ptk/emit! store event)))
|
||||
(ptk/emit! store :the/end)))
|
||||
Reference in New Issue
Block a user