aboutsummaryrefslogtreecommitdiff
path: root/tests/test
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-06-11 20:30:54 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2022-06-11 23:50:35 +0200
commitcfde8025c75949b6e0491596b23ec53beed84a71 (patch)
treef49d087ef288d3aed36f05fc5a3d37654d8f7022 /tests/test
parentRewrote rrule-instances to handle RDATE and EXDATE correctly. (diff)
downloadcalp-cfde8025c75949b6e0491596b23ec53beed84a71.tar.gz
calp-cfde8025c75949b6e0491596b23ec53beed84a71.tar.xz
Add tests for web-query.
Diffstat (limited to 'tests/test')
-rw-r--r--tests/test/web-query.scm38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/test/web-query.scm b/tests/test/web-query.scm
new file mode 100644
index 00000000..76c0a76d
--- /dev/null
+++ b/tests/test/web-query.scm
@@ -0,0 +1,38 @@
+(define-module (test web-query)
+ :use-module (srfi srfi-64)
+ :use-module (srfi srfi-88)
+ :use-module ((web query) :select (parse-query)))
+
+(test-begin "Web Query")
+
+(test-equal "Empty query gives empty assoc list"
+ '() (parse-query ""))
+(test-equal "Simple key-value query"
+ '(key: "value") (parse-query "key=value"))
+
+;; Slightly cumbersome check, since keys aren't ordered
+(test-group
+ "Simple key-value query, with multiple keys"
+ (let ((kv-list (parse-query "k1=value&k2=1")))
+ (test-equal "value" (and=> (memv k1: kv-list) cadr))
+ (test-equal "1" (and=> (memv k2: kv-list) cadr))))
+
+(test-equal "Values are HTTP-decoded"
+ '(key: " ") (parse-query "key=%20"))
+(test-equal "Keys are HTTP-decoded"
+ '(A: "test") (parse-query "%41=test"))
+
+(test-equal "Query with only key, value becomes key"
+ '(key: "key") (parse-query "key"))
+
+(test-group
+ "Some with only key"
+ (let ((kv-list (parse-query "k1&k2=10")))
+ (test-equal "k1" (and=> (memv k1: kv-list) cadr))
+ (test-equal "10" (and=> (memv k2: kv-list) cadr))))
+
+;; I don't know if HTTP allows this, but my code works like this
+(test-equal "Value with equal in it"
+ '(key: "=") (parse-query "key=="))
+
+(test-end "Web Query")