|
|
@@ -3,6 +3,7 @@
|
|
|
[cljs.core.async :as async :refer [<! >! chan go]]
|
|
|
[frontend.worker.rtc.mock :as rtc-mock]
|
|
|
[frontend.worker.rtc.core :as rtc-core]
|
|
|
+ [frontend.worker.rtc.asset-sync :as asset-sync]
|
|
|
[frontend.test.helper :as test-helper]
|
|
|
[datascript.core :as d]
|
|
|
[frontend.db.conn :as conn]
|
|
|
@@ -12,6 +13,7 @@
|
|
|
[frontend.state :as state]))
|
|
|
|
|
|
(def *test-rtc-state (atom nil))
|
|
|
+(def *test-asset-sync-state (atom nil))
|
|
|
(def test-graph-uuid "e6d04ed7-bbc4-4ed2-a91b-69f3c0b9459d")
|
|
|
(def test-graph-init-local-t 1)
|
|
|
|
|
|
@@ -22,10 +24,18 @@
|
|
|
(assoc (rtc-core/init-state ws data-from-ws-chan test-helper/test-db "")
|
|
|
:*auto-push-client-ops? (atom false))))
|
|
|
|
|
|
+(defn- init-state-helper-for-asset-sync-loop
|
|
|
+ []
|
|
|
+ (let [data-from-ws-chan (chan (async/sliding-buffer 100))
|
|
|
+ ws (rtc-mock/mock-websocket data-from-ws-chan)
|
|
|
+ rtc-state (rtc-core/init-state ws data-from-ws-chan test-helper/test-db "")]
|
|
|
+ (assoc (asset-sync/init-state-from-rtc-state rtc-state)
|
|
|
+ :*auto-push-assets-update-ops? (atom false))))
|
|
|
+
|
|
|
(defn- <start-rtc-loop
|
|
|
[]
|
|
|
(go
|
|
|
- (let [graph-uuid "e56287f0-44de-487d-8b9f-02e91ec57d98" ; just random generated
|
|
|
+ (let [graph-uuid test-graph-uuid
|
|
|
repo test-helper/test-db
|
|
|
state (init-state-helper)
|
|
|
loop-started-ch (chan)]
|
|
|
@@ -33,21 +43,48 @@
|
|
|
(rtc-core/<loop-for-rtc state graph-uuid repo (db/get-db repo false) (state/get-date-formatter) :loop-started-ch loop-started-ch)
|
|
|
(<! loop-started-ch))))
|
|
|
|
|
|
+(defn- <start-asset-sync-loop
|
|
|
+ []
|
|
|
+ (go
|
|
|
+ (let [graph-uuid test-graph-uuid
|
|
|
+ repo test-helper/test-db
|
|
|
+ state (init-state-helper-for-asset-sync-loop)
|
|
|
+ loop-started-ch (chan)]
|
|
|
+ (reset! *test-asset-sync-state state)
|
|
|
+ (asset-sync/<loop-for-assets-sync state graph-uuid repo (db/get-db repo false) :loop-started-ch loop-started-ch)
|
|
|
+ (<! loop-started-ch))))
|
|
|
+
|
|
|
(def start-and-stop-rtc-loop-fixture
|
|
|
{:before
|
|
|
#(t/async done
|
|
|
- (go
|
|
|
- (<! (<start-rtc-loop))
|
|
|
- (prn :<started-rtc-loop)
|
|
|
- (done)))
|
|
|
+ (go
|
|
|
+ (<! (<start-rtc-loop))
|
|
|
+ (prn :<started-rtc-loop)
|
|
|
+ (done)))
|
|
|
+ :after
|
|
|
+ #(t/async done
|
|
|
+ (go
|
|
|
+ (when-let [stop-rtc-loop-chan (some-> (:*stop-rtc-loop-chan @*test-rtc-state) deref)]
|
|
|
+ (prn :stopping-rtc-loop)
|
|
|
+ (>! stop-rtc-loop-chan true))
|
|
|
+ (reset! *test-rtc-state nil)
|
|
|
+ (done)))})
|
|
|
+
|
|
|
+(def start-and-stop-asset-sync-loop-fixture
|
|
|
+ {:before
|
|
|
+ #(t/async done
|
|
|
+ (go
|
|
|
+ (<! (<start-asset-sync-loop))
|
|
|
+ (prn :<start-asset-sync-loop)
|
|
|
+ (done)))
|
|
|
:after
|
|
|
#(t/async done
|
|
|
- (go
|
|
|
- (when-let [stop-rtc-loop-chan (some-> (:*stop-rtc-loop-chan @*test-rtc-state) deref)]
|
|
|
- (prn :stopping-rtc-loop)
|
|
|
- (>! stop-rtc-loop-chan true))
|
|
|
- (reset! *test-rtc-state nil)
|
|
|
- (done)))})
|
|
|
+ (go
|
|
|
+ (when-let [stop-asset-sync-loop-chan (some-> (:*stop-asset-sync-loop-chan @*test-asset-sync-state) deref)]
|
|
|
+ (prn :stopping-asset-sync-loop)
|
|
|
+ (>! stop-asset-sync-loop-chan true))
|
|
|
+ (reset! *test-asset-sync-state nil)
|
|
|
+ (done)))})
|
|
|
|
|
|
|
|
|
(def listen-test-db-fixture
|