+ (deftest :oodml/update-records/4
+ (values
+ (progn
+ (let ((base (car (clsql:select 'node
+ :where [= [slot-value 'node 'node-id]
+ 1]
+ :flatp t
+ :caching nil))))
+ (with-output-to-string (out)
+ (format out "~a ~a"
+ (slot-value base 'node-id)
+ (slot-value base 'title)))))
+ (progn
+ (let ((base (car (clsql:select 'node
+ :where [= [slot-value 'node 'node-id]
+ 1]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value base 'title) "Altered title")
+ (clsql:update-records-from-instance base)
+ (with-output-to-string (out)
+ (format out "~a ~a"
+ (slot-value base 'node-id)
+ (slot-value base 'title)))))
+ (progn
+ (let ((base (car (clsql:select 'node
+ :where [= [slot-value 'node 'node-id]
+ 1]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value base 'title) "Bare node")
+ (clsql:update-records-from-instance base)
+ (with-output-to-string (out)
+ (format out "~a ~a"
+ (slot-value base 'node-id)
+ (slot-value base 'title))))))
+ "1 Bare node"
+ "1 Altered title"
+ "1 Bare node")
+
+ (deftest :oodml/update-records/5
+ (values
+ (progn
+ (let ((node (car (clsql:select 'setting
+ :where [= [slot-value 'setting 'setting-id]
+ 3]
+ :flatp t
+ :caching nil))))
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'setting-id)
+ (slot-value node 'title)
+ (slot-value node 'vars)))))
+ (progn
+ (let ((node (car (clsql:select 'setting
+ :where [= [slot-value 'setting 'setting-id]
+ 3]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value node 'title) "Altered title")
+ (setf (slot-value node 'vars) "Altered vars")
+ (clsql:update-records-from-instance node)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'setting-id)
+ (slot-value node 'title)
+ (slot-value node 'vars)))))
+ (progn
+ (let ((node (car (clsql:select 'setting
+ :where [= [slot-value 'setting 'setting-id]
+ 3]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value node 'title) "Setting2")
+ (setf (slot-value node 'vars) "var 2")
+ (clsql:update-records-from-instance node)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'setting-id)
+ (slot-value node 'title)
+ (slot-value node 'vars))))))
+ "3 Setting2 var 2"
+ "3 Altered title Altered vars"
+ "3 Setting2 var 2")
+
+ (deftest :oodml/update-records/6
+ (values
+ (progn
+ (let ((node (car (clsql:select 'setting
+ :where [= [slot-value 'setting 'setting-id]
+ 7]
+ :flatp t
+ :caching nil))))
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'setting-id)
+ (slot-value node 'title)
+ (slot-value node 'vars)))))
+ (progn
+ (let ((node (car (clsql:select 'setting
+ :where [= [slot-value 'setting 'setting-id]
+ 7]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value node 'title) "Altered title")
+ (setf (slot-value node 'vars) "Altered vars")
+ (clsql:update-records-from-instance node)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'setting-id)
+ (slot-value node 'title)
+ (slot-value node 'vars)))))
+ (progn
+ (let ((node (car (clsql:select 'setting
+ :where [= [slot-value 'setting 'setting-id]
+ 7]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value node 'title) "theme-2")
+ (setf (slot-value node 'vars) nil)
+ (clsql:update-records-from-instance node)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'setting-id)
+ (slot-value node 'title)
+ (slot-value node 'vars))))))
+ "7 theme-2 NIL"
+ "7 Altered title Altered vars"
+ "7 theme-2 NIL")
+
+ (deftest :oodml/update-records/7
+ (values
+ (progn
+ (let ((node (car (clsql:select 'user
+ :where [= [slot-value 'user 'user-id]
+ 5]
+ :flatp t
+ :caching nil))))
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'user-id)
+ (slot-value node 'title)
+ (slot-value node 'nick)))))
+ (progn
+ (let ((node (car (clsql:select 'user
+ :where [= [slot-value 'user 'user-id]
+ 5]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value node 'title) "Altered title")
+ (setf (slot-value node 'nick) "Altered nick")
+ (clsql:update-records-from-instance node)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'user-id)
+ (slot-value node 'title)
+ (slot-value node 'nick)))))
+ (progn
+ (let ((node (car (clsql:select 'user
+ :where [= [slot-value 'user 'user-id]
+ 5]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value node 'title) "user-2")
+ (setf (slot-value node 'nick) "second user")
+ (clsql:update-records-from-instance node)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'user-id)
+ (slot-value node 'title)
+ (slot-value node 'nick))))))
+ "5 user-2 second user"
+ "5 Altered title Altered nick"
+ "5 user-2 second user")
+
+ (deftest :oodml/update-records/8
+ (values
+ (progn
+ (let ((node (car (clsql:select 'theme
+ :where [= [slot-value 'theme 'theme-id]
+ 6]
+ :flatp t
+ :caching nil))))
+ (with-output-to-string (out)
+ (format out "~a ~a ~a ~a ~a ~a"
+ (slot-value node 'node-id)
+ (slot-value node 'setting-id)
+ (slot-value node 'theme-id)
+ (slot-value node 'title)
+ (slot-value node 'vars)
+ (slot-value node 'doc)))))
+ (progn
+ (let ((node (car (clsql:select 'setting
+ :where [= [slot-value 'setting 'setting-id]
+ 6]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value node 'title) "Altered title")
+ (setf (slot-value node 'vars) nil)
+ (clsql:update-records-from-instance node)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value node 'setting-id)
+ (slot-value node 'title)
+ (slot-value node 'vars)))))
+ (progn
+ (let ((node (car (clsql:select 'theme
+ :where [= [slot-value 'theme 'theme-id]
+ 6]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value node 'title) "Altered title again")
+ (setf (slot-value node 'doc) "altered doc")
+ (clsql:update-records-from-instance node)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a ~a ~a ~a"
+ (slot-value node 'node-id)
+ (slot-value node 'setting-id)
+ (slot-value node 'theme-id)
+ (slot-value node 'title)
+ (slot-value node 'vars)
+ (slot-value node 'doc)))))
+ (progn
+ (let ((node (car (clsql:select 'theme
+ :where [= [slot-value 'theme 'theme-id]
+ 6]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value node 'title) "theme-1")
+ (setf (slot-value node 'vars) "empty")
+ (setf (slot-value node 'doc) "first theme")
+ (clsql:update-records-from-instance node)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a ~a ~a ~a"
+ (slot-value node 'node-id)
+ (slot-value node 'setting-id)
+ (slot-value node 'theme-id)
+ (slot-value node 'title)
+ (slot-value node 'vars)
+ (slot-value node 'doc))))))
+ "6 6 6 theme-1 empty first theme"
+ "6 Altered title NIL"
+ "6 6 6 Altered title again NIL altered doc"
+ "6 6 6 theme-1 empty first theme")
+
+ (deftest :oodml/update-records/9
+ (values
+ (progn
+ (let ((sl (car (clsql:select 'subloc
+ :where [= [slot-value 'subloc 'subloc-id]
+ 10]
+ :flatp t
+ :caching nil))))
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value sl 'subloc-id)
+ (slot-value sl 'title)
+ (slot-value sl 'loc)))))
+ (progn
+ (let ((sl (car (clsql:select 'subloc
+ :where [= [slot-value 'subloc 'subloc-id]
+ 10]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value sl 'title) "Altered subloc title")
+ (setf (slot-value sl 'loc) "Altered loc")
+ (clsql:update-records-from-instance sl)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value sl 'subloc-id)
+ (slot-value sl 'title)
+ (slot-value sl 'loc)))))
+ (progn
+ (let ((sl (car (clsql:select 'subloc
+ :where [= [slot-value 'subloc 'subloc-id]
+ 10]
+ :flatp t
+ :caching nil))))
+ (setf (slot-value sl 'title) "subloc-1")
+ (setf (slot-value sl 'loc) "a subloc")
+ (clsql:update-records-from-instance sl)
+ (with-output-to-string (out)
+ (format out "~a ~a ~a"
+ (slot-value sl 'subloc-id)
+ (slot-value sl 'title)
+ (slot-value sl 'loc))))))
+ "10 subloc-1 a subloc"
+ "10 Altered subloc title Altered loc"
+ "10 subloc-1 a subloc")
+