diff --git a/Tests/FluentTests/OperatorTests.swift b/Tests/FluentTests/OperatorTests.swift index 2a1e8cec..ffed30ba 100644 --- a/Tests/FluentTests/OperatorTests.swift +++ b/Tests/FluentTests/OperatorTests.swift @@ -2,35 +2,61 @@ import Fluent import Testing import Vapor import VaporTesting +import XCTFluent @Suite struct OperatorTests { @Test func customOperators() throws { - // TODO: What does this test...? let db = DummyDatabase() // name contains string anywhere, prefix, suffix - _ = Planet.query(on: db) - .filter(\.$name ~~ "art") - _ = Planet.query(on: db) - .filter(\.$name =~ "art") - _ = Planet.query(on: db) - .filter(\.$name ~= "art") + #expect( + Planet.query(on: db) + .filter(\.$name ~~ "art").query.description + == #"query read planets filters=[planets[name] contains "art"]"# + ) + #expect( + Planet.query(on: db) + .filter(\.$name =~ "art").query.description + == #"query read planets filters=[planets[name] startswith "art"]"# + ) + #expect( + Planet.query(on: db) + .filter(\.$name ~= "art").query.description + == #"query read planets filters=[planets[name] endswith "art"]"# + ) + // name doesn't contain string anywhere, prefix, suffix - _ = Planet.query(on: db) - .filter(\.$name !~ "art") - _ = Planet.query(on: db) - .filter(\.$name !=~ "art") - _ = Planet.query(on: db) - .filter(\.$name !~= "art") + #expect( + Planet.query(on: db) + .filter(\.$name !~ "art").query.description + == #"query read planets filters=[planets[name] !contains "art"]"# + ) + #expect( + Planet.query(on: db) + .filter(\.$name !=~ "art").query.description + == #"query read planets filters=[planets[name] !startswith "art"]"# + ) + #expect( + Planet.query(on: db) + .filter(\.$name !~= "art").query.description + == #"query read planets filters=[planets[name] !endswith "art"]"# + ) // name in array - _ = Planet.query(on: db) - .filter(\.$name ~~ ["Earth", "Mars"]) + #expect( + Planet.query(on: db) + .filter(\.$name ~~ ["Earth", "Mars"]).query.description + == #"query read planets filters=[planets[name] ~~ ["Earth", "Mars"]]"# + ) + // name not in array - _ = Planet.query(on: db) - .filter(\.$name !~ ["Earth", "Mars"]) + #expect( + Planet.query(on: db) + .filter(\.$name !~ ["Earth", "Mars"]).query.description + == #"query read planets filters=[planets[name] !~~ ["Earth", "Mars"]]"# + ) } } @@ -43,49 +69,3 @@ private final class Planet: Model, @unchecked Sendable { @Field(key: "name") var name: String } - -private struct DummyDatabase: Database { - var inTransaction: Bool { - false - } - - var context: DatabaseContext { - .init(configuration: DummyDatabaseConfiguration(), logger: Logger(label: "fluent"), eventLoop: MultiThreadedEventLoopGroup.singleton.any()) - } - - func execute(query: DatabaseQuery, onOutput: @escaping @Sendable (any DatabaseOutput) -> Void) -> EventLoopFuture { - fatalError() - } - - func execute(schema: DatabaseSchema) -> EventLoopFuture { - fatalError() - } - - func execute(enum: DatabaseEnum) -> EventLoopFuture { - fatalError() - } - - func withConnection(_ closure: @escaping @Sendable (any Database) -> EventLoopFuture) -> EventLoopFuture { - fatalError() - } - - func transaction(_ closure: @escaping @Sendable (any Database) -> EventLoopFuture) -> EventLoopFuture { - fatalError() - } -} - -private struct DummyDatabaseConfiguration: DatabaseConfiguration { - var middleware: [any FluentKit.AnyModelMiddleware] = [] - - func makeDriver(for databases: FluentKit.Databases) -> any FluentKit.DatabaseDriver { - DummyDatabaseDriver() - } -} - -private struct DummyDatabaseDriver: DatabaseDriver { - func makeDatabase(with context: FluentKit.DatabaseContext) -> any FluentKit.Database { - DummyDatabase() - } - - func shutdown() {} -}