Skip to content

Commit cecc929

Browse files
committed
Increase coverage
1 parent 6481b1b commit cecc929

10 files changed

Lines changed: 218 additions & 14 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33
.idea
44
.vscode
55
.env
6+
*.xml
7+
*.html

cli/src/error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ mod tests {
3434

3535
#[test]
3636
fn test_cli_error_display_and_from() {
37-
let io_err = std::io::Error::new(std::io::ErrorKind::Other, "boom");
37+
let io_err = std::io::Error::other("boom");
3838
let err: CliError = io_err.into();
3939
assert!(format!("{}", err).contains("IO Error: boom"));
4040

core/src/error.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ pub type AppResult<T> = Result<T, AppError>;
3434
#[cfg(test)]
3535
mod tests {
3636
use super::*;
37-
use std::io::{Error, ErrorKind};
37+
use std::io::Error;
3838

3939
#[test]
4040
fn test_io_conversion() {
41-
let io_err = Error::new(ErrorKind::Other, "test");
41+
let io_err = Error::other("test");
4242
let app_err: AppError = io_err.into();
4343
assert!(matches!(app_err, AppError::Io(_)));
4444
}

core/src/openapi/parse/resolver/body.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1655,7 +1655,7 @@ mod tests {
16551655
.unwrap();
16561656
let enc = def.encoding.unwrap();
16571657
let file = enc.get("file").unwrap();
1658-
assert!(file.headers.get("Content-Type").is_none());
1658+
assert!(!file.headers.contains_key("Content-Type"));
16591659
assert_eq!(
16601660
file.headers.get("X-Trace-Id").map(|s| s.as_str()),
16611661
Some("Uuid")

core/src/openapi/parse/resolver/params.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1380,7 +1380,7 @@ mod tests {
13801380
let processed = process_parameter(&param, None, true).unwrap();
13811381
assert_eq!(processed.source, ParamSource::Query);
13821382
assert_eq!(processed.style, Some(ParamStyle::Form));
1383-
assert_eq!(processed.explode, true); // Form defaults to true
1383+
assert!(processed.explode); // Form defaults to true
13841384
}
13851385

13861386
#[test]
@@ -1773,7 +1773,7 @@ mod tests {
17731773
let processed = process_parameter(&param, None, true).unwrap();
17741774
assert_eq!(processed.source, ParamSource::Path);
17751775
assert_eq!(processed.style, Some(ParamStyle::Simple));
1776-
assert_eq!(processed.explode, false); // Simple defaults to false
1776+
assert!(!processed.explode); // Simple defaults to false
17771777
}
17781778

17791779
#[test]
@@ -1802,7 +1802,7 @@ mod tests {
18021802
let processed = process_parameter(&param, None, true).unwrap();
18031803
assert_eq!(processed.source, ParamSource::Cookie);
18041804
assert_eq!(processed.style, Some(ParamStyle::Cookie));
1805-
assert_eq!(processed.explode, true);
1805+
assert!(processed.explode);
18061806
}
18071807

18081808
#[test]
@@ -2164,7 +2164,7 @@ mod tests {
21642164

21652165
let processed = process_parameter(&param, None, true).unwrap();
21662166
assert_eq!(processed.style, Some(ParamStyle::Simple));
2167-
assert_eq!(processed.explode, true);
2167+
assert!(processed.explode);
21682168
}
21692169

21702170
#[test]
@@ -2194,7 +2194,7 @@ mod tests {
21942194
assert_eq!(resolved.len(), 1);
21952195
assert_eq!(resolved[0].name, "limit");
21962196
assert_eq!(resolved[0].style, Some(ParamStyle::Form));
2197-
assert_eq!(resolved[0].explode, false);
2197+
assert!(!resolved[0].explode);
21982198
}
21992199

22002200
#[test]
@@ -3097,7 +3097,6 @@ mod tests {
30973097
example: None,
30983098
examples: None,
30993099
raw,
3100-
..Default::default()
31013100
};
31023101

31033102
let processed = process_parameter(&param, Some(&components), true).unwrap();
@@ -3139,7 +3138,6 @@ mod tests {
31393138
example: None,
31403139
examples: None,
31413140
raw,
3142-
..Default::default()
31433141
};
31443142

31453143
let processed = process_parameter(&param, None, true).unwrap();
@@ -3183,7 +3181,6 @@ mod tests {
31833181
example: None,
31843182
examples: None,
31853183
raw,
3186-
..Default::default()
31873184
};
31883185

31893186
let processed = process_parameter(&param, None, true).unwrap();
@@ -3228,7 +3225,6 @@ mod tests {
32283225
example: None,
32293226
examples: None,
32303227
raw,
3231-
..Default::default()
32323228
};
32333229

32343230
let processed = process_parameter(&param, None, true).unwrap();

core/src/openapi/parse/routes/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1738,7 +1738,7 @@ paths:
17381738
assert_eq!(routes.len(), 1);
17391739
let scheme = routes[0].security[0]
17401740
.schemes
1741-
.get(0)
1741+
.first()
17421742
.and_then(|s| s.scheme.as_ref())
17431743
.expect("security scheme missing");
17441744

web/src/handlers/pet.rs

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,93 @@ pub async fn delete_pet(pet_id: web::Path<i64>, store: web::Data<PetStore>) -> i
6161
pub async fn upload_file() -> impl Responder {
6262
HttpResponse::Ok().finish()
6363
}
64+
#[cfg(test)]
65+
mod tests {
66+
use super::*;
67+
use actix_web::{test, App};
68+
69+
#[actix_web::test]
70+
async fn test_pet_handlers() {
71+
let store = web::Data::new(PetStore {
72+
pets: Mutex::new(HashMap::new()),
73+
});
74+
75+
let app = test::init_service(
76+
App::new()
77+
.app_data(store.clone())
78+
.route("/pet", web::post().to(add_pet))
79+
.route("/pet", web::put().to(update_pet))
80+
.route("/pet/findByStatus", web::get().to(find_pets_by_status))
81+
.route("/pet/findByTags", web::get().to(find_pets_by_tags))
82+
.route("/pet/{petId}", web::get().to(get_pet_by_id))
83+
.route("/pet/{petId}", web::post().to(update_pet_with_form))
84+
.route("/pet/{petId}", web::delete().to(delete_pet))
85+
.route("/pet/{petId}/uploadImage", web::post().to(upload_file)),
86+
)
87+
.await;
88+
89+
let req = test::TestRequest::post()
90+
.uri("/pet")
91+
.set_json(serde_json::json!({"id": 1, "name": "Fido"}))
92+
.to_request();
93+
let resp = test::call_service(&app, req).await;
94+
assert!(resp.status().is_success());
95+
96+
let req = test::TestRequest::post()
97+
.uri("/pet")
98+
.set_json(serde_json::json!({"name": "NoId"}))
99+
.to_request();
100+
let resp = test::call_service(&app, req).await;
101+
assert!(resp.status().is_client_error());
102+
103+
let req = test::TestRequest::put()
104+
.uri("/pet")
105+
.set_json(serde_json::json!({"id": 1, "name": "Fido Updated"}))
106+
.to_request();
107+
let resp = test::call_service(&app, req).await;
108+
assert!(resp.status().is_success());
109+
110+
let req = test::TestRequest::put()
111+
.uri("/pet")
112+
.set_json(serde_json::json!({"name": "NoId"}))
113+
.to_request();
114+
let resp = test::call_service(&app, req).await;
115+
assert!(resp.status().is_client_error());
116+
117+
let req = test::TestRequest::get()
118+
.uri("/pet/findByStatus")
119+
.to_request();
120+
let resp = test::call_service(&app, req).await;
121+
assert!(resp.status().is_success());
122+
123+
let req = test::TestRequest::get().uri("/pet/findByTags").to_request();
124+
let resp = test::call_service(&app, req).await;
125+
assert!(resp.status().is_success());
126+
127+
let req = test::TestRequest::get().uri("/pet/1").to_request();
128+
let resp = test::call_service(&app, req).await;
129+
assert!(resp.status().is_success());
130+
131+
let req = test::TestRequest::get().uri("/pet/2").to_request();
132+
let resp = test::call_service(&app, req).await;
133+
assert!(resp.status().is_client_error());
134+
135+
let req = test::TestRequest::post().uri("/pet/1").to_request();
136+
let resp = test::call_service(&app, req).await;
137+
assert!(resp.status().is_success());
138+
139+
let req = test::TestRequest::delete().uri("/pet/1").to_request();
140+
let resp = test::call_service(&app, req).await;
141+
assert!(resp.status().is_success());
142+
143+
let req = test::TestRequest::delete().uri("/pet/2").to_request();
144+
let resp = test::call_service(&app, req).await;
145+
assert!(resp.status().is_client_error());
146+
147+
let req = test::TestRequest::post()
148+
.uri("/pet/1/uploadImage")
149+
.to_request();
150+
let resp = test::call_service(&app, req).await;
151+
assert!(resp.status().is_success());
152+
}
153+
}

web/src/handlers/store.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,40 @@ pub async fn get_order_by_id() -> impl Responder {
1212
pub async fn delete_order() -> impl Responder {
1313
HttpResponse::Ok().finish()
1414
}
15+
#[cfg(test)]
16+
mod tests {
17+
use super::*;
18+
use actix_web::{test, web, App};
19+
20+
#[actix_web::test]
21+
async fn test_store_handlers() {
22+
let app = test::init_service(
23+
App::new()
24+
.route("/store/inventory", web::get().to(get_inventory))
25+
.route("/store/order", web::post().to(place_order))
26+
.route("/store/order/{orderId}", web::get().to(get_order_by_id))
27+
.route("/store/order/{orderId}", web::delete().to(delete_order)),
28+
)
29+
.await;
30+
31+
let req = test::TestRequest::get()
32+
.uri("/store/inventory")
33+
.to_request();
34+
let resp = test::call_service(&app, req).await;
35+
assert!(resp.status().is_success());
36+
37+
let req = test::TestRequest::post().uri("/store/order").to_request();
38+
let resp = test::call_service(&app, req).await;
39+
assert!(resp.status().is_success());
40+
41+
let req = test::TestRequest::get().uri("/store/order/1").to_request();
42+
let resp = test::call_service(&app, req).await;
43+
assert!(resp.status().is_success());
44+
45+
let req = test::TestRequest::delete()
46+
.uri("/store/order/1")
47+
.to_request();
48+
let resp = test::call_service(&app, req).await;
49+
assert!(resp.status().is_success());
50+
}
51+
}

web/src/handlers/user.rs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,67 @@ pub async fn create_users_with_array_input(
2828
) -> impl Responder {
2929
HttpResponse::NotImplemented().finish()
3030
}
31+
#[cfg(test)]
32+
mod tests {
33+
use super::*;
34+
use actix_web::{test, App};
35+
36+
#[actix_web::test]
37+
async fn test_user_handlers() {
38+
let app = test::init_service(
39+
App::new()
40+
.route("/user", web::post().to(create_user))
41+
.route(
42+
"/user/createWithArray",
43+
web::post().to(create_users_with_list_input),
44+
)
45+
.route("/user/login", web::get().to(login_user))
46+
.route("/user/logout", web::get().to(logout_user))
47+
.route("/user/{username}", web::get().to(get_user_by_name))
48+
.route("/user/{username}", web::put().to(update_user))
49+
.route("/user/{username}", web::delete().to(delete_user))
50+
.route(
51+
"/user/createWithArrayReal",
52+
web::post().to(create_users_with_array_input),
53+
),
54+
)
55+
.await;
56+
57+
let req = test::TestRequest::post().uri("/user").to_request();
58+
let resp = test::call_service(&app, req).await;
59+
assert!(resp.status().is_success());
60+
61+
let req = test::TestRequest::post()
62+
.uri("/user/createWithArray")
63+
.to_request();
64+
let resp = test::call_service(&app, req).await;
65+
assert!(resp.status().is_success());
66+
67+
let req = test::TestRequest::get().uri("/user/login").to_request();
68+
let resp = test::call_service(&app, req).await;
69+
assert!(resp.status().is_success());
70+
71+
let req = test::TestRequest::get().uri("/user/logout").to_request();
72+
let resp = test::call_service(&app, req).await;
73+
assert!(resp.status().is_success());
74+
75+
let req = test::TestRequest::get().uri("/user/john").to_request();
76+
let resp = test::call_service(&app, req).await;
77+
assert!(resp.status().is_success());
78+
79+
let req = test::TestRequest::put().uri("/user/john").to_request();
80+
let resp = test::call_service(&app, req).await;
81+
assert!(resp.status().is_success());
82+
83+
let req = test::TestRequest::delete().uri("/user/john").to_request();
84+
let resp = test::call_service(&app, req).await;
85+
assert!(resp.status().is_success());
86+
87+
let req = test::TestRequest::post()
88+
.uri("/user/createWithArrayReal")
89+
.set_json(serde_json::json!([]))
90+
.to_request();
91+
let resp = test::call_service(&app, req).await;
92+
assert_eq!(resp.status().as_u16(), 501);
93+
}
94+
}

web/src/lib.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,21 @@ mod tests {
8282
use super::*;
8383
use actix_web::{test, App};
8484

85+
#[actix_web::test]
86+
async fn test_config() {
87+
let app = test::init_service(App::new().configure(config).app_data(web::Data::new(
88+
crate::handlers::pet::PetStore {
89+
pets: std::sync::Mutex::new(std::collections::HashMap::new()),
90+
},
91+
)))
92+
.await;
93+
let req = test::TestRequest::get()
94+
.uri("/store/inventory")
95+
.to_request();
96+
let resp = test::call_service(&app, req).await;
97+
assert!(resp.status().is_success());
98+
}
99+
85100
#[actix_web::test]
86101
async fn test_health_check() {
87102
let app = test::init_service(App::new().service(health_check)).await;

0 commit comments

Comments
 (0)