· 8 years ago · Feb 18, 2018, 11:38 PM
1(in-package :sql)
2
3(defclass test-result-set (test-suite)
4 ())
5
6(defmethod test-class-prologue ((self test-result-set))
7 (let ((datasource (make-instance 'postgresql-datasource
8 :database (sql-tests:db-name)
9 :user (sql-tests:db-user))))
10 (setf *default-database* (get-connection datasource))))
11
12(defparameter *result-set* nil)
13
14(defmethod test-prologue ((self test-result-set))
15 (execute-command "DROP TABLE IF EXISTS finches;")
16 (execute-command "CREATE TABLE finches (id serial PRIMARY KEY, name varchar(30) UNIQUE NOT NULL);")
17 (execute-command "INSERT INTO finches (name) values ('green'), ('gray');")
18 (setf *result-set* (db-execute-query *default-database* "SELECT * FROM finches order by id;")))
19
20(defmethod test-epilogue ((self test-result-set))
21 (execute-command "DROP TABLE finches;"))
22
23(define-test (self test-result-set) "get-all-rows-returns-nil"
24 (test-assert (eql nil (get-all-rows (db-execute-query *default-database* "SELECT * FROM finches WHERE name IS NULL;")))))
25
26(define-test (self test-result-set) "get-all-rows-returns-list"
27 (test-assert (= 2 (length (get-all-rows *result-set*)))))
28
29(define-test (self test-result-set) "get-next-row-returns-nil"
30 (test-assert (eql nil (get-next-row (db-execute-query *default-database* "SELECT * FROM finches WHERE name IS NULL;")))))
31
32(define-test (self test-result-set) "get-next-row-return-first-row"
33 (test-assert (equal '(1 "green") (get-next-row *result-set*))))
34
35(define-test (self test-result-set) "get-next-row-return-second-row"
36 (get-next-row *result-set*)
37 (test-assert (equal '(2 "gray") (get-next-row *result-set*))))
38
39(define-test (self test-result-set) "get-next-row-returns-nil-after-returning-all-rows"
40 (get-next-row *result-set*)
41 (test-assert (equal '(2 "gray") (get-next-row *result-set*))))