Skip to content

Commit da1f235

Browse files
GuillaumeGomezsyphar
authored andcommitted
Add unit test for search crates not on docs.rs
1 parent 0d45c8b commit da1f235

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

src/web/releases.rs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2100,4 +2100,59 @@ mod tests {
21002100
Ok(())
21012101
});
21022102
}
2103+
2104+
#[test]
2105+
fn crates_not_on_docsrs() {
2106+
async_wrapper(|env| async move {
2107+
let mut crates_io = mockito::Server::new_async().await;
2108+
env.override_config(|config| {
2109+
config.registry_api_host = crates_io.url().parse().unwrap();
2110+
});
2111+
2112+
let web = env.web_app().await;
2113+
env.async_fake_release()
2114+
.await
2115+
.name("some_random_crate")
2116+
.create_async()
2117+
.await?;
2118+
2119+
let _m = crates_io
2120+
.mock("GET", "/api/v1/crates")
2121+
.match_query(Matcher::AllOf(vec![
2122+
Matcher::UrlEncoded("q".into(), "some_random_crate".into()),
2123+
Matcher::UrlEncoded("per_page".into(), "30".into()),
2124+
]))
2125+
.with_status(200)
2126+
.with_header("content-type", "application/json")
2127+
.with_body(
2128+
json!({
2129+
"crates": [
2130+
{ "name": "some_random_crate" },
2131+
{ "name": "some_random_crate2" },
2132+
{ "name": "some_random_crate3" },
2133+
],
2134+
"meta": {
2135+
"next_page": "null",
2136+
"prev_page": "null",
2137+
}
2138+
})
2139+
.to_string(),
2140+
)
2141+
.create_async()
2142+
.await;
2143+
2144+
let response = web.get("/releases/search?query=some_random_crate").await?;
2145+
assert!(response.status().is_success());
2146+
2147+
let page = kuchikiki::parse_html().one(response.text().await?);
2148+
2149+
assert_eq!(page.select("div.name.not-available").unwrap().count(), 2);
2150+
assert_eq!(
2151+
page.select("div.name:not(.not-available)").unwrap().count(),
2152+
1
2153+
);
2154+
2155+
Ok(())
2156+
})
2157+
}
21032158
}

0 commit comments

Comments
 (0)