Files

30 lines
1.3 KiB
Swift

import XCTest
@testable import GRDB
class SQLExpressionLiteralTests: GRDBTestCase {
func testWithArguments() throws {
try DatabaseQueue().inDatabase { db in
let expression = Column("foo").collating(.nocase) == "'fooéı👨👨🏿🇫🇷🇨🇮'" && Column("baz") >= 1
let context = SQLGenerationContext(db)
let sql = try expression.sql(context, wrappedInParenthesis: true)
XCTAssertEqual(sql, "((\"foo\" = ? COLLATE NOCASE) AND (\"baz\" >= ?))")
let values = context.arguments.values
XCTAssertEqual(values.count, 2)
XCTAssertEqual(values[0], "'fooéı👨👨🏿🇫🇷🇨🇮'".databaseValue)
XCTAssertEqual(values[1], 1.databaseValue)
}
}
func testWithoutArguments() throws {
try DatabaseQueue().inDatabase { db in
let expression = Column("foo").collating(.nocase) == "'fooéı👨👨🏿🇫🇷🇨🇮'" && Column("baz") >= 1
let context = SQLGenerationContext(db, argumentsSink: .literalValues)
let sql = try expression.sql(context, wrappedInParenthesis: true)
XCTAssert(context.arguments.isEmpty)
XCTAssertEqual(sql, "((\"foo\" = '''fooéı👨👨🏿🇫🇷🇨🇮''' COLLATE NOCASE) AND (\"baz\" >= 1))")
}
}
}