Skip to content

Commit 22a3ddf

Browse files
jyn514Joshua Nelson
authored and
Joshua Nelson
committed
add unit tests
- add query parameter if it exists - don't call `env.frontend()` a dozen times - add tests
1 parent c7bb030 commit 22a3ddf

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

src/test/mod.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,16 @@ pub(crate) fn assert_redirect(path: &str, expected_target: &str, web: &TestFront
4343
let response = web.get(path).send()?;
4444
let status = response.status();
4545

46+
let mut tmp;
4647
let redirect_target = if expected_target.starts_with("https://") {
4748
response.url().as_str()
4849
} else {
49-
response.url().path()
50+
tmp = String::from(response.url().path());
51+
if let Some(query) = response.url().query() {
52+
tmp.push('?');
53+
tmp.push_str(query);
54+
}
55+
&tmp
5056
};
5157
// Either we followed a redirect to the wrong place, or there was no redirect
5258
if redirect_target != expected_target {

src/web/rustdoc.rs

+25-5
Original file line numberDiff line numberDiff line change
@@ -543,19 +543,22 @@ mod test {
543543
.rustdoc_file("dummy/blah/blah.html", b"lah")
544544
.create()?;
545545

546+
let web = env.frontend();
547+
546548
// check it works at all
547-
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/", &env.frontend())?;
549+
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/", &web)?;
548550
assert_eq!(redirect, "/dummy/0.2.0/dummy/index.html");
549551

550552
// check it keeps the subpage
551-
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/blah/", &env.frontend())?;
553+
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/blah/", &web)?;
552554
assert_eq!(redirect, "/dummy/0.2.0/dummy/blah/index.html");
553-
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/blah/blah.html", &env.frontend())?;
555+
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/blah/blah.html", &web)?;
554556
assert_eq!(redirect, "/dummy/0.2.0/dummy/blah/blah.html");
555557

556558
// check it searches for removed pages
557-
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/struct.will-be-deleted.html", &env.frontend())?;
558-
assert_eq!(redirect, "/dummy/0.2.0/dummy/?search=will-be-deleted");
559+
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/struct.will-be-deleted.html", &web)?;
560+
assert_eq!(redirect, "/dummy/0.2.0/dummy?search=will-be-deleted");
561+
assert_redirect("/dummy/0.2.0/dummy?search=will-be-deleted", "/dummy/0.2.0/dummy/?search=will-be-deleted", &web).unwrap();
559562

560563
Ok(())
561564
})
@@ -580,6 +583,23 @@ mod test {
580583
let redirect = latest_version_redirect("/dummy/0.1.0/x86_64-pc-windows-msvc/dummy/", web)?;
581584
assert_eq!(redirect, "/dummy/0.2.0/x86_64-pc-windows-msvc/dummy/index.html");
582585

586+
Ok(())
587+
})
588+
}
589+
#[test]
590+
fn redirect_latest_goes_to_crate_if_build_failed() {
591+
wrapper(|env| {
592+
let db = env.db();
593+
db.fake_release().name("dummy").version("0.1.0")
594+
.rustdoc_file("dummy/index.html", b"lah")
595+
.create().unwrap();
596+
db.fake_release().name("dummy").version("0.2.0")
597+
.build_result_successful(false).create().unwrap();
598+
599+
let web = env.frontend();
600+
let redirect = latest_version_redirect("/dummy/0.1.0/dummy/", web)?;
601+
assert_eq!(redirect, "/crate/dummy/0.2.0");
602+
583603
Ok(())
584604
})
585605
}

0 commit comments

Comments
 (0)