use assert_cmd::Command;
use predicates::prelude::*;
#[test]
fn test_create_insert_select() {
let db_path = tempfile::NamedTempFile::new().unwrap();
let mut cmd = Command::cargo_bin("polite").unwrap();
cmd.arg("CREATE TABLE people (id INTEGER, name TEXT)")
.arg(db_path.path());
cmd.assert().success();
let mut cmd = Command::cargo_bin("polite").unwrap();
cmd.arg("INSERT INTO people VALUES (1, 'Alice')")
.arg(db_path.path());
cmd.assert().success();
let mut cmd = Command::cargo_bin("polite").unwrap();
cmd.arg("SELECT * FROM people").arg(db_path.path());
let output = cmd.assert().success().get_output().stdout.clone();
let stdout = String::from_utf8(output).unwrap();
assert!(stdout.contains("Alice"));
}
#[test]
fn help_flag_shows_usage() {
let mut cmd = Command::cargo_bin("polite").unwrap();
cmd.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("USAGE:"))
.stdout(predicate::str::contains("polite <SQL> [DB_PATH]"));
}
#[test]
fn create_insert_select_file_fixture() {
let db = tempfile::NamedTempFile::new().unwrap();
assert_cmd::Command::cargo_bin("polite")
.unwrap()
.arg("CREATE TABLE t (id INTEGER, name TEXT)")
.arg(db.path())
.assert()
.success();
assert_cmd::Command::cargo_bin("polite")
.unwrap()
.arg("INSERT INTO t VALUES (1, 'Alice')")
.arg(db.path())
.assert()
.success();
let output = assert_cmd::Command::cargo_bin("polite")
.unwrap()
.arg("SELECT * FROM t")
.arg(db.path())
.assert()
.success()
.get_output()
.stdout
.clone();
let stdout = String::from_utf8_lossy(&output);
assert!(stdout.contains("Alice"));
}