use crate::mysql::Mysql;
use crate::mysql_like::MysqlLikeConnection;
pub type MysqlConnection = MysqlLikeConnection<Mysql>;
#[cfg(test)]
mod tests {
extern crate dotenvy;
use super::*;
use crate::connection::Connection;
use crate::connection::SimpleConnection;
use crate::query_dsl::RunQueryDsl;
use std::env;
fn connection() -> MysqlConnection {
dotenvy::dotenv().ok();
let database_url = env::var("MYSQL_UNIT_TEST_DATABASE_URL")
.or_else(|_| env::var("MYSQL_DATABASE_URL"))
.or_else(|_| env::var("DATABASE_URL"))
.expect("DATABASE_URL must be set in order to run unit tests");
MysqlConnection::establish(&database_url).unwrap()
}
#[diesel_test_helper::test]
fn batch_execute_handles_single_queries_with_results() {
let connection = &mut connection();
assert!(connection.batch_execute("SELECT 1").is_ok());
assert!(connection.batch_execute("SELECT 1").is_ok());
}
#[diesel_test_helper::test]
fn batch_execute_handles_multi_queries_with_results() {
let connection = &mut connection();
let query = "SELECT 1; SELECT 2; SELECT 3;";
assert!(connection.batch_execute(query).is_ok());
assert!(connection.batch_execute(query).is_ok());
}
#[diesel_test_helper::test]
fn execute_handles_queries_which_return_results() {
let connection = &mut connection();
assert!(crate::sql_query("SELECT 1").execute(connection).is_ok());
assert!(crate::sql_query("SELECT 1").execute(connection).is_ok());
}
#[diesel_test_helper::test]
fn check_client_found_rows_flag() {
let conn = &mut crate::test_helpers::connection();
crate::sql_query("DROP TABLE IF EXISTS update_test CASCADE")
.execute(conn)
.unwrap();
crate::sql_query("CREATE TABLE update_test(id INTEGER PRIMARY KEY, num INTEGER NOT NULL)")
.execute(conn)
.unwrap();
crate::sql_query("INSERT INTO update_test(id, num) VALUES (1, 5)")
.execute(conn)
.unwrap();
let output = crate::sql_query("UPDATE update_test SET num = 5 WHERE id = 1")
.execute(conn)
.unwrap();
assert_eq!(output, 1);
}
#[crate::declare_sql_function]
extern "SQL" {
fn version() -> crate::sql_types::Text;
}
#[diesel_test_helper::test]
fn version_matches_the_server_reported_version() {
let connection = &mut connection();
let expected = connection.version().unwrap().to_string();
let reported = crate::select(version())
.get_result::<String>(connection)
.unwrap();
assert!(
reported == expected || reported.starts_with(&format!("{expected}-")),
"`{reported}` does not start with `{expected}`"
);
}
}