blob: 88e47a9ca24f6ee9f2c21e9168b7b58a0320e5b9 [file] [log] [blame]
package groovy.sql
import javax.sql.DataSource
class PersonTest extends GroovyTestCase {
def type
void testFoo() {
def persons = createDataSet()
def blogs = persons.findAll { it.lastName == "Bloggs" }
assertSql(blogs, "select * from person where lastName = ?", ['Bloggs'])
}
void testWhereWithAndClause() {
def persons = createDataSet()
def blogs = persons.findAll { it.lastName == "Bloggs" }
def bigBlogs = blogs.findAll { it.size > 100 }
assertSql(bigBlogs, "select * from person where lastName = ? and size > ?", ['Bloggs', 100])
}
void testWhereClosureWithAnd() {
def persons = createDataSet()
def blogs = persons.findAll { it.size < 10 && it.lastName == "Bloggs" }
assertSql(blogs, "select * from person where (size < ? and lastName = ?)", [10, 'Bloggs'])
}
protected def compareFn(value) {
value > 1 && value < 10
}
protected def assertSql(dataSet, expectedSql, expectedParams) {
def sql = dataSet.sql
def params = dataSet.parameters
assert sql == expectedSql
assert params == expectedParams
}
protected DataSource createDataSource() {
def ds = new org.hsqldb.jdbc.jdbcDataSource()
ds.database = "jdbc:hsqldb:mem:foo" + getMethodName()
ds.user = 'sa'
ds.password = ''
return ds
}
protected def createDataSet() {
def type = Person
assert type != null , "failed to load Person class"
def dataSource = createDataSource()
def sql = new Sql(dataSource)
return sql.dataSet(type)
}
}