Skip to content

Commit f57c225

Browse files
committed
Move tests into separate directories
1 parent 1b64529 commit f57c225

29 files changed

+343
-266
lines changed

SQLite.xcodeproj/project.pbxproj

Lines changed: 232 additions & 192 deletions
Large diffs are not rendered by default.

Sources/SQLite/Schema/Connection+Schema.swift

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,6 @@ extension Connection {
6363
}
6464
}
6565

66-
func tableInfo() throws -> [String] {
67-
try run("SELECT tbl_name FROM sqlite_master WHERE type = 'table'").compactMap { row in
68-
if let name = row[0] as? String, !name.starts(with: "sqlite_") {
69-
return name
70-
} else {
71-
return nil
72-
}
73-
}
74-
}
75-
7666
func foreignKeyInfo(table: String) throws -> [ColumnDefinition.ForeignKey] {
7767
try run("PRAGMA foreign_key_list(\(table.quote()))").compactMap { row in
7868
if let table = row[2] as? String, // table
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import XCTest
2+
import Foundation
3+
@testable import SQLite
4+
5+
#if SQLITE_SWIFT_STANDALONE
6+
import sqlite3
7+
#elseif SQLITE_SWIFT_SQLCIPHER
8+
import SQLCipher
9+
#elseif os(Linux)
10+
import CSQLite
11+
#else
12+
import SQLite3
13+
#endif
14+
15+
class ConnectionAttachTests: SQLiteTestCase {
16+
func test_attach_detach_memory_database() throws {
17+
let schemaName = "test"
18+
19+
try db.attach(.inMemory, as: schemaName)
20+
21+
let table = Table("attached_users", database: schemaName)
22+
let name = Expression<String>("string")
23+
24+
// create a table, insert some data
25+
try db.run(table.create { builder in
26+
builder.column(name)
27+
})
28+
_ = try db.run(table.insert(name <- "test"))
29+
30+
// query data
31+
let rows = try db.prepare(table.select(name)).map { $0[name] }
32+
XCTAssertEqual(["test"], rows)
33+
34+
try db.detach(schemaName)
35+
}
36+
37+
func test_attach_detach_file_database() throws {
38+
let schemaName = "test"
39+
let testDb = fixture("test", withExtension: "sqlite")
40+
41+
try db.attach(.uri(testDb, parameters: [.mode(.readOnly)]), as: schemaName)
42+
43+
let table = Table("tests", database: schemaName)
44+
let email = Expression<String>("email")
45+
46+
let rows = try db.prepare(table.select(email)).map { $0[email] }
47+
XCTAssertEqual(["[email protected]"], rows)
48+
49+
try db.detach(schemaName)
50+
}
51+
52+
func test_detach_invalid_schema_name_errors_with_no_such_database() throws {
53+
XCTAssertThrowsError(try db.detach("no-exist")) { error in
54+
if case let Result.error(message, code, _) = error {
55+
XCTAssertEqual(code, SQLITE_ERROR)
56+
XCTAssertEqual("no such database: no-exist", message)
57+
} else {
58+
XCTFail("unexpected error: \(error)")
59+
}
60+
}
61+
}
62+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import XCTest
2+
import Foundation
3+
@testable import SQLite
4+
5+
#if SQLITE_SWIFT_STANDALONE
6+
import sqlite3
7+
#elseif SQLITE_SWIFT_SQLCIPHER
8+
import SQLCipher
9+
#elseif os(Linux)
10+
import CSQLite
11+
#else
12+
import SQLite3
13+
#endif
14+
15+
class ConnectionPragmaTests: SQLiteTestCase {
16+
func test_userVersion() {
17+
db.userVersion = 2
18+
XCTAssertEqual(2, db.userVersion!)
19+
}
20+
21+
func test_sqlite_version() {
22+
XCTAssertTrue(db.sqliteVersion >= (3, 0, 0))
23+
}
24+
25+
func test_foreignKeys_defaults_to_false() {
26+
XCTAssertFalse(db.foreignKeys)
27+
}
28+
29+
func test_foreignKeys_sets_value() {
30+
db.foreignKeys = true
31+
XCTAssertTrue(db.foreignKeys)
32+
}
33+
34+
func test_defer_foreignKeys_defaults_to_false() {
35+
XCTAssertFalse(db.deferForeignKeys)
36+
}
37+
38+
func test_defer_foreignKeys_sets_value() {
39+
db.deferForeignKeys = true
40+
XCTAssertTrue(db.deferForeignKeys)
41+
}
42+
}

Tests/SQLiteTests/ConnectionTests.swift renamed to Tests/SQLiteTests/Core/ConnectionTests.swift

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,6 @@ class ConnectionTests: SQLiteTestCase {
111111
XCTAssertEqual(2, db.totalChanges)
112112
}
113113

114-
func test_userVersion() {
115-
db.userVersion = 2
116-
XCTAssertEqual(2, db.userVersion!)
117-
}
118-
119114
func test_prepare_preparesAndReturnsStatements() throws {
120115
_ = try db.prepare("SELECT * FROM users WHERE admin = 0")
121116
_ = try db.prepare("SELECT * FROM users WHERE admin = ?", 0)
@@ -445,51 +440,4 @@ class ConnectionTests: SQLiteTestCase {
445440
}
446441
semaphores.forEach { $0.wait() }
447442
}
448-
449-
func test_attach_detach_memory_database() throws {
450-
let schemaName = "test"
451-
452-
try db.attach(.inMemory, as: schemaName)
453-
454-
let table = Table("attached_users", database: schemaName)
455-
let name = Expression<String>("string")
456-
457-
// create a table, insert some data
458-
try db.run(table.create { builder in
459-
builder.column(name)
460-
})
461-
_ = try db.run(table.insert(name <- "test"))
462-
463-
// query data
464-
let rows = try db.prepare(table.select(name)).map { $0[name] }
465-
XCTAssertEqual(["test"], rows)
466-
467-
try db.detach(schemaName)
468-
}
469-
470-
func test_attach_detach_file_database() throws {
471-
let schemaName = "test"
472-
let testDb = fixture("test", withExtension: "sqlite")
473-
474-
try db.attach(.uri(testDb, parameters: [.mode(.readOnly)]), as: schemaName)
475-
476-
let table = Table("tests", database: schemaName)
477-
let email = Expression<String>("email")
478-
479-
let rows = try db.prepare(table.select(email)).map { $0[email] }
480-
XCTAssertEqual(["[email protected]"], rows)
481-
482-
try db.detach(schemaName)
483-
}
484-
485-
func test_detach_invalid_schema_name_errors_with_no_such_database() throws {
486-
XCTAssertThrowsError(try db.detach("no-exist")) { error in
487-
if case let Result.error(message, code, _) = error {
488-
XCTAssertEqual(code, SQLITE_ERROR)
489-
XCTAssertEqual("no such database: no-exist", message)
490-
} else {
491-
XCTFail("unexpected error: \(error)")
492-
}
493-
}
494-
}
495443
}

Tests/SQLiteTests/Schema/ConnectionSchemaTests.swift renamed to Tests/SQLiteTests/Schema/Connection+SchemaTests.swift

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,6 @@ class ConnectionSchemaTests: SQLiteTestCase {
108108
])
109109
}
110110

