Initial Dever 0.0.1
This commit is contained in:
commit
81233d098c
1479 files changed
+163782
No files matched your search
@@ -0,0 +1,61 @@
|
||||
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-")
|
||||
}));
|
||||
}
|
||||
Reference in new issue
Block a user