Skip to content

Commit 4480e43

Browse files
committed
added test case for select without fields and select with condition
1 parent ff29ea1 commit 4480e43

File tree

4 files changed

+51
-8
lines changed

4 files changed

+51
-8
lines changed

src/test/scala/io/vertx/asyncsql/test/BaseSqlTests.scala

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ trait BaseSqlTests { this: SqlTestVerticle =>
2929

3030
def simpleConnection(): Unit = asyncTest {
3131
expectOk(raw("SELECT 0")) map { reply =>
32-
assertEquals(1, reply.getNumber("rows"))
3332
val res = reply.getArray("results")
3433
assertEquals(1, res.size())
3534
assertEquals(0, res.get[JsonArray](0).get[Int](0))
@@ -38,7 +37,6 @@ trait BaseSqlTests { this: SqlTestVerticle =>
3837

3938
def multipleFields(): Unit = asyncTest {
4039
expectOk(raw("SELECT 1, 0")) map { reply =>
41-
assertEquals(1, reply.getNumber("rows"))
4240
val res = reply.getArray("results")
4341
assertEquals(1, res.size())
4442
val firstElem = res.get[JsonArray](0)
@@ -75,10 +73,32 @@ trait BaseSqlTests { this: SqlTestVerticle =>
7573
}
7674
}
7775

76+
def selectWithoutFields(): Unit = typeTestInsert {
77+
expectOk(select("some_test")) map { reply =>
78+
val receivedFields = reply.getArray("fields")
79+
def assertFieldName(field: String) = {
80+
assertTrue("fields should contain '" + field + "'", receivedFields.contains(field))
81+
}
82+
assertFieldName("id")
83+
assertFieldName("name")
84+
assertFieldName("email")
85+
assertFieldName("is_male")
86+
assertFieldName("age")
87+
assertFieldName("money")
88+
assertFieldName("wedding_date")
89+
90+
val mrTest = reply.getArray("results").get[JsonArray](0)
91+
assertTrue(mrTest.contains("Mr. Test"))
92+
assertTrue(mrTest.contains("test@example.com"))
93+
assertTrue(mrTest.contains(true))
94+
assertTrue(mrTest.contains(15))
95+
assertTrue(mrTest.contains(167.31))
96+
}
97+
}
98+
7899
def selectEverything(): Unit = typeTestInsert {
79100
val fieldsArray = new JsonArray("""["name","email","is_male","age","money","wedding_date"]""")
80101
expectOk(select("some_test", fieldsArray)) map { reply =>
81-
logger.info("reply: " + reply.encode())
82102
val receivedFields = reply.getArray("fields")
83103
assertEquals(fieldsArray, receivedFields)
84104
val results = reply.getArray("results")
@@ -118,7 +138,8 @@ trait BaseSqlTests { this: SqlTestVerticle =>
118138
val fieldsArray = new JsonArray("""["name","email"]""")
119139
expectOk(select("some_test", fieldsArray)) map { reply =>
120140
val receivedFields = reply.getArray("fields")
121-
assertEquals(fieldsArray, receivedFields)
141+
assertTrue("arrays " + fieldsArray.encode() + " and " + receivedFields.encode() +
142+
" should match", fieldsArray == receivedFields)
122143
assertEquals(2, reply.getInteger("rows"))
123144
val results = reply.getArray("results")
124145
val mrOrMrs = results.get[JsonArray](0)
@@ -151,7 +172,17 @@ trait BaseSqlTests { this: SqlTestVerticle =>
151172
// }
152173
// }))
153174

154-
def selectWithCondition(): Unit = fail("not implemented")
175+
def selectWithCondition(): Unit = typeTestInsert {
176+
expectOk(select("some_test", List("email"),
177+
Json.obj("$and" -> Json.arr(List(
178+
Json.obj("$eq" -> Json.obj("is_male" -> "true")),
179+
Json.obj("$gt" -> Json.obj("age" -> 14))))))) map { reply =>
180+
val results = reply.getArray("results")
181+
assertEquals(1, results.size())
182+
assertEquals("test@example.com", results.get[JsonArray](0).get[String](0))
183+
}
184+
}
185+
155186
def updateWithoutCondition(): Unit = fail("not implemented")
156187
def updateWithCondition(): Unit = fail("not implemented")
157188
def preparedSelect(): Unit = typeTestInsert {

src/test/scala/io/vertx/asyncsql/test/SqlTestVerticle.scala

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,15 @@ abstract class SqlTestVerticle extends org.vertx.testtools.TestVerticle with Bas
4747
protected def insert(table: String, fields: JsonArray, values: JsonArray) =
4848
Json.obj("action" -> "insert", "table" -> table, "fields" -> fields, "values" -> values)
4949

50-
protected def select(table: String, fields: JsonArray) = Json.obj("action" -> "select", "table" -> table, "fields" -> fields)
50+
protected def select(table: String, fields: JsonArray): JsonObject = select(table, Some(fields))
51+
protected def select(table: String, fields: JsonArray, conditions: JsonObject): JsonObject = select(table, Some(fields), Some(conditions))
52+
53+
protected def select(table: String, fields: Option[JsonArray] = None, conditions: Option[JsonObject] = None): JsonObject = {
54+
val js = Json.obj("action" -> "select", "table" -> table)
55+
fields.map(js.putArray("fields", _))
56+
conditions.map(js.putObject("conditions", _))
57+
js
58+
}
5159

5260
protected def prepared(statement: String, values: JsonArray) = Json.obj("action" -> "prepared", "statement" -> statement, "values" -> values)
5361

@@ -61,7 +69,7 @@ abstract class SqlTestVerticle extends org.vertx.testtools.TestVerticle with Bas
6169
}
6270

6371
protected def createTableStatement(tableName: String) = """
64-
CREATE TABLE """ + tableName + """ (
72+
CREATE TABLE IF NOT EXISTS """ + tableName + """ (
6573
id SERIAL,
6674
name VARCHAR(255),
6775
email VARCHAR(255) UNIQUE,

src/test/scala/io/vertx/asyncsql/test/mysql/MySqlTest.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class MySqlTest extends SqlTestVerticle with BaseSqlTests {
1313
override def getConfig = config
1414

1515
override def createTableStatement(tableName: String) = """
16-
CREATE TABLE """ + tableName + """ (
16+
CREATE TABLE IF NOT EXISTS """ + tableName + """ (
1717
id INT NOT NULL AUTO_INCREMENT,
1818
name VARCHAR(255),
1919
email VARCHAR(255) UNIQUE,
@@ -40,6 +40,8 @@ CREATE TABLE """ + tableName + """ (
4040
@Test
4141
override def insertMaliciousDataTest(): Unit = super.insertMaliciousDataTest()
4242
@Test
43+
override def selectWithoutFields(): Unit = super.selectWithoutFields()
44+
@Test
4345
override def selectEverything(): Unit = super.selectEverything()
4446
@Test
4547
override def selectFiltered(): Unit = super.selectFiltered()

src/test/scala/io/vertx/asyncsql/test/postgresql/PostgreSqlTest.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class PostgreSqlTest extends SqlTestVerticle with BaseSqlTests {
2727
@Test
2828
override def insertMaliciousDataTest(): Unit = super.insertMaliciousDataTest()
2929
@Test
30+
override def selectWithoutFields(): Unit = super.selectWithoutFields()
31+
@Test
3032
override def selectEverything(): Unit = super.selectEverything()
3133
@Test
3234
override def selectFiltered(): Unit = super.selectFiltered()

0 commit comments

Comments
 (0)