in src/app.rs [730:774]
fn test_context_functions() -> Result<(), Box<dyn Error>> {
let cx1 = Context {
config: None,
cache: None,
overwritten_region: None,
overwritten_table_name: None,
overwritten_port: None,
output: None,
};
assert_eq!(cx1.effective_region(), Region::default());
// cx1.effective_table_name(); ... exit(1)
let cx2 = Context {
config: Some(Config {
using_region: Some(String::from("ap-northeast-1")),
using_table: Some(String::from("cfgtbl")),
using_port: Some(8000),
}),
cache: None,
overwritten_region: None,
overwritten_table_name: None,
overwritten_port: None,
output: None,
};
assert_eq!(cx2.effective_region(), Region::from_str("ap-northeast-1")?);
assert_eq!(cx2.effective_table_name(), String::from("cfgtbl"));
let mut cx3 = cx2.clone();
cx3.overwritten_region = Some(Region::from_str("us-east-1")?); // --region us-east-1
cx3.overwritten_table_name = Some(String::from("argtbl")); // --table argtbl
assert_eq!(cx3.effective_region(), Region::from_str("us-east-1")?);
assert_eq!(cx3.effective_table_name(), String::from("argtbl"));
let mut cx4 = cx2.clone();
cx4.overwritten_region = Some(Region::from_str("us-east-1")?); // --region us-east-1
assert_eq!(cx4.effective_region(), Region::from_str("us-east-1")?);
assert_eq!(cx4.effective_table_name(), String::from("cfgtbl"));
let mut cx5 = cx2.clone();
cx5.overwritten_table_name = Some(String::from("argtbl")); // --table argtbl
assert_eq!(cx5.effective_region(), Region::from_str("ap-northeast-1")?);
assert_eq!(cx5.effective_table_name(), String::from("argtbl"));
Ok(())
}