Skip to content

Commit

Permalink
test: Adds more insert values test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
NeedleInAJayStack committed Jul 30, 2022
1 parent 2e6d83b commit 5d51f3c
Showing 1 changed file with 75 additions and 0 deletions.
75 changes: 75 additions & 0 deletions Tests/SQLKitTests/SQLKitTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,74 @@ final class SQLKitTests: XCTestCase {
XCTAssertEqual(db.bindResults[0] as? [String], ["Jupiter"]) // instead of [["Jupiter"]]
}

func testInsertValuesEncodable() throws {
// Test variadic values method
try db.insert(into: "planets")
.columns(["name", "color"])
.values("Jupiter", "orange")
.run().wait()
XCTAssertEqual(db.results[0], "INSERT INTO `planets` (`name`, `color`) VALUES (?, ?)")
XCTAssertEqual(db.bindResults[0] as? [String], ["Jupiter", "orange"])

// Test array values method
try db.insert(into: "planets")
.columns(["name", "color"])
.values(["Jupiter", "orange"])
.run().wait()
XCTAssertEqual(db.results[1], "INSERT INTO `planets` (`name`, `color`) VALUES (?, ?)")
XCTAssertEqual(db.bindResults[1] as? [String], ["Jupiter", "orange"])

// Test nested array values method
try db.insert(into: "planets")
.columns(["name", "color"])
.values([["Jupiter", "orange"],["Mars", "red"]])
.run().wait()
XCTAssertEqual(db.results[2], "INSERT INTO `planets` (`name`, `color`) VALUES (?, ?)")
XCTAssertEqual(db.bindResults[2] as? [[String]], [["Jupiter", "orange"], ["Mars", "red"]])

// Test multiple values calls make multiple rows
try db.insert(into: "planets")
.columns(["name", "color"])
.values(["Jupiter", "orange"])
.values(["Mars", "red"])
.run().wait()
XCTAssertEqual(db.results[3], "INSERT INTO `planets` (`name`, `color`) VALUES (?, ?), (?, ?)")
XCTAssertEqual(db.bindResults[3] as? [String], ["Jupiter", "orange", "Mars", "red"])

// Test single-value input method
try db.insert(into: "planets")
.columns(["name"])
.values(["Jupiter"])
.run().wait()
XCTAssertEqual(db.results[4], "INSERT INTO `planets` (`name`) VALUES (?)")
XCTAssertEqual(db.bindResults[4] as? [String], ["Jupiter"])
}

func testInsertValuesExpression() throws {
// Test variadic values method
try db.insert(into: "planets")
.columns(["name", "color"])
.values(SQLBind("Jupiter"), SQLBind("orange"))
.run().wait()
XCTAssertEqual(db.results[0], "INSERT INTO `planets` (`name`, `color`) VALUES (?, ?)")
XCTAssertEqual(db.bindResults[0] as? [String], ["Jupiter", "orange"])

// Test array values method
try db.insert(into: "planets")
.columns(["name", "color"])
.values([SQLBind("Jupiter"), SQLBind("orange")])
.run().wait()
XCTAssertEqual(db.results[1], "INSERT INTO `planets` (`name`, `color`) VALUES (?, ?)")
XCTAssertEqual(db.bindResults[1] as? [String], ["Jupiter", "orange"])

// Test nested array values method
try db.insert(into: "planets")
.columns(["name", "color"])
.values([[SQLBind("Jupiter"), SQLBind("orange")],[SQLBind("Mars"), SQLBind("red")]])
.run().wait()
XCTAssertEqual(db.results[2], "INSERT INTO `planets` (`name`, `color`) VALUES (?, ?), (?, ?)")
XCTAssertEqual(db.bindResults[2] as? [String], ["Jupiter", "orange", "Mars", "red"])

// Test multiple values calls make multiple rows
try db.insert(into: "planets")
.columns(["name", "color"])
Expand All @@ -361,6 +428,14 @@ final class SQLKitTests: XCTestCase {
.run().wait()
XCTAssertEqual(db.results[3], "INSERT INTO `planets` (`name`, `color`) VALUES (?, ?), (?, ?)")
XCTAssertEqual(db.bindResults[3] as? [String], ["Jupiter", "orange", "Mars", "red"])

// Test single-value input method
try db.insert(into: "planets")
.columns(["name"])
.values([SQLBind("Jupiter")])
.run().wait()
XCTAssertEqual(db.results[4], "INSERT INTO `planets` (`name`) VALUES (?)")
XCTAssertEqual(db.bindResults[4] as? [String], ["Jupiter"])
}

// MARK: Returning
Expand Down

0 comments on commit 5d51f3c

Please sign in to comment.