refactor
This commit is contained in:
parent
f5e5ec130f
commit
c31a896bd0
|
@ -2,7 +2,9 @@
|
||||||
(:use
|
(:use
|
||||||
clojure.test
|
clojure.test
|
||||||
views.protocols
|
views.protocols
|
||||||
views.core))
|
views.core
|
||||||
|
views.test-memory-db)
|
||||||
|
(:import (views.test_memory_db MemoryView)))
|
||||||
|
|
||||||
(defn reset-state-fixture! [f]
|
(defn reset-state-fixture! [f]
|
||||||
(reset! view-system {})
|
(reset! view-system {})
|
||||||
|
@ -12,26 +14,6 @@
|
||||||
(use-fixtures :each reset-state-fixture!)
|
(use-fixtures :each reset-state-fixture!)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(def memory-database (atom {}))
|
|
||||||
|
|
||||||
(defrecord MemoryView [id ks]
|
|
||||||
IView
|
|
||||||
(id [_] id)
|
|
||||||
(data [_ namespace parameters]
|
|
||||||
(get-in @memory-database (-> [namespace]
|
|
||||||
(into ks)
|
|
||||||
(into parameters))))
|
|
||||||
(relevant? [_ namespace parameters hints]
|
|
||||||
(some #(and (= namespace (:namespace %))
|
|
||||||
(= ks (:hint %)))
|
|
||||||
hints)))
|
|
||||||
|
|
||||||
(def views
|
|
||||||
[(MemoryView. :foo [:foo])
|
|
||||||
(MemoryView. :bar [:bar])
|
|
||||||
(MemoryView. :baz [:baz])])
|
|
||||||
|
|
||||||
(defn dummy-send-fn [subscriber-key [view-sig view-data]])
|
(defn dummy-send-fn [subscriber-key [view-sig view-data]])
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,42 +2,9 @@
|
||||||
(:use
|
(:use
|
||||||
clojure.test
|
clojure.test
|
||||||
views.protocols
|
views.protocols
|
||||||
views.core))
|
views.core
|
||||||
|
views.test-memory-db))
|
||||||
|
|
||||||
(def memory-database
|
|
||||||
(atom {:a {:foo 1 :bar 200 :baz [1 2 3]}
|
|
||||||
:b {:foo 2 :bar 300 :baz [2 3 4]}}))
|
|
||||||
|
|
||||||
(defrecord MemoryView [id ks]
|
|
||||||
IView
|
|
||||||
(id [_] id)
|
|
||||||
(data [_ namespace parameters]
|
|
||||||
(get-in @memory-database (-> [namespace]
|
|
||||||
(into ks)
|
|
||||||
(into parameters))))
|
|
||||||
(relevant? [_ namespace parameters hints]
|
|
||||||
(some #(and (= namespace (:namespace %))
|
|
||||||
(= ks (:hint %)))
|
|
||||||
hints)))
|
|
||||||
|
|
||||||
(defrecord SlowMemoryView [id ks]
|
|
||||||
IView
|
|
||||||
(id [_] id)
|
|
||||||
(data [_ namespace parameters]
|
|
||||||
; simulate a slow database query
|
|
||||||
(Thread/sleep 1000)
|
|
||||||
(get-in @memory-database (-> [namespace]
|
|
||||||
(into ks)
|
|
||||||
(into parameters))))
|
|
||||||
(relevant? [_ namespace parameters hints]
|
|
||||||
(some #(and (= namespace (:namespace %))
|
|
||||||
(= ks (:hint %)))
|
|
||||||
hints)))
|
|
||||||
|
|
||||||
(def views
|
|
||||||
[(MemoryView. :foo [:foo])
|
|
||||||
(MemoryView. :bar [:bar])
|
|
||||||
(MemoryView. :baz [:baz])])
|
|
||||||
|
|
||||||
(def test-sent-data
|
(def test-sent-data
|
||||||
(atom []))
|
(atom []))
|
||||||
|
@ -451,15 +418,13 @@
|
||||||
@test-sent-data)))))
|
@test-sent-data)))))
|
||||||
|
|
||||||
(deftest unsubscribe-before-subscription-finishes-does-not-result-in-stuck-view
|
(deftest unsubscribe-before-subscription-finishes-does-not-result-in-stuck-view
|
||||||
(let [views [(SlowMemoryView. :foo [:foo])]
|
(let [subscriber-key 123
|
||||||
subscriber-key 123
|
|
||||||
view-sig (->view-sig :a :foo [])
|
view-sig (->view-sig :a :foo [])
|
||||||
options default-options]
|
options default-options]
|
||||||
; 1. init views
|
; 1. init views
|
||||||
(init! views test-send-fn options)
|
(init! slow-views test-send-fn options)
|
||||||
; 2. subscribe to a view
|
; 2. subscribe to a view
|
||||||
(let [view-data (get-view-data view-sig)
|
(let [subscribe-result (subscribe! view-sig subscriber-key nil)]
|
||||||
subscribe-result (subscribe! view-sig subscriber-key nil)]
|
|
||||||
(is (= #{view-sig} (subscribed-views)))
|
(is (= #{view-sig} (subscribed-views)))
|
||||||
(is (not (realized? subscribe-result)))
|
(is (not (realized? subscribe-result)))
|
||||||
; 3. unsubscribe before subscription finishes (still waiting on initial data
|
; 3. unsubscribe before subscription finishes (still waiting on initial data
|
||||||
|
|
44
test/views/test_memory_db.clj
Normal file
44
test/views/test_memory_db.clj
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
(ns views.test-memory-db
|
||||||
|
(:use
|
||||||
|
views.protocols
|
||||||
|
views.core))
|
||||||
|
|
||||||
|
(def memory-database
|
||||||
|
(atom {:a {:foo 1 :bar 200 :baz [1 2 3]}
|
||||||
|
:b {:foo 2 :bar 300 :baz [2 3 4]}}))
|
||||||
|
|
||||||
|
(defrecord MemoryView [id ks]
|
||||||
|
IView
|
||||||
|
(id [_] id)
|
||||||
|
(data [_ namespace parameters]
|
||||||
|
(get-in @memory-database (-> [namespace]
|
||||||
|
(into ks)
|
||||||
|
(into parameters))))
|
||||||
|
(relevant? [_ namespace parameters hints]
|
||||||
|
(some #(and (= namespace (:namespace %))
|
||||||
|
(= ks (:hint %)))
|
||||||
|
hints)))
|
||||||
|
|
||||||
|
(defrecord SlowMemoryView [id ks]
|
||||||
|
IView
|
||||||
|
(id [_] id)
|
||||||
|
(data [_ namespace parameters]
|
||||||
|
; simulate a slow database query
|
||||||
|
(Thread/sleep 1000)
|
||||||
|
(get-in @memory-database (-> [namespace]
|
||||||
|
(into ks)
|
||||||
|
(into parameters))))
|
||||||
|
(relevant? [_ namespace parameters hints]
|
||||||
|
(some #(and (= namespace (:namespace %))
|
||||||
|
(= ks (:hint %)))
|
||||||
|
hints)))
|
||||||
|
|
||||||
|
(def views
|
||||||
|
[(MemoryView. :foo [:foo])
|
||||||
|
(MemoryView. :bar [:bar])
|
||||||
|
(MemoryView. :baz [:baz])])
|
||||||
|
|
||||||
|
(def slow-views
|
||||||
|
[(SlowMemoryView. :foo [:foo])
|
||||||
|
(SlowMemoryView. :bar [:bar])
|
||||||
|
(SlowMemoryView. :baz [:baz])])
|
Loading…
Reference in a new issue