111-
func test_table_info_returns_list_of_tables() throws {
112-
let tables = try db.tableInfo()
113-
XCTAssertEqual(tables, ["users"])
114-
}
115-
116111
func test_foreign_key_info_empty() throws {
117112
try db.run("CREATE TABLE t (\"id\" INTEGER PRIMARY KEY)")
118113

@@ -136,8 +131,4 @@ class ConnectionSchemaTests: SQLiteTestCase {
136131
.init(table: "users", column: "test_id", primaryKey: "id", onUpdate: nil, onDelete: nil)
137132
])
138133
}
139-
140-
func test_sqlite_version() {
141-
XCTAssertTrue(db.sqliteVersion >= (3, 0, 0))
142-
}
143134
}

Tests/SQLiteTests/Schema/SchemaChangerTests.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,12 @@ class SchemaChangerTests: SQLiteTestCase {
102102

103103
func test_drop_table() throws {
104104
try schemaChanger.drop(table: "users")
105-
106-
let tables = try db.tableInfo()
107-
XCTAssertFalse(tables.contains("users"))
105+
XCTAssertThrowsError(try db.scalar(users.count)) { error in
106+
if case Result.error(let message, _, _) = error {
107+
XCTAssertEqual(message, "no such table: users")
108+
} else {
109+
XCTFail("unexpected error \(error)")
110+
}
111+
}
108112
}
109113
}

0 commit comments

Comments
 (0)