r9212: Automated commit for Debian build of clsql upstream-version-2.10.8
[clsql.git] / tests / test-init.lisp
index 3e6d85a21a551b44d7f30f52399bf1f23ac6673f..28ae58709f3d37628accf4ecd7040ec5f5ed8e88 100644 (file)
   ((extraterrestrial :initform nil :initarg :extraterrestrial)))
 
 (def-view-class person (thing)
-  ((height :db-kind :base :accessor height :type float :nulls-ok t
+  ((height :db-kind :base :accessor height :type float
            :initarg :height)
-   (married :db-kind :base :accessor married :type boolean :nulls-ok t
+   (married :db-kind :base :accessor married :type boolean
             :initarg :married)
-   (birthday :nulls-ok t :type clsql-base:wall-time :initarg :birthday)
+   (birthday :type clsql-base:wall-time :initarg :birthday)
    (hobby :db-kind :virtual :initarg :hobby :initform nil)))
   
 (def-view-class employee (person)
   ((emplid
     :db-kind :key
     :db-constraints :not-null
-    :nulls-ok nil
     :type integer
     :initarg :emplid)
    (groupid
     :db-kind :key
     :db-constraints :not-null
-    :nulls-ok nil
     :type integer
     :initarg :groupid)
    (first-name
@@ -65,7 +63,6 @@
    (email
     :accessor employee-email
     :type (string 100)
-    :nulls-ok t
     :initarg :email)
    (companyid
     :type integer)
@@ -77,8 +74,7 @@
                          :foreign-key companyid
                          :set nil))
    (managerid
-    :type integer
-    :nulls-ok t)
+    :type integer)
    (manager
     :accessor employee-manager
     :db-kind :join
 
 (def-view-class company ()
   ((companyid
-    :db-type :key
+    :db-kind :key
     :db-constraints :not-null
     :type integer
     :initarg :companyid)
    (groupid
-    :db-type :key
+    :db-kind :key
     :db-constraints :not-null
     :type integer
     :initarg :groupid)
   (:base-table company))
 
 
+(def-view-class address ()
+  ((emplid
+    :db-kind :key
+    :db-constraints :not-null
+    :type integer
+    :initarg :emplid)
+   (street-number
+    :type integer
+    :initarg :street-number)
+   (street-name
+    :type (string 30)
+    :void-value ""
+    :initarg :street-name)
+   (city
+    :column "city_field"
+    :void-value "no city"
+    :type (string 30)
+    :initarg :city)
+   (postal-code
+    :column "zip"
+    :type integer
+    :void-value 0
+    :initarg :postal-code)))
 
 (defun test-connect-to-database (db-type spec)
   (when (db-backend-has-create/destroy-db? db-type)
 (defparameter employee8 nil)
 (defparameter employee9 nil)
 (defparameter employee10 nil)
+(defparameter address1 nil)
+(defparameter address2 nil)
 
 (defun test-initialise-database ()
   (test-basic-initialize)
   
-  (clsql:create-view-from-class 'employee)
-  (clsql:create-view-from-class 'company)
+  (let ((*backend-warning-behavior*
+        (if (member *test-database-type* '(:postgresql :postgresql-socket))
+            :ignore
+          :warn)))
+    (clsql:create-view-from-class 'employee)
+    (clsql:create-view-from-class 'company)
+    (clsql:create-view-from-class 'address))
 
   (setf company1 (make-instance 'company
                   :companyid 1
                     :birthday (clsql-base:get-time)
                     :first-name "Vladamir"
                     :last-name "Putin"
-                    :email "putin@soviet.org"))
+                    :email "putin@soviet.org")
+
+       address1 (make-instance 'address
+                               :emplid 1
+                               :street-number 10
+                               :street-name "Park Place"
+                               :city "Leningrad"
+                               :postal-code 123)
 
+       address2 (make-instance 'address
+                               :emplid 2))
+  
   ;; sleep to ensure birthdays are no longer at current time
   (sleep 2) 
 
   (clsql:update-records-from-instance employee8)
   (clsql:update-records-from-instance employee9)
   (clsql:update-records-from-instance employee10)
-  (clsql:update-records-from-instance company1))
+  (clsql:update-records-from-instance company1)
+  (clsql:update-records-from-instance address1)
+  (clsql:update-records-from-instance address2))
 
 (defvar *error-count* 0)
 (defvar *error-list* nil)
 (defun compute-tests-for-backend (db-type db-underlying-type)
   (let ((test-forms '())
        (skip-tests '()))
-    (dolist (test-form (append
-                       (if (eq db-type :sqlite)
-                           (test-basic-forms-untyped)
-                         (test-basic-forms))
-                       *rt-connection* *rt-fddl* *rt-fdml*
-                       *rt-ooddl* *rt-oodml* *rt-syntax*))
+    (dolist (test-form (append (test-basic-forms)
+                              *rt-connection* *rt-fddl* *rt-fdml*
+                              *rt-ooddl* *rt-oodml* *rt-syntax*))
       (let ((test (second test-form)))
        (cond
          ((and (null (db-type-has-views? db-underlying-type))
-               (clsql-base-sys::in test :fddl/view/1 :fddl/view/2 :fddl/view/3 :fddl/view/4))
+               (clsql-base::in test :fddl/view/1 :fddl/view/2 :fddl/view/3 :fddl/view/4))
           (push (cons test "views not supported") skip-tests))
          ((and (null (db-type-has-boolean-where? db-underlying-type))
-               (clsql-base-sys::in test :fdml/select/11 :oodml/select/5))
+               (clsql-base::in test :fdml/select/11 :oodml/select/5))
           (push (cons test "boolean where not supported") skip-tests))
          ((and (null (db-type-has-subqueries? db-underlying-type))
-               (clsql-base-sys::in test :fdml/select/5 :fdml/select/10))
+               (clsql-base::in test :fdml/select/5 :fdml/select/10))
           (push (cons test "subqueries not supported") skip-tests))
          ((and (null (db-type-transaction-capable? db-underlying-type
                                                    *default-database*))
-               (clsql-base-sys::in test :fdml/transaction/1 :fdml/transaction/2 :fdml/transaction/3 :fdml/transaction/4))
+               (clsql-base::in test :fdml/transaction/1 :fdml/transaction/2 :fdml/transaction/3 :fdml/transaction/4))
           (push (cons test "transactions not supported") skip-tests))
          ((and (null (db-type-has-fancy-math? db-underlying-type))
-               (clsql-base-sys::in test :fdml/select/1))
+               (clsql-base::in test :fdml/select/1))
           (push (cons test "fancy math not supported") skip-tests))
          ((and (eql *test-database-type* :sqlite)
-               (clsql-base-sys::in test :fddl/view/4 :fdml/select/10))
+               (clsql-base::in test :fddl/view/4 :fdml/select/10))
           (push (cons test "not supported by sqlite") skip-tests))
          (t
           (push test-form test-forms)))))