Refactored find-all and build-object to be more readable, shorter and
[clsql.git] / tests / test-oodml.lisp
index 2fed92172ac1dd7f8f0eabf17ba531e1fbabe8f1..4848075cf30e5bded8a72e3e2c6f80686dcaf6c7 100644 (file)
@@ -15,7 +15,8 @@
 
 (in-package #:clsql-tests)
 
-#.(clsql:locally-enable-sql-reader-syntax)
+(clsql-sys:file-enable-sql-reader-syntax)
+
 
 (setq *rt-oodml*
       '(
 ;; test retrieval of node, derived nodes etc
 (deftest :oodml/select/12
     (with-dataset *ds-nodes*
-      (length (clsql:select 'node :where [node-id] :flatp t :caching nil)))
+      (length (clsql:select 'node :where [not [null [node-id]]] :flatp t :caching nil)))
   11)
 
 (deftest :oodml/select/13
 
 (deftest :oodml/select/14
     (with-dataset *ds-nodes*
-      (length (clsql:select 'setting :where [setting-id] :flatp t :caching nil)))
+      (length (clsql:select 'setting :where [not [null [setting-id]]] :flatp t :caching nil)))
   4)
 
 (deftest :oodml/select/15
 
 (deftest :oodml/select/16
     (with-dataset *ds-nodes*
-      (length (clsql:select 'user :where [user-id] :flatp t :caching nil)))
+      (length (clsql:select 'user :where [not [null [user-id]]] :flatp t :caching nil)))
   2)
 
 (deftest :oodml/select/17
 
 (deftest :oodml/select/18
     (with-dataset *ds-nodes*
-      (length (clsql:select 'theme :where [theme-id] :flatp t :caching nil)))
+      (length (clsql:select 'theme :where [not [null [theme-id]]] :flatp t :caching nil)))
   2)
 
 (deftest :oodml/select/19
 
 (deftest :oodml/select/22
     (with-dataset *ds-nodes*
-      (let ((a (car (clsql:select 'subloc :where [subloc-id] :flatp t :caching nil))))
+      (let ((a (car (clsql:select 'subloc :where [not [null [subloc-id]]] :flatp t :caching nil))))
        (values
          (slot-value a 'node-id)
          (slot-value a 'subloc-id)
          (slot-value a 'loc))))
   10 10 "subloc-1" "a subloc")
 
+(deftest :oodml/select/23
+    (with-dataset *ds-artists*
+      (length (clsql:select 'artist :flatp t :caching nil)))
+  0)
+
+
+
 ;; test retrieval is deferred
 (deftest :oodm/retrieval/1
     (with-dataset *ds-employees*
 ;; tests update-record-from-slot
 (deftest :oodml/update-records/2
     (with-dataset *ds-employees*
+      ;(start-sql-recording :type :both)
       (values
        (employee-email
         (car (clsql:select 'employee
                            :where [= 1 [slot-value 'employee 'emplid]]
                            :flatp t
                            :caching nil)))
-       (progn
-         (setf (slot-value employee1 'email) "lenin-nospam@soviet.org")
-         (clsql:update-record-from-slot employee1 'email)
+       (progn
+         (setf (slot-value employee1 'email) "lenin-nospam@soviet.org")
+         (clsql:update-record-from-slot employee1 'email)
          (employee-email
           (car (clsql:select 'employee
                              :where [= 1 [slot-value 'employee 'emplid]]
               (let ((sl (car (clsql:select 'subloc
                                            :where [= 10 [slot-value 'subloc 'subloc-id]]
                                            :flatp t :caching nil))))
+                (unless sl
+                  (error "Couldn't find expected sublocation"))
                 (format nil "~a ~a ~a"
                         (slot-value sl 'subloc-id)
                         (slot-value sl 'title)
               (let ((sl (car (clsql:select 'subloc
                                            :where [= 10 [slot-value 'subloc 'subloc-id]]
                                            :flatp t :caching nil))))
+                (unless sl
+                  (error "In psfl: found no sublocation with id = 10"))
                 (format nil "~a ~a ~a"
                         (slot-value sl 'subloc-id)
                         (slot-value sl 'title)
          (let ((sl (car (clsql:select 'subloc
                                       :where [= 10 [slot-value 'subloc 'subloc-id]]
                                       :flatp t :caching nil))))
+           (unless sl
+             (error "Select for modification: Found no sublocation with id = 10"))
            (setf (slot-value sl 'title) "Altered subloc title")
            (setf (slot-value sl 'loc) "Altered loc")
            (clsql:update-record-from-slot sl 'title)
          (let ((sl (car (clsql:select 'subloc
                                       :where [= 10 [slot-value 'subloc 'subloc-id]]
                                       :flatp t :caching nil))))
+           (unless sl
+             (error "Select for next modification: Found no sublocation with id = 10"))
            (setf (slot-value sl 'title) "subloc-1")
            (setf (slot-value sl 'loc) "a subloc")
-           (clsql:update-record-from-slot sl '(title loc))
+           (clsql:update-record-from-slots sl '(title loc))
            (print-fresh-subloc)))))
   "10 subloc-1 a subloc"
   "10 Altered subloc title Altered loc"
   ((42.0d0))
   ((24.13d0)))
 
+(deftest :oodml/update-records/11
+    (with-dataset *ds-artists*
+      (clsql:update-records-from-instance artist1)
+      (list (name artist1) (artist_id artist1)))
+  ("Mogwai" 1))
+
+(deftest :oodml/update-records/12
+    (with-dataset *ds-artists*
+      (clsql:update-records-from-instance artist1)
+      (list (name artist1) (genre artist1)))
+  ("Mogwai" "Unknown"))
 
 ;; tests update-instance-from-records
 (deftest :oodml/update-instance/1
       (values
        (let ((inst (make-instance 'theme
                                   :title "test-theme" :vars "test-vars"
-                                  :doc "test-doc")))
+                                  :doc "test-doc"))
+              (*print-circle* nil))
          (setf (slot-value inst 'title) "alternate-test-theme")
          (format nil "~a ~a ~a ~a"
                  (or (select [title] :from [node]
   t)
 ))
 
-
-
-#.(clsql:restore-sql-reader-syntax-state)