add swiftUI code
This commit is contained in:
+55
@@ -0,0 +1,55 @@
|
||||
import XCTest
|
||||
import GRDB
|
||||
|
||||
private class FetchableParent : DatabaseValueConvertible, CustomStringConvertible {
|
||||
var databaseValue: DatabaseValue { "Parent".databaseValue }
|
||||
|
||||
class func fromDatabaseValue(_ dbValue: DatabaseValue) -> Self? {
|
||||
self.init()
|
||||
}
|
||||
|
||||
required init() {
|
||||
}
|
||||
|
||||
var description: String { "Parent" }
|
||||
}
|
||||
|
||||
private class FetchableChild : FetchableParent {
|
||||
/// Returns a value that can be stored in the database.
|
||||
override var databaseValue: DatabaseValue {
|
||||
"Child".databaseValue
|
||||
}
|
||||
|
||||
override var description: String { "Child" }
|
||||
}
|
||||
|
||||
class DatabaseValueConvertibleSubclassTests: GRDBTestCase {
|
||||
|
||||
func testParent() throws {
|
||||
let dbQueue = try makeDatabaseQueue()
|
||||
try dbQueue.inDatabase { db in
|
||||
try db.execute(sql: "CREATE TABLE parents (name TEXT)")
|
||||
try db.execute(sql: "INSERT INTO parents (name) VALUES (?)", arguments: [FetchableParent()])
|
||||
let string = try String.fetchOne(db, sql: "SELECT * FROM parents")!
|
||||
XCTAssertEqual(string, "Parent")
|
||||
let parent = try FetchableParent.fetchOne(db, sql: "SELECT * FROM parents")!
|
||||
XCTAssertEqual(parent.description, "Parent")
|
||||
let parents = try FetchableParent.fetchAll(db, sql: "SELECT * FROM parents")
|
||||
XCTAssertEqual(parents.first!.description, "Parent")
|
||||
}
|
||||
}
|
||||
|
||||
func testChild() throws {
|
||||
let dbQueue = try makeDatabaseQueue()
|
||||
try dbQueue.inDatabase { db in
|
||||
try db.execute(sql: "CREATE TABLE children (name TEXT)")
|
||||
try db.execute(sql: "INSERT INTO children (name) VALUES (?)", arguments: [FetchableChild()])
|
||||
let string = try String.fetchOne(db, sql: "SELECT * FROM children")!
|
||||
XCTAssertEqual(string, "Child")
|
||||
let child = try FetchableChild.fetchOne(db, sql: "SELECT * FROM children")!
|
||||
XCTAssertEqual(child.description, "Child")
|
||||
let children = try FetchableChild.fetchAll(db, sql: "SELECT * FROM children")
|
||||
XCTAssertEqual(children.first!.description, "Child")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user