X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=tests%2Ftest-init.lisp;h=28ae58709f3d37628accf4ecd7040ec5f5ed8e88;hb=ec9b352b8205e4204a06797f98970b03cf532ab2;hp=6b8ddedc5c04eb6abd0799a46fc3a1e5fc708254;hpb=7cdc9aa48baa3c52923d61da6fa632eb47ac0b5d;p=clsql.git diff --git a/tests/test-init.lisp b/tests/test-init.lisp index 6b8dded..28ae587 100644 --- a/tests/test-init.lisp +++ b/tests/test-init.lisp @@ -34,24 +34,22 @@ ((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 @@ -90,12 +86,12 @@ (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) @@ -121,6 +117,29 @@ (: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) @@ -156,12 +175,19 @@ (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 @@ -258,8 +284,18 @@ :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) @@ -297,7 +333,9 @@ (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) @@ -405,23 +443,23 @@ (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)))))