Skip to content
This repository was archived by the owner on Jul 3, 2023. It is now read-only.

Commit 5895891

Browse files
committed
Add a stub for the integration test testing --delete.
We don't actually delete anything, nor do we test that we do. We simply add the flag and run the cli with that flag.
1 parent 5545dcc commit 5895891

File tree

4 files changed

+100
-13
lines changed

4 files changed

+100
-13
lines changed

Cargo.lock

Lines changed: 59 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@ openssl = { version = "0.10", features = ["vendored"] }
2727

2828
[dev-dependencies]
2929
assert_cmd = "2.0"
30+
dotenv = "0.15.0"
31+
mockall = "0.11.2"
3032
predicates = "2.1"

src/cli_options.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ impl CliOptions {
2020
let mut opts = Options::new();
2121

2222
opts.optflag("h", "help", "print this help menu");
23-
opts.optflag("r", "register", "register hunter2 with your instance.");
2423
opts.optflag("f", "follow", "follow live updates.");
2524
opts.optflag("p", "past", "fetch past updates.");
2625
opts.optflag("m", "meili", "output to meilisearch");
26+
opts.optflag("r", "register", "register hunter2 with your instance.");
27+
opts.optopt("d", "delete", "remove an entry from the index", "TOOT_URL");
2728

2829
let matches = match opts.parse(&args[1..]) {
2930
Ok(m) => m,

tests/integration_tests.rs

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,47 @@
1-
use assert_cmd::prelude::*; // Add methods on commands
2-
use predicates::prelude::*; // Used for writing assertions
3-
use std::process::Command; // Run programs
1+
use assert_cmd::prelude::*;
2+
use dotenv;
3+
use predicates::prelude::*;
4+
use std::process::Command;
5+
use std::panic;
46

57
#[test]
6-
fn env_vars_not_set() -> Result<(), Box<dyn std::error::Error>> {
7-
let mut cmd = Command::cargo_bin("hunter2")?;
8+
fn env_vars_not_set() {
9+
let mut cmd = Command::cargo_bin("hunter2").unwrap();
810

911
cmd.env_remove("TAG_FILE");
1012

1113
cmd.assert().failure().stderr(predicate::str::contains(
1214
"Failed to load env var. Did you export .env?",
1315
));
16+
}
17+
18+
#[test]
19+
fn delete_from_index() {
20+
run_test(|| {
21+
let mut cmd = Command::cargo_bin("hunter2").unwrap();
22+
cmd.arg("--delete")
23+
.arg("https://example.com/@foo@example.com/1337");
24+
25+
cmd.assert().success();
26+
});
27+
}
28+
29+
fn run_test<T>(test: T) -> ()
30+
where
31+
T: FnOnce() -> () + panic::UnwindSafe,
32+
{
33+
setup();
34+
35+
let result = panic::catch_unwind(|| test());
36+
37+
teardown();
38+
39+
assert!(result.is_ok());
40+
}
41+
42+
fn setup() {
43+
dotenv::from_filename(".env.test").expect("Attempt to load .env.test");
44+
}
1445

15-
Ok(())
46+
fn teardown() {
1647
}

0 commit comments

Comments
 (0)