r9114: fixes for list-indexes
[clsql.git] / tests / test-fddl.lisp
index ef79615b903f7e3edb9824f121ed82b2420bd7d3..98cd21601d13b73ce54105526dfa0b6f2efcbaef 100644 (file)
@@ -21,7 +21,7 @@
 
 (setq *rt-fddl*
       '(
-      
+       
 ;; list current tables 
 (deftest :fddl/table/1
     (apply #'values 
 
 ;; not in sqlite 
 (deftest :fddl/view/4
-    (if (eql *test-database-type* :sqlite)
-        (values nil '(("Josef" "Stalin" "stalin@soviet.org")))
-        (progn (clsql:create-view [lenins-group]
-                                 :column-list '([forename] [surname] [email])
-                                 :as [select [first-name] [last-name] [email]
-                                             :from [employee]
-                                             :where [= [managerid] 1]])
-               (let ((result 
-                      (list
-                       ;; Shouldn't exist 
+    (progn (clsql:create-view [lenins-group]
+           :column-list '([forename] [surname] [email])
+           :as [select [first-name] [last-name] [email]
+           :from [employee]
+           :where [= [managerid] 1]])
+          (let ((result 
+                 (list
+                  ;; Shouldn't exist 
                        (clsql:select [forename] [surname] [email]
-                                    :from [lenins-group]
-                                    :where [= [surname] "Lenin"])
-                       ;; Should exist 
+                                    :from [lenins-group]
+                                    :where [= [surname] "Lenin"])
+                      ;; Should exist 
                        (car (clsql:select [forename] [surname] [email]
-                                         :from [lenins-group]
-                                         :where [= [surname] "Stalin"])))))
-                 (clsql:drop-view [lenins-group] :if-does-not-exist :ignore)
-                 (apply #'values result))))
+                                         :from [lenins-group]
+                                         :where [= [surname] "Stalin"])))))
+            (clsql:drop-view [lenins-group] :if-does-not-exist :ignore)
+            (apply #'values result)))
   nil ("Josef" "Stalin" "stalin@soviet.org"))
 
 ;; create an index, test for existence, drop it and test again 
            (values
             (clsql:index-exists-p [bar] :owner *test-database-user*)
             (progn
-              (case *test-database-type*
-                (:mysql 
-                 (clsql:drop-index [bar] :on [employee]
-                                  :if-does-not-exist :ignore))
-                (t 
-                 (clsql:drop-index [bar]:if-does-not-exist :ignore)))
-              (clsql:view-exists-p [bar] :owner *test-database-user*))))
+             (clsql:drop-index [bar] :on [employee]
+                               :if-does-not-exist :ignore)
+              (clsql:index-exists-p [bar] :owner *test-database-user*))))
   t nil)
 
 ;; create indexes with names as strings, symbols and in square brackets 
       (dolist (name names)
         (clsql:create-index name :on [employee] :attributes '([emplid]))
         (push (clsql:index-exists-p name :owner *test-database-user*) result)
-        (case *test-database-type*
-          (:mysql 
-           (clsql:drop-index name :on [employee] :if-does-not-exist :ignore))
-          (t (clsql:drop-index name :if-does-not-exist :ignore))))
+       (clsql:drop-index name :on [employee] :if-does-not-exist :ignore))
       (apply #'values result))
   t t t)
 
+;; test list-table-indexes
+(deftest :fddl/index/3
+    (progn
+      (clsql:execute-command "CREATE TABLE I3TEST (a char(10), b integer)")
+      (clsql:create-index [bar] :on [i3test] :attributes
+                         '([a]) :unique t)
+      (clsql:create-index [foo] :on [i3test] :attributes
+                         '([b]) :unique nil)
+      (values
+       
+       (sort 
+       (mapcar 
+        #'string-downcase
+        (clsql:list-table-indexes [i3test] :owner *test-database-user*))
+           #'string-lessp)
+       (sort (clsql:list-table-indexes [company] :owner *test-database-user*)
+            #'string-lessp)
+       (progn
+        (clsql:drop-index [bar] :on [i3test])
+        (clsql:drop-index [foo] :on [i3test])
+        t)))
+  ("bar" "foo") nil t)
+
 ;; create an sequence, test for existence, drop it and test again 
 (deftest :fddl/sequence/1
     (progn (clsql:create-sequence [foo])