62 lines
2.2 KiB
Rust
62 lines
2.2 KiB
Rust
use super::*;
|
|
|
|
#[test]
|
|
fn application_run_keeps_database_between_commands_and_removes_only_its_binary() {
|
|
let directory = Directory::new();
|
|
let target = directory.0.join("module/demo/account");
|
|
std::fs::create_dir_all(&target).unwrap();
|
|
let source = fixture()
|
|
.with_file_name("database")
|
|
.join("module/demo/account");
|
|
for name in ["api.dever", "model.dever", "app.dever"] {
|
|
std::fs::copy(source.join(name), target.join(name)).unwrap();
|
|
}
|
|
std::fs::create_dir(directory.0.join("config")).unwrap();
|
|
std::fs::create_dir(directory.0.join("data")).unwrap();
|
|
std::fs::write(directory.0.join("data/keep.txt"), "keep").unwrap();
|
|
std::fs::write(directory.0.join("config/setting.json"), r#"{"database":{"default":{"type":"sqlite","path":"data/account.db","max_connections":1}}}"#).unwrap();
|
|
let run = |name: &str, input: &str| {
|
|
Command::new(env!("CARGO_BIN_EXE_dever"))
|
|
.arg("run")
|
|
.arg(&directory.0)
|
|
.args(["--", name, input])
|
|
.output()
|
|
.unwrap()
|
|
};
|
|
let created = run("demo.account.create", r#"{"name":"persistent"}"#);
|
|
assert!(
|
|
created.status.success(),
|
|
"{}",
|
|
String::from_utf8_lossy(&created.stderr)
|
|
);
|
|
assert!(directory.0.join("data/account.db").is_file());
|
|
let count = run("demo.account.count", "{}");
|
|
assert!(count.status.success());
|
|
assert_eq!(
|
|
serde_json::from_slice::<serde_json::Value>(&count.stdout).unwrap()["data"],
|
|
1
|
|
);
|
|
let failed = run(
|
|
"demo.account.explode",
|
|
r#"{"name":"rolled back","value":9223372036854775807}"#,
|
|
);
|
|
assert!(!failed.status.success());
|
|
let count = run("demo.account.count", "{}");
|
|
assert!(count.status.success());
|
|
assert_eq!(
|
|
serde_json::from_slice::<serde_json::Value>(&count.stdout).unwrap()["data"],
|
|
1
|
|
);
|
|
assert_eq!(
|
|
std::fs::read_to_string(directory.0.join("data/keep.txt")).unwrap(),
|
|
"keep"
|
|
);
|
|
assert!(std::fs::read_dir(&directory.0).unwrap().all(|entry| {
|
|
!entry
|
|
.unwrap()
|
|
.file_name()
|
|
.to_string_lossy()
|
|
.starts_with(".dever-run-")
|
|
}));
|
|
}
|