branch: elpa/clojure-ts-mode
commit dbad83231249fd5f596ac9c479da212f550be3e4
Author: p4v4n <pavan.manth...@gmail.com>
Commit: Bozhidar Batsov <bozhi...@batsov.dev>

    Add tests for clojure-ts-find-ns
    
     - The tests cases are copied from clojure-mode and updated
---
 test/clojure-ts-mode-util-test.el | 103 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)

diff --git a/test/clojure-ts-mode-util-test.el 
b/test/clojure-ts-mode-util-test.el
index 9d02bcc088..b4c2e1361e 100644
--- a/test/clojure-ts-mode-util-test.el
+++ b/test/clojure-ts-mode-util-test.el
@@ -23,7 +23,110 @@
 
 (require 'clojure-ts-mode)
 (require 'buttercup)
+(require 'test-helper "test/utils/test-helper")
 
 (describe "clojure-ts-mode-version"
   (it "should not be nil"
     (expect clojure-ts-mode-version)))
+
+(describe "clojure-ts-find-ns"
+  (it "should find common namespace declarations"
+    (with-clojure-ts-buffer "(ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "(ns
+    foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "(ns foo.baz)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo.baz"))
+    (with-clojure-ts-buffer "(ns ^:bar foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "(ns ^:bar ^:baz foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo")))
+
+  (it "should find namespaces with spaces before ns form"
+    (with-clojure-ts-buffer "  (ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo")))
+
+  (it "should skip namespaces within any comment forms"
+    (with-clojure-ts-buffer "(comment
+      (ns foo))"
+                            (expect (clojure-ts-find-ns) :to-equal nil))
+    (with-clojure-ts-buffer " (ns foo)
+     (comment
+      (ns bar))"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer " (comment
+      (ns foo))
+     (ns bar)
+    (comment
+      (ns baz))"
+                            (expect (clojure-ts-find-ns) :to-equal "bar")))
+
+  (it "should find namespace declarations with nested metadata and docstrings"
+    (with-clojure-ts-buffer "(ns ^{:bar true} foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "(ns #^{:bar true} foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "(ns #^{:fail {}} foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "(ns ^{:fail2 {}} foo.baz)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo.baz"))
+    (with-clojure-ts-buffer "(ns ^{} foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "(ns ^{:skip-wiki true}
+      aleph.netty)"
+                            (expect (clojure-ts-find-ns) :to-equal 
"aleph.netty"))
+    (with-clojure-ts-buffer "(ns ^{:foo {:bar :baz} :fake (ns in.meta)} foo
+  \"docstring
+(ns misleading)\")"
+                            (expect (clojure-ts-find-ns) :to-equal "foo")))
+
+  (it "should support non-alphanumeric characters"
+    (with-clojure-ts-buffer "(ns foo+)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo+"))
+    (with-clojure-ts-buffer "(ns bar**baz$-_quux)"
+                            (expect (clojure-ts-find-ns) :to-equal 
"bar**baz$-_quux"))
+    (with-clojure-ts-buffer "(ns aoc-2019.puzzles.day14)"
+                            (expect (clojure-ts-find-ns) :to-equal 
"aoc-2019.puzzles.day14")))
+
+  (it "should support in-ns forms"
+    (with-clojure-ts-buffer "(in-ns 'bar.baz)"
+                            (expect (clojure-ts-find-ns) :to-equal "bar.baz")))
+
+  (it "should take the first ns instead of closest unlike clojure-mode"
+    (with-clojure-ts-buffer " (ns foo1)
+
+(ns foo2)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo1"))
+    (with-clojure-ts-buffer-point " (in-ns foo1)
+(ns 'foo2)
+(in-ns 'foo3)
+|
+(ns foo4)"
+                                  (expect (clojure-ts-find-ns) :to-equal 
"foo3"))
+    (with-clojure-ts-buffer "(ns foo)
+(ns-unmap *ns* 'map)
+(ns.misleading 1 2 3)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo")))
+
+  (it "should skip leading garbage"
+    (with-clojure-ts-buffer " (ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "1(ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "1 (ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "1
+(ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "[1]
+(ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "[1] (ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "[1](ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "(ns)(ns foo)"
+                            (expect (clojure-ts-find-ns) :to-equal "foo"))
+    (with-clojure-ts-buffer "(ns 'foo)(ns bar)"
+                            (expect (clojure-ts-find-ns) :to-equal "bar"))))

Reply via email to