mirror of
https://github.com/launchbadge/sqlx.git
synced 2025-10-06 17:26:06 +00:00

* fix(ci): update workflows/examples.yml * Removed archived `actions-rs` actions * Upgraded `Swatinem/rust-cache`, `actions/checkout`, `actions/download-artifact`, `actions/upload-artifact` * chore: deprecate `AnyKind` * fix: remove dead references to DB features in `sqlx-core` This reactivates a couple of tests that had stopped working. * chore(ci): move sqlx-cli checks to their own workflow * fix(ci): remove remaining `uses: actions-rs/cargo` * fix warnings * chore: add titles to sqlx-cli jobs * fix warnings (2) * fix error in pool example * fix warnings (3) * fix query_builder test * fix: don't run CLI tests on Windows * chore: upgrade `rust-toolchain` to 1.80 * fix(postgres): fix missing Tokio specialization in `PgCopyIn` Caught by the new `unexpected_cfgs` lint. * fix new warnings
106 lines
2.6 KiB
Rust
106 lines
2.6 KiB
Rust
use sqlx::postgres::Postgres;
|
|
use sqlx::query_builder::QueryBuilder;
|
|
use sqlx::Execute;
|
|
|
|
#[test]
|
|
fn test_new() {
|
|
let qb: QueryBuilder<'_, Postgres> = QueryBuilder::new("SELECT * FROM users");
|
|
assert_eq!(qb.sql(), "SELECT * FROM users");
|
|
}
|
|
|
|
#[test]
|
|
fn test_push() {
|
|
let mut qb: QueryBuilder<'_, Postgres> = QueryBuilder::new("SELECT * FROM users");
|
|
let second_line = " WHERE last_name LIKE '[A-N]%';";
|
|
qb.push(second_line);
|
|
|
|
assert_eq!(
|
|
qb.sql(),
|
|
"SELECT * FROM users WHERE last_name LIKE '[A-N]%';".to_string(),
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
#[should_panic]
|
|
fn test_push_panics_after_build_without_reset() {
|
|
let mut qb: QueryBuilder<'_, Postgres> = QueryBuilder::new("SELECT * FROM users;");
|
|
|
|
let _query = qb.build();
|
|
|
|
qb.push("SELECT * FROM users;");
|
|
}
|
|
|
|
#[test]
|
|
fn test_push_bind() {
|
|
let mut qb: QueryBuilder<'_, Postgres> = QueryBuilder::new("SELECT * FROM users WHERE id = ");
|
|
|
|
qb.push_bind(42i32)
|
|
.push(" OR membership_level = ")
|
|
.push_bind(3i32);
|
|
|
|
assert_eq!(
|
|
qb.sql(),
|
|
"SELECT * FROM users WHERE id = $1 OR membership_level = $2"
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_build() {
|
|
let mut qb: QueryBuilder<'_, Postgres> = QueryBuilder::new("SELECT * FROM users");
|
|
|
|
qb.push(" WHERE id = ").push_bind(42i32);
|
|
let query = qb.build();
|
|
|
|
assert_eq!(query.sql(), "SELECT * FROM users WHERE id = $1");
|
|
assert_eq!(Execute::persistent(&query), true);
|
|
}
|
|
|
|
#[test]
|
|
fn test_reset() {
|
|
let mut qb: QueryBuilder<'_, Postgres> = QueryBuilder::new("");
|
|
|
|
let _query = qb
|
|
.push("SELECT * FROM users WHERE id = ")
|
|
.push_bind(42i32)
|
|
.build();
|
|
|
|
qb.reset();
|
|
|
|
assert_eq!(qb.sql(), "");
|
|
}
|
|
|
|
#[test]
|
|
fn test_query_builder_reuse() {
|
|
let mut qb: QueryBuilder<'_, Postgres> = QueryBuilder::new("");
|
|
|
|
let _query = qb
|
|
.push("SELECT * FROM users WHERE id = ")
|
|
.push_bind(42i32)
|
|
.build();
|
|
|
|
qb.reset();
|
|
|
|
let query = qb.push("SELECT * FROM users WHERE id = 99").build();
|
|
|
|
assert_eq!(query.sql(), "SELECT * FROM users WHERE id = 99");
|
|
}
|
|
|
|
#[test]
|
|
fn test_query_builder_with_args() {
|
|
let mut qb: QueryBuilder<'_, Postgres> = QueryBuilder::new("");
|
|
|
|
let mut query = qb
|
|
.push("SELECT * FROM users WHERE id = ")
|
|
.push_bind(42i32)
|
|
.build();
|
|
|
|
let mut qb: QueryBuilder<'_, Postgres> =
|
|
QueryBuilder::with_arguments(query.sql(), query.take_arguments().unwrap().unwrap());
|
|
let query = qb.push(" OR membership_level = ").push_bind(3i32).build();
|
|
|
|
assert_eq!(
|
|
query.sql(),
|
|
"SELECT * FROM users WHERE id = $1 OR membership_level = $2"
|
|
);
|
|
}
|