aboutsummaryrefslogtreecommitdiffstats
path: root/src/tests.rs
diff options
context:
space:
mode:
authorTeddy Wing2016-04-24 09:41:02 -0400
committerTeddy Wing2016-04-24 09:41:02 -0400
commit5e18a1e5a34cac5876d43796c36e6c1369658c6e (patch)
tree67684ab4f153eb8c01fc25f2c77461d26bab3932 /src/tests.rs
parent15759804bd3be99fc6374ee993038440267fdfb5 (diff)
parent79e78aaa7c0c77064264ffdad0c3172aa0f5c376 (diff)
downloadmutt-alias-auto-add-5e18a1e5a34cac5876d43796c36e6c1369658c6e.tar.bz2
Merge branch 'append-alias-even-if-it-doesn,t-already-exist'
Diffstat (limited to 'src/tests.rs')
-rw-r--r--src/tests.rs58
1 files changed, 41 insertions, 17 deletions
diff --git a/src/tests.rs b/src/tests.rs
index 708121e..15b5ae8 100644
--- a/src/tests.rs
+++ b/src/tests.rs
@@ -122,31 +122,55 @@ fn update_alias_id_increments_alias() {
}
-#[test]
-fn alias_write_to_file_must_write_given_alias_to_file() {
- let mut alias = update_alias_id_sample_alias();
-
+fn alias_write_to_file_helper<F>(alias: &mut Alias, filename: &str, f: F) -> String
+ where F: Fn(&Alias, &str) {
// Create a new test file
- let test_file = "./testdata/write_to_file";
- fs::copy("./testdata/aliases", test_file).expect("Alias file copy failed");
+ let test_file = format!("./testdata/{}", filename);
+ fs::copy("./testdata/aliases", &test_file).expect("Alias file copy failed");
- // Write a duplicate alias so that `write_to_file` is able to append a
- // new one
- let mut f = OpenOptions::new().append(true).open(test_file)
- .expect("Failed to open test file for appending");
- writeln!(f, "{}", Alias { email: "derpy@home.pv".to_owned(), .. alias.clone() }
- .to_string())
- .expect("Failed to append matching alias");
+ f(alias, &test_file);
// Write our new alias to the file
- alias.write_to_file(test_file).expect("`write_to_file` failed");
+ alias.write_to_file(&test_file).expect("`write_to_file` failed");
// Get the file's contents for testing
- let mut f = File::open(test_file).expect("Failed to open test file");
+ let mut f = File::open(&test_file).expect("Failed to open test file");
let mut file_contents = String::new();
f.read_to_string(&mut file_contents).expect("Failed to read test file contents");
let file_contents: Vec<&str> = file_contents.split('\n').collect();
- fs::remove_file(test_file).expect("Failed to delete test file");
+ fs::remove_file(&test_file).expect("Failed to delete test file");
+
+ file_contents[file_contents.len() - 2].to_string()
+}
+
+#[test]
+fn alias_write_to_file_must_write_unique_alias_to_file_if_one_already_exists() {
+ let mut alias = update_alias_id_sample_alias();
+ let alias_line = alias_write_to_file_helper(
+ &mut alias,
+ "alias_write_to_file_must_write_unique_alias_to_file_if_one_already_exists",
+ |alias: &Alias, filename: &str| {
+ // Write a duplicate alias so that `write_to_file` is able to append a
+ // new one
+ let mut f = OpenOptions::new().append(true).open(filename)
+ .expect("Failed to open test file for appending");
+ writeln!(f, "{}", Alias { email: "derpy@home.pv".to_owned(), .. alias.clone() }
+ .to_string())
+ .expect("Failed to append matching alias");
+ }
+ );
+
+ assert_eq!(alias.to_string(), alias_line);
+}
+
+#[test]
+#[allow(unused_variables)]
+fn alias_write_to_file_must_write_given_alias_to_file() {
+ let mut alias = update_alias_id_sample_alias();
+ let alias_line = alias_write_to_file_helper(
+ &mut alias,
+ "alias_write_to_file_must_write_given_alias_to_file",
+ |alias: &Alias, filename: &str| {});
- assert_eq!(alias.to_string(), file_contents[file_contents.len() - 2]);
+ assert_eq!(alias.to_string(), alias_line);
}