Skip to content

Commit 3f74b10

Browse files
committed
Extract functions into test-utils
1 parent cc5494e commit 3f74b10

File tree

6 files changed

+134
-157
lines changed

6 files changed

+134
-157
lines changed

lychee-bin/src/formatters/response/color.rs

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,13 @@ mod tests {
7272
use http::StatusCode;
7373
use lychee_lib::{ErrorKind, Status, Uri};
7474
use pretty_assertions::assert_eq;
75+
use test_utils::mock_response_body;
7576

7677
/// Helper function to strip ANSI color codes for tests
7778
fn strip_ansi_codes(s: &str) -> String {
7879
console::strip_ansi_codes(s).to_string()
7980
}
8081

81-
// Helper function to create a ResponseBody with a given status and URI
82-
fn mock_response_body(status: Status, uri: &str) -> ResponseBody {
83-
ResponseBody {
84-
uri: Uri::try_from(uri).unwrap(),
85-
status,
86-
}
87-
}
88-
8982
#[test]
9083
fn test_format_status() {
9184
let status = Status::Ok(StatusCode::OK);
@@ -95,15 +88,15 @@ mod tests {
9588
#[test]
9689
fn test_format_response_with_ok_status() {
9790
let formatter = ColorFormatter;
98-
let body = mock_response_body(Status::Ok(StatusCode::OK), "https://example.com");
91+
let body = mock_response_body!(Status::Ok(StatusCode::OK), "https://example.com");
9992
let formatted_response = strip_ansi_codes(&formatter.format_response(&body));
10093
assert_eq!(formatted_response, " [200] https://example.com/");
10194
}
10295

10396
#[test]
10497
fn test_format_response_with_error_status() {
10598
let formatter = ColorFormatter;
106-
let body = mock_response_body(
99+
let body = mock_response_body!(
107100
Status::Error(ErrorKind::TestError),
108101
"https://example.com/404",
109102
);
@@ -116,15 +109,15 @@ mod tests {
116109
let formatter = ColorFormatter;
117110
let long_uri =
118111
"https://example.com/some/very/long/path/to/a/resource/that/exceeds/normal/lengths";
119-
let body = mock_response_body(Status::Ok(StatusCode::OK), long_uri);
112+
let body = mock_response_body!(Status::Ok(StatusCode::OK), long_uri);
120113
let formatted_response = strip_ansi_codes(&formatter.format_response(&body));
121114
assert!(formatted_response.contains(long_uri));
122115
}
123116

124117
#[test]
125118
fn test_detailed_response_output() {
126119
let formatter = ColorFormatter;
127-
let body = mock_response_body(
120+
let body = mock_response_body!(
128121
Status::Error(ErrorKind::TestError),
129122
"https://example.com/404",
130123
);

lychee-bin/src/formatters/response/emoji.rs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,26 +41,19 @@ mod emoji_tests {
4141
use super::*;
4242
use http::StatusCode;
4343
use lychee_lib::{ErrorKind, Redirects, Status, Uri};
44-
45-
// Helper function to create a ResponseBody with a given status and URI
46-
fn mock_response_body(status: Status, uri: &str) -> ResponseBody {
47-
ResponseBody {
48-
uri: Uri::try_from(uri).unwrap(),
49-
status,
50-
}
51-
}
44+
use test_utils::mock_response_body;
5245

5346
#[test]
5447
fn test_format_response_with_ok_status() {
5548
let formatter = EmojiFormatter;
56-
let body = mock_response_body(Status::Ok(StatusCode::OK), "https://example.com");
49+
let body = mock_response_body!(Status::Ok(StatusCode::OK), "https://example.com");
5750
assert_eq!(formatter.format_response(&body), "✅ https://example.com/");
5851
}
5952

6053
#[test]
6154
fn test_format_response_with_error_status() {
6255
let formatter = EmojiFormatter;
63-
let body = mock_response_body(
56+
let body = mock_response_body!(
6457
Status::Error(ErrorKind::TestError),
6558
"https://example.com/404",
6659
);
@@ -73,7 +66,7 @@ mod emoji_tests {
7366
#[test]
7467
fn test_format_response_with_excluded_status() {
7568
let formatter = EmojiFormatter;
76-
let body = mock_response_body(Status::Excluded, "https://example.com/not-checked");
69+
let body = mock_response_body!(Status::Excluded, "https://example.com/not-checked");
7770
assert_eq!(
7871
formatter.format_response(&body),
7972
"🚫 https://example.com/not-checked"
@@ -83,7 +76,7 @@ mod emoji_tests {
8376
#[test]
8477
fn test_format_response_with_redirect_status() {
8578
let formatter = EmojiFormatter;
86-
let body = mock_response_body(
79+
let body = mock_response_body!(
8780
Status::Redirected(StatusCode::MOVED_PERMANENTLY, Redirects::none()),
8881
"https://example.com/redirect",
8982
);
@@ -96,7 +89,7 @@ mod emoji_tests {
9689
#[test]
9790
fn test_format_response_with_unknown_status_code() {
9891
let formatter = EmojiFormatter;
99-
let body = mock_response_body(
92+
let body = mock_response_body!(
10093
Status::UnknownStatusCode(StatusCode::from_u16(999).unwrap()),
10194
"https://example.com/unknown",
10295
);
@@ -109,7 +102,7 @@ mod emoji_tests {
109102
#[test]
110103
fn test_detailed_response_output() {
111104
let formatter = EmojiFormatter;
112-
let body = mock_response_body(
105+
let body = mock_response_body!(
113106
Status::Error(ErrorKind::TestError),
114107
"https://example.com/404",
115108
);

lychee-bin/src/formatters/response/plain.rs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,12 @@ mod plain_tests {
2424
use http::StatusCode;
2525
use lychee_lib::Redirects;
2626
use lychee_lib::{ErrorKind, Status, Uri};
27-
28-
// Helper function to create a ResponseBody with a given status and URI
29-
fn mock_response_body(status: Status, uri: &str) -> ResponseBody {
30-
ResponseBody {
31-
uri: Uri::try_from(uri).unwrap(),
32-
status,
33-
}
34-
}
27+
use test_utils::mock_response_body;
3528

3629
#[test]
3730
fn test_format_response_with_ok_status() {
3831
let formatter = PlainFormatter;
39-
let body = mock_response_body(Status::Ok(StatusCode::OK), "https://example.com");
32+
let body = mock_response_body!(Status::Ok(StatusCode::OK), "https://example.com");
4033
assert_eq!(
4134
formatter.format_response(&body),
4235
"[200] https://example.com/"
@@ -46,7 +39,7 @@ mod plain_tests {
4639
#[test]
4740
fn test_format_response_with_error_status() {
4841
let formatter = PlainFormatter;
49-
let body = mock_response_body(
42+
let body = mock_response_body!(
5043
Status::Error(ErrorKind::TestError),
5144
"https://example.com/404",
5245
);
@@ -59,7 +52,7 @@ mod plain_tests {
5952
#[test]
6053
fn test_format_response_with_excluded_status() {
6154
let formatter = PlainFormatter;
62-
let body = mock_response_body(Status::Excluded, "https://example.com/not-checked");
55+
let body = mock_response_body!(Status::Excluded, "https://example.com/not-checked");
6356
assert_eq!(
6457
formatter.format_response(&body),
6558
"[EXCLUDED] https://example.com/not-checked"
@@ -69,7 +62,7 @@ mod plain_tests {
6962
#[test]
7063
fn test_format_response_with_redirect_status() {
7164
let formatter = PlainFormatter;
72-
let body = mock_response_body(
65+
let body = mock_response_body!(
7366
Status::Redirected(
7467
StatusCode::MOVED_PERMANENTLY,
7568
Redirects::from(vec![
@@ -88,7 +81,7 @@ mod plain_tests {
8881
#[test]
8982
fn test_format_response_with_unknown_status_code() {
9083
let formatter = PlainFormatter;
91-
let body = mock_response_body(
84+
let body = mock_response_body!(
9285
Status::UnknownStatusCode(StatusCode::from_u16(999).unwrap()),
9386
"https://example.com/unknown",
9487
);

lychee-bin/src/formatters/response/task.rs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,12 @@ mod task_tests {
1414
use super::*;
1515
use http::StatusCode;
1616
use lychee_lib::{ErrorKind, Redirects, Status, Uri};
17-
18-
// Helper function to create a ResponseBody with a given status and URI
19-
fn mock_response_body(status: Status, uri: &str) -> ResponseBody {
20-
ResponseBody {
21-
uri: Uri::try_from(uri).unwrap(),
22-
status,
23-
}
24-
}
17+
use test_utils::mock_response_body;
2518

2619
#[test]
2720
fn test_format_response_with_ok_status() {
2821
let formatter = TaskFormatter;
29-
let body = mock_response_body(Status::Ok(StatusCode::OK), "https://example.com");
22+
let body = mock_response_body!(Status::Ok(StatusCode::OK), "https://example.com");
3023
assert_eq!(
3124
formatter.format_response(&body),
3225
"- [ ] [200] https://example.com/"
@@ -36,7 +29,7 @@ mod task_tests {
3629
#[test]
3730
fn test_format_response_with_error_status() {
3831
let formatter = TaskFormatter;
39-
let body = mock_response_body(
32+
let body = mock_response_body!(
4033
Status::Error(ErrorKind::TestError),
4134
"https://example.com/404",
4235
);
@@ -49,7 +42,7 @@ mod task_tests {
4942
#[test]
5043
fn test_format_response_with_excluded_status() {
5144
let formatter = TaskFormatter;
52-
let body = mock_response_body(Status::Excluded, "https://example.com/not-checked");
45+
let body = mock_response_body!(Status::Excluded, "https://example.com/not-checked");
5346
assert_eq!(
5447
formatter.format_response(&body),
5548
"- [ ] [EXCLUDED] https://example.com/not-checked"
@@ -59,7 +52,7 @@ mod task_tests {
5952
#[test]
6053
fn test_format_response_with_redirect_status() {
6154
let formatter = TaskFormatter;
62-
let body = mock_response_body(
55+
let body = mock_response_body!(
6356
Status::Redirected(
6457
StatusCode::MOVED_PERMANENTLY,
6558
Redirects::from(vec![
@@ -78,7 +71,7 @@ mod task_tests {
7871
#[test]
7972
fn test_format_response_with_unknown_status_code() {
8073
let formatter = TaskFormatter;
81-
let body = mock_response_body(
74+
let body = mock_response_body!(
8275
Status::UnknownStatusCode(StatusCode::from_u16(999).unwrap()),
8376
"https://example.com/unknown",
8477
);

0 commit comments

Comments
 (0)