Files
UUVPN/iOS-SwiftUI-Code/GRDB.swift-6.29.3/Tests/GRDBTests/DatabaseColumnEncodingStrategyTests.swift

34 lines
1.2 KiB
Swift

import XCTest
import Foundation
@testable import GRDB
private struct UseDefaultKeysRecord: PersistableRecord, Encodable {
static var databaseColumnEncodingStrategy: DatabaseColumnEncodingStrategy { .useDefaultKeys }
var recordID: String
}
private struct ConvertToSnakeCaseRecord: PersistableRecord, Encodable {
static var databaseColumnEncodingStrategy: DatabaseColumnEncodingStrategy { .convertToSnakeCase }
var recordID: String
}
class DatabaseColumnEncodingStrategyTests: GRDBTestCase {
func testUseDefaultKeys() throws {
let record = UseDefaultKeysRecord(recordID: "test")
var container = PersistenceContainer()
try record.encode(to: &container)
XCTAssertNil(container["record_id"]?.databaseValue.storage)
XCTAssertEqual(container["recordID"]?.databaseValue.storage, "test".databaseValue.storage)
}
func testConvertToSnakeCase() throws {
let record = ConvertToSnakeCaseRecord(recordID: "test")
var container = PersistenceContainer()
try record.encode(to: &container)
XCTAssertNil(container["recordID"]?.databaseValue.storage)
XCTAssertEqual(container["record_id"]?.databaseValue.storage, "test".databaseValue.storage)
}
}