X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=tests%2Ftest-fddl.lisp;h=e231592c82610d5368c3607984c217b875415de5;hb=db9892632e6eb7869aea7a94c16b523a82de1501;hp=2767f130a98a808e2a93aa05d8f9922cb7d9570b;hpb=5a6f424f3c8920f8f11bbf1e3aed6b4c2c7e6af8;p=clsql.git diff --git a/tests/test-fddl.lisp b/tests/test-fddl.lisp index 2767f13..e231592 100644 --- a/tests/test-fddl.lisp +++ b/tests/test-fddl.lisp @@ -3,28 +3,32 @@ ;;;; File: test-fddl.lisp ;;;; Author: Marcus Pearce ;;;; Created: 30/03/2004 -;;;; Updated: $Id: $ -;;;; ====================================================================== -;;;; -;;;; Description ========================================================== -;;;; ====================================================================== +;;;; Updated: $Id$ ;;;; ;;;; Tests for the CLSQL Functional Data Definition Language ;;;; (FDDL). -;;;; +;;;; +;;;; This file is part of CLSQL. +;;;; +;;;; CLSQL users are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser GNU Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; ====================================================================== (in-package #:clsql-tests) #.(clsql:locally-enable-sql-reader-syntax) +(setq *rt-fddl* + '( + ;; list current tables (deftest :fddl/table/1 (apply #'values (sort (mapcar #'string-downcase (clsql:list-tables :owner *test-database-user*)) #'string>)) - "clsql_object_v" "employee" "company") + "employee" "company") ;; create a table, test for its existence, drop it and test again (deftest :fddl/table/2 @@ -127,25 +131,23 @@ ;; 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 @@ -155,13 +157,9 @@ (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 @@ -171,13 +169,33 @@ (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:create-index [bar] :on [employee] :attributes + '([last-name]) :unique nil) + (clsql:create-index [foo] :on [employee] :attributes + '([first-name]) :unique nil) + (values + + (sort + (mapcar + #'string-downcase + (clsql:list-table-indexes [employee] :owner *test-database-user*)) + #'string-lessp) + (sort (clsql:list-table-indexes [company] :owner *test-database-user*) + #'string-lessp) + (progn + (clsql:drop-index [bar] :on [employee]) + (clsql:drop-index [foo] :on [employee]) + 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]) @@ -208,4 +226,6 @@ (clsql:drop-sequence [foo] :if-does-not-exist :ignore))) 6) +)) + #.(clsql:restore-sql-reader-syntax-state)