Skip to content

Commit f69f4f7

Browse files
committed
Added tests for Query class
1 parent cad2810 commit f69f4f7

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.odk.collect.db.sqlite
2+
3+
import org.hamcrest.CoreMatchers.equalTo
4+
import org.hamcrest.MatcherAssert.assertThat
5+
import org.junit.Test
6+
7+
class QueryTest {
8+
@Test
9+
fun `Eq query generates correct selection and arguments`() {
10+
val query = Query.Eq("name", "John")
11+
12+
assertThat(query.selection, equalTo("name = ?"))
13+
assertThat(query.selectionArgs, equalTo(arrayOf("John")))
14+
}
15+
16+
@Test
17+
fun `NotEq query generates correct selection and arguments`() {
18+
val query = Query.NotEq("age", "30")
19+
20+
assertThat(query.selection, equalTo("age != ?"))
21+
assertThat(query.selectionArgs, equalTo(arrayOf("30")))
22+
}
23+
24+
@Test
25+
fun `And query generates correct selection and arguments`() {
26+
val queryA = Query.Eq("name", "John")
27+
val queryB = Query.NotEq("age", "30")
28+
val combinedQuery = Query.And(queryA, queryB)
29+
30+
assertThat(combinedQuery.selection, equalTo("(name = ? AND age != ?)"))
31+
assertThat(combinedQuery.selectionArgs, equalTo(arrayOf("John", "30")))
32+
}
33+
34+
@Test
35+
fun `Or query generates correct selection and arguments`() {
36+
val queryA = Query.Eq("city", "New York")
37+
val queryB = Query.NotEq("country", "Canada")
38+
val combinedQuery = Query.Or(queryA, queryB)
39+
40+
assertThat(combinedQuery.selection, equalTo("(city = ? OR country != ?)"))
41+
assertThat(combinedQuery.selectionArgs, equalTo(arrayOf("New York", "Canada")))
42+
}
43+
44+
@Test
45+
fun `nested And and Or queries generates correct selection and arguments`() {
46+
val queryA = Query.Eq("status", "active")
47+
val queryB = Query.NotEq("role", "admin")
48+
val queryC = Query.Eq("team", "engineering")
49+
50+
val combinedQuery = Query.And(Query.Or(queryA, queryB), queryC)
51+
52+
assertThat(combinedQuery.selection, equalTo("((status = ? OR role != ?) AND team = ?)"))
53+
assertThat(combinedQuery.selectionArgs, equalTo(arrayOf("active", "admin", "engineering")))
54+
}
55+
}

0 commit comments

Comments
 (0)