Skip to content

Commit

Permalink
Add tests for :on-ping key in listener map
Browse files Browse the repository at this point in the history
  • Loading branch information
weavejester committed Nov 5, 2023
1 parent b2e8966 commit 20584af
Showing 1 changed file with 31 additions and 16 deletions.
47 changes: 31 additions & 16 deletions ring-core/test/ring/test/websocket.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
(ns ring.test.websocket
(:require [clojure.test :refer [deftest is]]
(:require [clojure.test :refer [deftest is testing]]
[ring.websocket :as ws]
[ring.websocket.protocols :as wsp]))

Expand All @@ -12,18 +12,33 @@
{:headers {"sec-websocket-protocol" "mqtt, soap"}}))))

(deftest test-map-listeners
(let [listener {:on-open (fn [s] [:on-open s])
:on-message (fn [s m] [:on-message s m])
:on-pong (fn [s d] [:on-pong s d])
:on-error (fn [s e] [:on-error s e])
:on-close (fn [s c r] [:on-close s c r])}]
(is (= [:on-open :sock]
(wsp/on-open listener :sock)))
(is (= [:on-message :sock "foo"]
(wsp/on-message listener :sock "foo")))
(is (= [:on-pong :sock "data"]
(wsp/on-pong listener :sock "data")))
(is (= [:on-error :sock "err"]
(wsp/on-error listener :sock "err")))
(is (= [:on-close :sock 1000 "closed"]
(wsp/on-close listener :sock 1000 "closed")))))
(testing "listener methods"
(let [listener {:on-open (fn [s] [:on-open s])
:on-message (fn [s m] [:on-message s m])
:on-pong (fn [s d] [:on-pong s d])
:on-error (fn [s e] [:on-error s e])
:on-close (fn [s c r] [:on-close s c r])}]
(is (= [:on-open :sock]
(wsp/on-open listener :sock)))
(is (= [:on-message :sock "foo"]
(wsp/on-message listener :sock "foo")))
(is (= [:on-pong :sock "data"]
(wsp/on-pong listener :sock "data")))
(is (= [:on-error :sock "err"]
(wsp/on-error listener :sock "err")))
(is (= [:on-close :sock 1000 "closed"]
(wsp/on-close listener :sock 1000 "closed")))))
(testing "default on-ping"
(let [pong? (promise)
sock (reify wsp/Socket
(-pong [_ _] (deliver pong? true)))]
(wsp/on-ping {} sock :data)
(is (true? (deref pong? 1 false)))))
(testing "custom on-ping"
(let [pong? (promise)
listener {:on-ping (fn [s d] [:on-ping s d])}
sock (reify wsp/Socket
(-pong [_ _] (deliver pong? true)))]
(is (= [:on-ping sock :data]
(wsp/on-ping listener sock :data)))
(is (false? (deref pong? 1 false))))))

0 comments on commit 20584af

Please sign in to comment.