Skip to content

Commit

Permalink
Merge pull request #168 from cichli/undef-tests
Browse files Browse the repository at this point in the history
Make undef test idempotent and add extra test cases
  • Loading branch information
bbatsov committed Mar 9, 2015
2 parents 038aed6 + 5c06c0b commit 2dfdb6b
Showing 1 changed file with 59 additions and 13 deletions.
72 changes: 59 additions & 13 deletions test/cider/nrepl/middleware/undef_test.clj
Original file line number Diff line number Diff line change
@@ -1,14 +1,60 @@
(ns cider.nrepl.middleware.undef-test
(:require
[clojure.test :refer :all]
[cider.nrepl.middleware.test-transport :refer [messages test-transport]]
[cider.nrepl.middleware.undef :refer [undef-reply]]))

(def x 1)

(deftest test-toogle-undef-op
(let [transport (test-transport)]
(is (ns-resolve 'cider.nrepl.middleware.undef-test 'x))
(undef-reply {:transport transport :ns "cider.nrepl.middleware.undef-test" :symbol "x"})
(is (= [{:status #{:done}}] (messages transport)))
(is (nil? (ns-resolve 'cider.nrepl.middleware.undef-test 'x)))))
(:require [cider.nrepl.middleware.test-session :as session]
[clojure.test :refer :all]))

(use-fixtures :each session/session-fixture)

(deftest undef-var
(testing "undef undefines vars"
(is (= ["#'user/x"]
(:value (session/message {:op "eval"
:code "(def x 1)"}))))
(is (= ["#'user/x"]
(:value (session/message {:op "eval"
:code "(ns-resolve 'user 'x)"}))))
(is (= #{"done"}
(:status (session/message {:op "undef"
:ns "user"
:symbol "x"}))))
(is (= ["nil"]
(:value (session/message {:op "eval"
:code "(ns-resolve 'user 'x)"}))))))

(deftest undef-alias
(testing "undef undefines aliases"
(is (= ["#'clojure.walk/postwalk"]
(:value (do
(session/message {:op "eval"
:code "(require '[clojure.walk :refer [postwalk]])"})
(session/message {:op "eval"
:code "(ns-resolve 'user 'postwalk)"})))))
(is (= #{"done"}
(:status (session/message {:op "undef"
:ns "user"
:symbol "postwalk"}))))
(is (= ["nil"]
(:value (session/message {:op "eval"
:code "(ns-resolve 'user 'postwalk)"}))))))

(deftest undef-undefined
(testing "undef does not throw for aliases or vars that are not defined"
(is (= ["nil"]
(:value (session/message {:op "eval"
:code "(ns-resolve 'user 'x)"}))))
(is (= #{"done"}
(:status (session/message {:op "undef"
:ns "user"
:symbol "x"}))))))

(deftest undef-exceptions
(testing "undef throws for non-existent namespaces"
(is (= #{"done" "undef-error"}
(:status (session/message {:op "undef"
:ns "abc"
:symbol "x"})))))

(testing "undef throws with missing arguments"
(is (= #{"done" "undef-error"}
(:status (session/message {:op "undef"}))
(:status (session/message {:op "undef" :ns "user"}))
(:status (session/message {:op "undef" :symbol "x"}))))))

0 comments on commit 2dfdb6b

Please sign in to comment.