Skip to content

Commit bde5429

Browse files
authored
test: move triggers + more tests (#83)
1 parent f2d94f8 commit bde5429

File tree

18 files changed

+482
-408
lines changed

18 files changed

+482
-408
lines changed

Cargo.lock

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

Cargo.toml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ serde_json = "1.0.128"
3131

3232
# Tracing
3333
tracing = "0.1.40"
34-
tracing-subscriber = { version = "0.3.18", features = ["env-filter", "fmt", "local-time", "time"] }
34+
tracing-subscriber = { version = "0.3.18", features = [
35+
"env-filter",
36+
"fmt",
37+
"local-time",
38+
"time",
39+
] }
3540
tracing-appender = "0.2.3"
3641

3742
# Database
@@ -78,3 +83,7 @@ regex = "1.10.6"
7883
# Command-line arguments
7984
clap = { version = "4.5.18", features = ["derive"] }
8085
clap_derive = { version = "4.5.18" }
86+
87+
[dev-dependencies]
88+
# Standardize logging output
89+
tracing-test = "0.2.5"

src/main.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ use utils::cli::Args;
3030
use utils::logs::setup_logs;
3131
use utils::settings::Settings;
3232

33+
#[doc(hidden)]
34+
mod tests;
35+
3336
/// Web server routes
3437
pub mod routes;
3538

src/routes/list.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ struct ListQuery {
1818

1919
impl Default for ListQuery {
2020
fn default() -> Self {
21-
ListQuery {
21+
Self {
2222
limit: 10,
2323
page: 1,
2424
sort: None,

src/service/targets/autopulse.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::{
44
};
55
use reqwest::header;
66
use serde::Deserialize;
7-
use tracing::{error, trace};
7+
use tracing::{debug, error};
88

99
#[derive(Clone, Deserialize)]
1010
pub struct Autopulse {
@@ -44,9 +44,7 @@ impl Autopulse {
4444

4545
let res = client.get(url.to_string()).send().await?;
4646

47-
if res.status().is_success() {
48-
trace!("scanned file: {}", ev.file_path);
49-
} else {
47+
if !res.status().is_success() {
5048
let body = res.text().await?;
5149
return Err(anyhow::anyhow!("unable to scan file: {}", body));
5250
}
@@ -63,6 +61,7 @@ impl TargetProcess for Autopulse {
6361
match self.scan(ev).await {
6462
Ok(_) => {
6563
succeded.push(ev.id.clone());
64+
debug!("file scanned: {}", ev.file_path);
6665
}
6766
Err(e) => {
6867
error!("error scanning file: {}", e);

src/service/targets/plex.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::{db::models::ScanEvent, utils::settings::TargetProcess};
22
use reqwest::header;
33
use serde::Deserialize;
4-
use tracing::{error, trace};
4+
use tracing::{debug, error, trace};
55

66
#[derive(Deserialize, Clone)]
77
pub struct Plex {
@@ -235,7 +235,7 @@ impl TargetProcess for Plex {
235235
if let Some(library) = self.in_library(&libraries, ev)? {
236236
match self.scan(ev, &library).await {
237237
Ok(_) => {
238-
trace!("scanned file '{}'", ev.file_path);
238+
debug!("scanned file '{}'", ev.file_path);
239239

240240
if self.analyze || self.refresh {
241241
match self.get_item(&library, &ev.file_path).await {
@@ -247,7 +247,7 @@ impl TargetProcess for Plex {
247247
if self.analyze {
248248
match self.analyze_item(&item.key).await {
249249
Ok(_) => {
250-
trace!("analyzed metadata '{}'", item.key);
250+
debug!("analyzed metadata '{}'", item.key);
251251
}
252252
Err(e) => {
253253
error!(
@@ -263,7 +263,7 @@ impl TargetProcess for Plex {
263263
if self.refresh {
264264
match self.refresh_item(&item.key).await {
265265
Ok(_) => {
266-
trace!("refreshed metadata '{}'", item.key);
266+
debug!("refreshed metadata '{}'", item.key);
267267
}
268268
Err(e) => {
269269
error!(

src/service/triggers/lidarr.rs

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -45,65 +45,3 @@ impl TriggerRequest for LidarrRequest {
4545
}
4646
}
4747
}
48-
49-
#[cfg(test)]
50-
mod tests {
51-
use super::*;
52-
53-
#[test]
54-
fn test_from_json_test() {
55-
let json = serde_json::json!({
56-
"eventType": "Test"
57-
});
58-
59-
let lidarr_request = LidarrRequest::from_json(json).unwrap();
60-
61-
assert!(matches!(lidarr_request, LidarrRequest::Test {}));
62-
}
63-
64-
#[test]
65-
fn test_from_json_download() {
66-
let json = serde_json::json!({
67-
"eventType": "Download",
68-
"trackFiles": [
69-
{ "path": "/Music/blink‐182/California (2016)/CD 01/01 - Cynical.mp3" },
70-
{ "path": "/Music/blink‐182/California (2016)/CD 01/02 - Bored to Death.mp3" },
71-
{ "path": "/Music/blink‐182/California (2016)/CD 02/01 - Parking Lot.mp3" },
72-
{ "path": "/Music/blink‐182/California (2016)/CD 02/02 - Misery.mp3" }
73-
],
74-
"artist": {
75-
"name": "blink-182",
76-
"path": "/Music/blink-182"
77-
}
78-
});
79-
80-
let lidarr_request = LidarrRequest::from_json(json).unwrap();
81-
82-
if let LidarrRequest::Download { .. } = lidarr_request {
83-
assert_eq!(
84-
lidarr_request.paths(),
85-
vec![
86-
(
87-
"/Music/blink‐182/California (2016)/CD 01/01 - Cynical.mp3".to_string(),
88-
true
89-
),
90-
(
91-
"/Music/blink‐182/California (2016)/CD 01/02 - Bored to Death.mp3"
92-
.to_string(),
93-
true
94-
),
95-
(
96-
"/Music/blink‐182/California (2016)/CD 02/01 - Parking Lot.mp3".to_string(),
97-
true
98-
),
99-
(
100-
"/Music/blink‐182/California (2016)/CD 02/02 - Misery.mp3".to_string(),
101-
true
102-
),
103-
]
104-
);
105-
} else {
106-
panic!("Unexpected variant");
107-
}
108-
}
109-
}

src/service/triggers/notify.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ impl Notify {
4545
tx.send(path).map_err(|e| anyhow::anyhow!(e))
4646
}
4747

48-
fn async_watcher(
48+
pub fn async_watcher(
4949
&self,
5050
) -> notify::Result<(RecommendedWatcher, UnboundedReceiver<notify::Result<Event>>)> {
5151
let (tx, rx) = unbounded_channel();

src/service/triggers/radarr.rs

Lines changed: 2 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ pub struct Radarr {
2020
#[serde(rename_all = "camelCase")]
2121
#[doc(hidden)]
2222
pub struct MovieFile {
23-
relative_path: String,
23+
pub relative_path: String,
2424
}
2525

2626
#[derive(Deserialize, Clone)]
2727
#[serde(rename_all = "camelCase")]
2828
#[doc(hidden)]
2929
pub struct Movie {
30-
folder_path: String,
30+
pub folder_path: String,
3131
}
3232

3333
#[derive(Deserialize, Clone)]
@@ -78,120 +78,3 @@ impl TriggerRequest for RadarrRequest {
7878
}
7979
}
8080
}
81-
82-
#[cfg(test)]
83-
mod tests {
84-
use super::*;
85-
86-
#[test]
87-
fn test_from_json_test() {
88-
let json = serde_json::json!({
89-
"eventType": "Test"
90-
});
91-
92-
let radarr_request = RadarrRequest::from_json(json).unwrap();
93-
94-
assert!(matches!(radarr_request, RadarrRequest::Test {}));
95-
}
96-
97-
#[test]
98-
fn test_from_json_download() {
99-
let json = serde_json::json!({
100-
"eventType": "Download",
101-
"movieFile": {
102-
"relativePath": "Interstellar.2014.UHD.BluRay.2160p.REMUX.mkv"
103-
},
104-
"movie": {
105-
"folderPath": "/Movies/Interstellar (2014)"
106-
}
107-
});
108-
109-
let radarr_request = RadarrRequest::from_json(json).unwrap();
110-
111-
if let RadarrRequest::Download { movie_file, movie } = radarr_request.clone() {
112-
assert_eq!(
113-
movie_file.relative_path,
114-
"Interstellar.2014.UHD.BluRay.2160p.REMUX.mkv"
115-
);
116-
assert_eq!(movie.folder_path, "/Movies/Interstellar (2014)");
117-
assert_eq!(
118-
radarr_request.paths(),
119-
vec![(
120-
"/Movies/Interstellar (2014)/Interstellar.2014.UHD.BluRay.2160p.REMUX.mkv"
121-
.to_string(),
122-
true
123-
)]
124-
);
125-
} else {
126-
panic!("Unexpected variant");
127-
}
128-
}
129-
130-
#[test]
131-
fn test_from_json_movie_delete() {
132-
let json = serde_json::json!({
133-
"eventType": "MovieDelete",
134-
"movie": {
135-
"folderPath": "/Movies/Wonder Woman 1984 (2020)"
136-
}
137-
});
138-
139-
let radarr_request = RadarrRequest::from_json(json).unwrap();
140-
141-
if let RadarrRequest::MovieDelete { movie } = radarr_request.clone() {
142-
assert_eq!(movie.folder_path, "/Movies/Wonder Woman 1984 (2020)");
143-
assert_eq!(radarr_request.paths(), vec![(movie.folder_path, false)]);
144-
} else {
145-
panic!("Unexpected variant");
146-
}
147-
}
148-
149-
#[test]
150-
fn test_from_json_movie_file_delete() {
151-
let json = serde_json::json!({
152-
"eventType": "MovieFileDelete",
153-
"movieFile": {
154-
"relativePath": "Tenet.2020.mkv"
155-
},
156-
"movie": {
157-
"folderPath": "/Movies/Tenet (2020)"
158-
}
159-
});
160-
161-
let radarr_request = RadarrRequest::from_json(json).unwrap();
162-
163-
if let RadarrRequest::MovieFileDelete { movie_file, movie } = radarr_request.clone() {
164-
assert_eq!(movie_file.relative_path, "Tenet.2020.mkv");
165-
assert_eq!(movie.folder_path, "/Movies/Tenet (2020)");
166-
167-
assert_eq!(
168-
radarr_request.paths(),
169-
vec![("/Movies/Tenet (2020)/Tenet.2020.mkv".to_string(), false)]
170-
);
171-
} else {
172-
panic!("Unexpected variant");
173-
}
174-
}
175-
176-
#[test]
177-
fn test_from_json_rename() {
178-
let json = serde_json::json!({
179-
"eventType": "Rename",
180-
"movie": {
181-
"folderPath": "/Movies/Deadpool (2016)"
182-
}
183-
});
184-
185-
let radarr_request = RadarrRequest::from_json(json).unwrap();
186-
187-
if let RadarrRequest::Rename { movie } = radarr_request.clone() {
188-
assert_eq!(movie.folder_path, "/Movies/Deadpool (2016)");
189-
assert_eq!(
190-
radarr_request.paths(),
191-
vec![("/Movies/Deadpool (2016)".to_string(), true)]
192-
);
193-
} else {
194-
panic!("Unexpected variant");
195-
}
196-
}
197-
}

0 commit comments

Comments
 (0)