From 9e5524b556ee5ccc241b00947de7f0839ee79b23 Mon Sep 17 00:00:00 2001 From: miirc Date: Sun, 8 Nov 2020 10:23:01 -0500 Subject: [PATCH] Impl Store::save --- src/storage/store.rs | 56 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/storage/store.rs b/src/storage/store.rs index fc715f9..1a1e82f 100644 --- a/src/storage/store.rs +++ b/src/storage/store.rs @@ -39,6 +39,10 @@ impl Store { Err(err) => Err(err), } } + + pub fn save(&mut self) -> Result<(), Error> { + fs::write(self.path.clone(), self.buffer.clone()) + } } #[cfg(test)] @@ -133,4 +137,56 @@ mod tests { assert_eq!(true, resp.is_ok()); assert_eq!(buf, s.buffer); } + + #[test] + fn store_save_create_new_file() { + fn setup_path() -> String { + let name = "store_save_create_new_file"; + let t = SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH) + .unwrap(); + let now = format!("{}-{:?}", name, t); + format_file_name(&now) + } + let buf = "It's a strange time to be created".as_bytes().to_vec(); + let path = setup_path(); + let mut s = Store::from(path.clone()); + s.buffer = buf.clone(); + assert_eq!(buf.clone(), s.buffer); + let mut resp = s.save(); + assert_eq!(true, resp.is_ok()); + + let mut s = Store::from(path); + let mut resp = s.open(); + assert_eq!(true, resp.is_ok()); + assert_eq!(buf, s.buffer); + } + + #[test] + fn store_save_updates_existing_file() { + let buf: Vec = "i exist".as_bytes().to_vec(); + fn setup_buffer(buf: Vec) -> String { + let p = setup_tmp_file("store_load_existing", Some(buf.clone())); + assert_eq!(true, p.is_ok()); + p.unwrap() + } + fn setup_store(path: String) -> Store { + let mut s = Store::from(path); + let resp = s.open(); + assert_eq!(true, resp.is_ok()); + s + } + let path = setup_buffer(buf.clone()); + let mut s = setup_store(path.clone()); + assert_eq!(buf.clone(), s.buffer); + + let new_buf = "I exist!".as_bytes().to_vec(); + s.buffer = new_buf.clone(); + let resp = s.save(); + assert_eq!(true, resp.is_ok()); + + let mut s = setup_store(path); + assert_ne!(buf, s.buffer); + assert_eq!(new_buf, s.buffer); + } }