delete-session now also calls on-expiry when it deletes something
This commit is contained in:
parent
1384c52d75
commit
8228408082
|
@ -113,7 +113,15 @@
|
|||
key))
|
||||
|
||||
(delete-session [_ key]
|
||||
(swap! session-atom dissoc key)
|
||||
(if on-expiry
|
||||
; if we have an on-expiry listener, we need to check if we actually removed the entry
|
||||
; and then call on-expiry
|
||||
(let [[old new] (swap-vals! session-atom dissoc key)]
|
||||
(if (and (contains? old key)
|
||||
(not (contains? new key)))
|
||||
(on-expiry key (-> old (get key) :value) :deleted)))
|
||||
; if there's no on-expiry listener, just do the delete
|
||||
(swap! session-atom dissoc key))
|
||||
nil))
|
||||
|
||||
(defn- sweeper-thread
|
||||
|
|
|
@ -320,4 +320,20 @@
|
|||
(is (>= keep-time-diff 800))))
|
||||
(stop as)))
|
||||
|
||||
(deftest expiry-listener-triggered-when-delete-session-removes-entry
|
||||
(let [expired (atom nil)
|
||||
as (aging-memory-store 1 {:on-expiry #(reset! expired [%1 %2 %3])})]
|
||||
(write-session as "foo" {:foo 1})
|
||||
(is (= (read-session as "foo") {:foo 1}))
|
||||
(is (nil? @expired))
|
||||
(delete-session as "foo")
|
||||
(is (= ["foo" {:foo 1} :deleted] @expired))
|
||||
(is (nil? (read-session as "foo")))))
|
||||
|
||||
(deftest expiry-listener-not-triggered-when-delete-session-called-for-non-existent-key
|
||||
(let [expired (atom nil)
|
||||
as (aging-memory-store 1 {:on-expiry #(reset! expired [%1 %2 %3])})]
|
||||
(delete-session as "foo")
|
||||
(is (nil? @expired))))
|
||||
|
||||
#_(run-tests)
|
||||
|
|
Loading…
Reference in a new issue