This commit is contained in:
Gered 2016-05-26 18:16:17 -04:00
parent f5e5ec130f
commit c31a896bd0
3 changed files with 52 additions and 61 deletions

View file

@ -2,7 +2,9 @@
(:use
clojure.test
views.protocols
views.core))
views.core
views.test-memory-db)
(:import (views.test_memory_db MemoryView)))
(defn reset-state-fixture! [f]
(reset! view-system {})
@ -12,26 +14,6 @@
(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]])

View file

@ -2,42 +2,9 @@
(:use
clojure.test
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
(atom []))
@ -451,15 +418,13 @@
@test-sent-data)))))
(deftest unsubscribe-before-subscription-finishes-does-not-result-in-stuck-view
(let [views [(SlowMemoryView. :foo [:foo])]
subscriber-key 123
(let [subscriber-key 123
view-sig (->view-sig :a :foo [])
options default-options]
; 1. init views
(init! views test-send-fn options)
(init! slow-views test-send-fn options)
; 2. subscribe to a view
(let [view-data (get-view-data view-sig)
subscribe-result (subscribe! view-sig subscriber-key nil)]
(let [subscribe-result (subscribe! view-sig subscriber-key nil)]
(is (= #{view-sig} (subscribed-views)))
(is (not (realized? subscribe-result)))
; 3. unsubscribe before subscription finishes (still waiting on initial data

View 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])])