mirror of
https://github.com/penpot/penpot.git
synced 2025-01-10 08:50:57 -05:00
548664f6ce
Make common as first-class module.
40 lines
1.1 KiB
Clojure
40 lines
1.1 KiB
Clojure
(ns app.test-helpers.events
|
|
(:require
|
|
[cljs.test :as t :include-macros true]
|
|
[cljs.pprint :refer [pprint]]
|
|
[beicon.core :as rx]
|
|
[potok.core :as ptk]
|
|
[app.common.uuid :as uuid]
|
|
[app.common.geom.point :as gpt]
|
|
[app.common.geom.shapes :as gsh]
|
|
[app.common.pages :as cp]
|
|
[app.common.pages.helpers :as cph]
|
|
[app.main.data.workspace :as dw]))
|
|
|
|
;; ---- Helpers to manage global events
|
|
|
|
(defn do-update
|
|
"Execute an update event and returns the new state."
|
|
[event state]
|
|
(ptk/update event state))
|
|
|
|
(defn do-watch
|
|
"Execute a watch event and return an observable, that
|
|
emits once a list with all new events."
|
|
[event state]
|
|
(->> (ptk/watch event state nil)
|
|
(rx/reduce conj [])))
|
|
|
|
(defn do-watch-update
|
|
"Execute a watch event and return an observable, that
|
|
emits once the new state, after all new events applied
|
|
in sequence (considering they are all update events)."
|
|
[event state]
|
|
(->> (do-watch event state)
|
|
(rx/map (fn [new-events]
|
|
(reduce
|
|
(fn [new-state new-event]
|
|
(do-update new-event new-state))
|
|
state
|
|
new-events)))))
|
|
|