summaryrefslogtreecommitdiff
path: root/tests/ds-nodes.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ds-nodes.lisp')
-rw-r--r--tests/ds-nodes.lisp118
1 files changed, 118 insertions, 0 deletions
diff --git a/tests/ds-nodes.lisp b/tests/ds-nodes.lisp
new file mode 100644
index 0000000..098c742
--- /dev/null
+++ b/tests/ds-nodes.lisp
@@ -0,0 +1,118 @@
+(in-package #:clsql-tests)
+
+(clsql-sys:file-enable-sql-reader-syntax)
+
+(defparameter basenode nil)
+(defparameter derivednode1 nil)
+(defparameter derivednode2 nil)
+(defparameter node nil)
+(defparameter setting1 nil)
+(defparameter setting2 nil)
+(defparameter user1 nil)
+(defparameter user2 nil)
+(defparameter theme1 nil)
+(defparameter theme2 nil)
+(defparameter loc1 nil)
+(defparameter loc2 nil)
+(defparameter subloc1 nil)
+(defparameter subloc2 nil)
+
+
+;; classes for testing the normalizedp stuff
+(def-view-class node ()
+ ((node-id :accessor node-id :initarg :node-id
+ :type integer :db-kind :key
+ :db-constraints (:not-null :auto-increment))
+ (title :accessor title :initarg :title :type (varchar 240))
+ (createtime :accessor createtime :initarg :createtime :type wall-time
+ :db-constraints (:not-null) :initform (get-time))
+ (modifiedtime :accessor modifiedtime :initarg :modifiedtime :type wall-time
+ :initform (make-time :year 1900 :month 1 :day 1))))
+
+(def-view-class setting (node)
+ ((setting-id :accessor setting-id :initarg :setting-id
+ :type integer :db-kind :key :db-constraints (:not-null ))
+ (vars :accessor vars :initarg :vars :type (varchar 240)))
+ (:normalizedp t))
+
+(def-view-class user (node)
+ ((user-id :accessor user-id :initarg :user-id
+ :type integer :db-kind :key :db-constraints (:not-null ))
+ (nick :accessor nick :initarg :nick :type (varchar 64)))
+ (:base-table "nodeuser")
+ (:normalizedp t))
+
+(def-view-class theme (setting)
+ ((theme-id :accessor theme-id :initarg :theme-id
+ :type integer :db-kind :key :db-constraints (:not-null ))
+ (doc :accessor doc :initarg :doc :type (varchar 240)))
+ (:normalizedp t))
+
+;; A class that uses only a superclass db table
+(def-view-class location (node)
+ ()
+ (:base-table node)
+ (:normalizedp t))
+
+(def-view-class subloc (location)
+ ((subloc-id :accessor subloc-id :initarg :subloc-id
+ :type integer :db-kind :key :db-constraints (:not-null ))
+ (loc :accessor loc :initarg :loc :type (varchar 64)))
+ (:normalizedp t))
+
+
+
+(defun initialize-ds-nodes ()
+ ;; (start-sql-recording :type :both)
+ (mapc #'clsql:create-view-from-class
+ '(node setting user theme location subloc))
+
+ (setq *test-start-utime* (get-universal-time))
+ (let* ((*db-auto-sync* t))
+ (setf node (make-instance 'node
+ :title "Bare node")
+ setting1 (make-instance 'setting
+ :title "Setting1"
+ :vars "var 1")
+ setting2 (make-instance 'setting
+ :title "Setting2"
+ :vars "var 2")
+ user1 (make-instance 'user
+ :title "user-1"
+ :nick "first user")
+ user2 (make-instance 'user
+ :title "user-2"
+ :nick "second user")
+ theme1 (make-instance 'theme
+ :title "theme-1"
+ :vars "empty"
+ :doc "first theme")
+ theme2 (make-instance 'theme
+ :title "theme-2"
+ :doc "second theme")
+ loc1 (make-instance 'location
+ :title "location-1")
+ loc2 (make-instance 'location
+ :title "location-2")
+ subloc1 (make-instance 'subloc
+ :title "subloc-1"
+ :loc "a subloc")
+ subloc2 (make-instance 'subloc
+ :title "subloc-2"
+ :loc "second subloc"))))
+
+
+
+
+ (def-dataset *ds-nodes*
+ (:setup initialize-ds-nodes)
+ (:cleanup (lambda ()
+ (mapc #'clsql-sys:drop-view-from-class
+ '(node setting user theme location subloc))
+ (ignore-errors
+ (clsql-sys:execute-command "DROP TABLE nodeuser")
+ (mapc #'clsql-sys:drop-sequence
+ '(node_node_id_seq setting_setting_id_seq subloc_subloc_id_seq
+ theme_theme_id_seq nodeuser_user_id_seq)
+ )))))
+