Skip to content

Commit 1934869

Browse files
committed
add unit tests
- add query parameter if it exists - don't call `env.frontend()` a dozen times - add tests
1 parent 095e24f commit 1934869

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
@@ -545,19 +545,22 @@ mod test {
545545
.rustdoc_file("dummy/blah/blah.html", b"lah")
546546
.create()?;
547547

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

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

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

562565
Ok(())
563566
})
@@ -582,6 +585,23 @@ mod test {
582585
let redirect = latest_version_redirect("/dummy/0.1.0/x86_64-pc-windows-msvc/dummy/", web)?;
583586
assert_eq!(redirect, "/dummy/0.2.0/x86_64-pc-windows-msvc/dummy/index.html");
584587

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

0 commit comments

Comments
 (0)