branch: elpa/emacsql
commit f52af86b058f68de86834cd2e239b9cdc1d39826
Author: Christopher Wellons <[email protected]>
Commit: Christopher Wellons <[email protected]>
Break apart and organize compilation tests.
---
emacsql-tests.el | 69 ++++++++++++++++++++++++++++++++++++--------------------
1 file changed, 45 insertions(+), 24 deletions(-)
diff --git a/emacsql-tests.el b/emacsql-tests.el
index 867678aef9..eb5fcc880c 100644
--- a/emacsql-tests.el
+++ b/emacsql-tests.el
@@ -54,32 +54,53 @@
(should (string= (apply #'emacsql-format (emacsql-expand query) args)
result)))
-(ert-deftest emacsql-expand ()
- (emacsql-tests-query [:select [$1 name] :from $2] '(id people)
- "SELECT id, name FROM people;")
- (emacsql-tests-query [:select * :from employees] ()
- "SELECT * FROM employees;")
- (emacsql-tests-query [:select * :from employees :where (< salary 50000)] ()
- "SELECT * FROM employees WHERE salary < 50000;")
- (emacsql-tests-query [:create-table foo [a b c]] ()
- "CREATE TABLE foo (a, b, c);")
- (emacsql-tests-query [:drop-table $1] '(foo)
- "DROP TABLE foo;")
- (emacsql-tests-query [:update people :set (= id $1)] '(10)
- "UPDATE people SET id = 10;")
- (emacsql-tests-query [:select * :from people :where (in name $1)] '([FOO
BAR])
- "SELECT * FROM people WHERE name IN ('FOO', 'BAR');")
- (emacsql-tests-query [:insert :into foo :values [nil $1]] '(10.1)
- "INSERT INTO foo VALUES (NULL, 10.1);")
- (emacsql-tests-query [:create-table (:temporary :if-not-exists x) [y]] '()
- "CREATE TEMPORARY TABLE IF NOT EXISTS x (y);"))
+(defmacro emacsql-tests-with-queries (&rest queries)
+ "Thread `emacsql-tests-query' through QUERIES."
+ (declare (indent 0))
+ (cons 'progn (mapcar (lambda (q) (cons 'emacsql-tests-query q)) queries)))
+
+(ert-deftest emacsql-select ()
+ (emacsql-tests-with-queries
+ ([:select [$1 name] :from $2] '(id people)
+ "SELECT id, name FROM people;")
+ ([:select * :from employees] '()
+ "SELECT * FROM employees;")
+ ([:select * :from employees :where (< salary 50000)] '()
+ "SELECT * FROM employees WHERE salary < 50000;")
+ ([:select * :from people :where (in name $1)] '([FOO BAR])
+ "SELECT * FROM people WHERE name IN ('FOO', 'BAR');")))
+
+(ert-deftest emacsql-create-table ()
+ (emacsql-tests-with-queries
+ ([:create-table foo [a b c]] ()
+ "CREATE TABLE foo (a, b, c);")
+ ([:create-table (:temporary :if-not-exists x) [y]] '()
+ "CREATE TEMPORARY TABLE IF NOT EXISTS x (y);")
+ ([:drop-table $1] '(foo)
+ "DROP TABLE foo;")))
+
+(ert-deftest emacsql-update ()
+ (emacsql-tests-with-queries
+ ([:update people :set (= id $1)] '(10)
+ "UPDATE people SET id = 10;")))
+
+(ert-deftest emacsql-insert ()
+ (emacsql-tests-with-queries
+ ([:insert :into foo :values [nil $1]] '(10.1)
+ "INSERT INTO foo VALUES (NULL, 10.1);")
+ ([:replace :into $1 :values $2] '(bar ([1 2] [3 4]))
+ "REPLACE INTO bar VALUES (1, 2), (3, 4);")))
(ert-deftest emacsql-order-by ()
- (emacsql-tests-query [:order-by foo] '() "ORDER BY foo;")
- (emacsql-tests-query [:order-by [$1]] '(bar) "ORDER BY bar;")
- (emacsql-tests-query [:order-by (- foo)] '() "ORDER BY -(foo);")
- (emacsql-tests-query [:order-by [(a :asc) ((/ b 2) :desc)]] '()
- "ORDER BY a ASC, b / 2 DESC;"))
+ (emacsql-tests-with-queries
+ ([:order-by foo] '()
+ "ORDER BY foo;")
+ ([:order-by [$1]] '(bar)
+ "ORDER BY bar;")
+ ([:order-by (- foo)] '()
+ "ORDER BY -(foo);")
+ ([:order-by [(a :asc) ((/ b 2) :desc)]] '()
+ "ORDER BY a ASC, b / 2 DESC;")))
(ert-deftest emacsql-system ()
(should-not (emacsql-sqlite3-unavailable-p))