@@ -14,8 +14,8 @@ trait BaseSqlTests { this: SqlTestVerticle =>
14
14
sth <- fn
15
15
_ <- dropTable(tableName)
16
16
} yield sth) recoverWith {
17
- case _ =>
18
- dropTable(tableName)
17
+ case x =>
18
+ dropTable(tableName) map (_ => throw x)
19
19
}
20
20
}
21
21
@@ -34,7 +34,7 @@ trait BaseSqlTests { this: SqlTestVerticle =>
34
34
expectOk(raw(" SELECT 0" )) map { reply =>
35
35
val res = reply.getArray(" results" )
36
36
assertEquals(1 , res.size())
37
- assertEquals(0 , res.get[JsonArray ](0 ).get[Int ](0 ))
37
+ assertEquals(0 , res.get[JsonArray ](0 ).get[Number ](0 ).intValue( ))
38
38
}
39
39
}
40
40
@@ -43,8 +43,8 @@ trait BaseSqlTests { this: SqlTestVerticle =>
43
43
val res = reply.getArray(" results" )
44
44
assertEquals(1 , res.size())
45
45
val firstElem = res.get[JsonArray ](0 )
46
- assertEquals(1 , firstElem.get[Integer ](0 ))
47
- assertEquals(0 , firstElem.get[Integer ](1 ))
46
+ assertEquals(1 , firstElem.get[Number ](0 ).intValue( ))
47
+ assertEquals(0 , firstElem.get[Number ](1 ).intValue( ))
48
48
}
49
49
}
50
50
@@ -54,21 +54,25 @@ trait BaseSqlTests { this: SqlTestVerticle =>
54
54
val receivedFields = reply.getArray(" fields" )
55
55
val results = reply.getArray(" results" ).get[JsonArray ](0 )
56
56
57
- assertEquals(1 , reply.getNumber (" rows" ))
57
+ assertEquals(1 , reply.getInteger (" rows" ))
58
58
59
59
val columnNamesList = receivedFields.asScala.toList
60
60
61
61
assertEquals(" Mr. Test" , results.get(columnNamesList.indexOf(" name" )))
62
62
assertEquals(" test@example.com" , results.get(columnNamesList.indexOf(" email" )))
63
- assertEquals(15 , results.get(columnNamesList.indexOf(" age" )))
64
- assertEquals(true , results.get(columnNamesList.indexOf(" is_male" )))
65
- assertEquals(167.31 , results.get(columnNamesList.indexOf(" money" )), 0.1 )
63
+ assertEquals(15 , results.get[Int ](columnNamesList.indexOf(" age" )))
64
+ assertTrue(results.get[Any ](columnNamesList.indexOf(" is_male" )) match {
65
+ case b : Boolean => b
66
+ case i : Number => i.intValue() == 1
67
+ case x => false
68
+ })
69
+ assertEquals(167.31 , results.get[Number ](columnNamesList.indexOf(" money" )).doubleValue(), 0.01 )
66
70
}
67
71
}
68
72
69
73
def createAndDropTable (): Unit = asyncTest {
70
74
createTable(" some_test" ) flatMap (_ => dropTable(" some_test" )) map { reply =>
71
- assertEquals(0 , reply.getNumber (" rows" ))
75
+ assertEquals(0 , reply.getInteger (" rows" ))
72
76
}
73
77
}
74
78
@@ -109,22 +113,21 @@ trait BaseSqlTests { this: SqlTestVerticle =>
109
113
assertFieldName(" age" )
110
114
assertFieldName(" money" )
111
115
assertFieldName(" wedding_date" )
116
+ val moneyField = receivedFields.toArray().indexOf(" money" )
112
117
113
118
val mrTest = reply.getArray(" results" ).get[JsonArray ](0 )
114
119
assertTrue(mrTest.contains(" Mr. Test" ))
115
120
assertTrue(mrTest.contains(" test@example.com" ))
116
121
assertTrue(mrTest.contains(true ) || mrTest.contains(1 ))
117
122
assertTrue(mrTest.contains(15 ))
118
- assertTrue( mrTest.contains( 167.31 ) )
123
+ assertEquals( 167.31 , mrTest.get[ Number ](moneyField).doubleValue(), 0.0001 )
119
124
}
120
125
}
121
126
122
127
def selectEverything (): Unit = typeTestInsert {
123
128
val fieldsArray = Json .arr(" name" , " email" , " is_male" , " age" , " money" , " wedding_date" )
124
129
expectOk(select(" some_test" , fieldsArray)) map { reply =>
125
130
val receivedFields = reply.getArray(" fields" )
126
- logger.info(" received: " + receivedFields.encode())
127
- logger.info(" fieldsAr: " + fieldsArray.encode())
128
131
checkSameFields(fieldsArray, receivedFields)
129
132
val results = reply.getArray(" results" )
130
133
val mrTest = results.get[JsonArray ](0 )
@@ -147,9 +150,13 @@ trait BaseSqlTests { this: SqlTestVerticle =>
147
150
private def checkMrTest (mrTest : JsonArray ) = {
148
151
assertEquals(" Mr. Test" , mrTest.get[String ](0 ))
149
152
assertEquals(" test@example.com" , mrTest.get[String ](1 ))
150
- assertTrue(mrTest.get[Boolean ](2 ) == true || mrTest.get[Integer ](2 ) == 1 )
151
- assertEquals(15 , mrTest.get[Integer ](3 ))
152
- assertEquals(167.31 , mrTest.get[Integer ](4 ))
153
+ assertTrue(mrTest.get[Any ](2 ) match {
154
+ case b : Boolean => b
155
+ case i : Number => i.intValue() == 1
156
+ case x => false
157
+ })
158
+ assertEquals(15 , mrTest.get[Number ](3 ).intValue())
159
+ assertEquals(167.31 , mrTest.get[Number ](4 ).doubleValue(), 0.0001 )
153
160
// FIXME check date conversion
154
161
// assertEquals("2024-04-01", mrTest.get[JsonObject](5))
155
162
}
@@ -158,8 +165,8 @@ trait BaseSqlTests { this: SqlTestVerticle =>
158
165
assertEquals(" Mrs. Test" , mrsTest.get[String ](0 ))
159
166
assertEquals(" test2@example.com" , mrsTest.get[String ](1 ))
160
167
assertEquals(false , mrsTest.get[Boolean ](2 ))
161
- assertEquals(43 , mrsTest.get[Integer ](3 ))
162
- assertEquals(167.31 , mrsTest.get[Integer ](4 ))
168
+ assertEquals(43L , mrsTest.get[Long ](3 ))
169
+ assertEquals(167.31 , mrsTest.get[Number ](4 ).doubleValue(), 0.0001 )
163
170
// FIXME check date conversion
164
171
// assertEquals("1997-12-24", mrsTest.get[JsonObject](5))
165
172
}
@@ -194,15 +201,32 @@ trait BaseSqlTests { this: SqlTestVerticle =>
194
201
}
195
202
196
203
def transaction (): Unit = typeTestInsert {
197
- expectOk(
198
- transaction(
199
- insert(" some_test" , Json .arr(" name" , " email" , " is_male" , " age" , " money" ),
200
- Json .arr(Json .arr(" Mr. Test jr." , " test3@example.com" , true , 5 , 2 ))),
201
- raw(" SELECT SUM(age) FROM some_test WHERE is_male = true" )))
202
- .map { reply =>
203
- val results = reply.getArray(" results" )
204
- assertEquals(1 , results.size())
205
- assertEquals(20 , results.get[JsonArray ](0 ).get[Int ](0 ))
206
- }
204
+ (for {
205
+ a <- expectOk(
206
+ transaction(
207
+ insert(" some_test" , Json .arr(" name" , " email" , " is_male" , " age" , " money" ),
208
+ Json .arr(Json .arr(" Mr. Test jr." , " test3@example.com" , true , 5 , 2 ))),
209
+ raw(" UPDATE some_test SET age=6 WHERE name = 'Mr. Test jr.'" )))
210
+ b <- expectOk(raw(" SELECT SUM(age) FROM some_test WHERE is_male = true" ))
211
+ } yield b) map { reply =>
212
+ val results = reply.getArray(" results" )
213
+ assertEquals(1 , results.size())
214
+ assertEquals(21 , results.get[JsonArray ](0 ).get[Number ](0 ).intValue())
215
+ }
216
+ }
217
+
218
+ def transactionWithPreparedStatement (): Unit = typeTestInsert {
219
+ (for {
220
+ a <- expectOk(
221
+ transaction(
222
+ insert(" some_test" , Json .arr(" name" , " email" , " is_male" , " age" , " money" ),
223
+ Json .arr(Json .arr(" Mr. Test jr." , " test3@example.com" , true , 5 , 2 ))),
224
+ prepared(" UPDATE some_test SET age=? WHERE name=?" , Json .arr(6 , " Mr. Test jr." ))))
225
+ b <- expectOk(raw(" SELECT SUM(age) FROM some_test WHERE is_male = true" ))
226
+ } yield b) map { reply =>
227
+ val results = reply.getArray(" results" )
228
+ assertEquals(1 , results.size())
229
+ assertEquals(21 , results.get[JsonArray ](0 ).get[Number ](0 ).intValue())
230
+ }
207
231
}
208
232
}
0 commit comments