Wave 6: Integration tests, golden tests, index invariant tests, diff command (bd-rex, bd-2gp, bd-1ck)
This commit is contained in:
84
tests/index_invariant_test.rs
Normal file
84
tests/index_invariant_test.rs
Normal file
@@ -0,0 +1,84 @@
|
||||
mod helpers;
|
||||
|
||||
/// Delete the raw.json file from a cached alias to prove index-only reads.
|
||||
fn delete_raw_json(env: &helpers::TestEnv, alias: &str) {
|
||||
let raw_path = env.home_dir.join("cache").join(alias).join("raw.json");
|
||||
assert!(
|
||||
raw_path.exists(),
|
||||
"raw.json must exist before deletion: {}",
|
||||
raw_path.display()
|
||||
);
|
||||
std::fs::remove_file(&raw_path).expect("failed to delete raw.json");
|
||||
assert!(!raw_path.exists(), "raw.json should be gone after deletion");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Index-only reads: these commands must work WITHOUT raw.json
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
#[test]
|
||||
fn test_list_does_not_read_raw_json() {
|
||||
let env = helpers::TestEnv::new();
|
||||
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
||||
delete_raw_json(&env, "petstore");
|
||||
|
||||
let a = helpers::run_cmd(&env, &["list", "petstore", "--robot"]).success();
|
||||
let json = helpers::parse_robot_json(&a.get_output().stdout);
|
||||
|
||||
assert_eq!(json["ok"], true);
|
||||
assert!(json["data"]["total"].as_u64().unwrap() > 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_search_does_not_read_raw_json() {
|
||||
let env = helpers::TestEnv::new();
|
||||
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
||||
delete_raw_json(&env, "petstore");
|
||||
|
||||
let a = helpers::run_cmd(&env, &["search", "petstore", "pet", "--robot"]).success();
|
||||
let json = helpers::parse_robot_json(&a.get_output().stdout);
|
||||
|
||||
assert_eq!(json["ok"], true);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_tags_does_not_read_raw_json() {
|
||||
let env = helpers::TestEnv::new();
|
||||
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
||||
delete_raw_json(&env, "petstore");
|
||||
|
||||
let a = helpers::run_cmd(&env, &["tags", "petstore", "--robot"]).success();
|
||||
let json = helpers::parse_robot_json(&a.get_output().stdout);
|
||||
|
||||
assert_eq!(json["ok"], true);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_schemas_list_does_not_read_raw_json() {
|
||||
let env = helpers::TestEnv::new();
|
||||
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
||||
delete_raw_json(&env, "petstore");
|
||||
|
||||
let a = helpers::run_cmd(&env, &["schemas", "petstore", "--robot"]).success();
|
||||
let json = helpers::parse_robot_json(&a.get_output().stdout);
|
||||
|
||||
assert_eq!(json["ok"], true);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Negative case: show REQUIRES raw.json
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
#[test]
|
||||
fn test_show_requires_raw_json() {
|
||||
let env = helpers::TestEnv::new();
|
||||
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
||||
delete_raw_json(&env, "petstore");
|
||||
|
||||
// show needs raw.json to resolve the operation pointer
|
||||
helpers::run_cmd(
|
||||
&env,
|
||||
&["show", "petstore", "/pets", "--method", "GET", "--robot"],
|
||||
)
|
||||
.failure();
|
||||
}
|
||||
Reference in New Issue
Block a user