Skip to content

Commit aef0830

Browse files
committed
tests: Move GET /crates/:name tests to krate::show module
1 parent 34bc397 commit aef0830

File tree

2 files changed

+85
-80
lines changed

2 files changed

+85
-80
lines changed

src/tests/krate/mod.rs

Lines changed: 1 addition & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ mod downloads;
1212
mod following;
1313
mod publish;
1414
mod reverse_dependencies;
15+
mod show;
1516
mod summary;
1617
mod versions;
1718
mod yanking;
@@ -500,71 +501,6 @@ fn index_include_yanked() {
500501
assert_eq!(json.crates[2].name, "unyanked");
501502
}
502503

503-
#[test]
504-
fn show() {
505-
let (app, anon, user) = TestApp::init().with_user();
506-
let user = user.as_model();
507-
508-
let krate = app.db(|conn| {
509-
use cargo_registry::schema::versions;
510-
511-
let krate = CrateBuilder::new("foo_show", user.id)
512-
.description("description")
513-
.documentation("https://example.com")
514-
.homepage("http://example.com")
515-
.version(VersionBuilder::new("1.0.0"))
516-
.version(VersionBuilder::new("0.5.0"))
517-
.version(VersionBuilder::new("0.5.1"))
518-
.keyword("kw1")
519-
.downloads(20)
520-
.recent_downloads(10)
521-
.expect_build(conn);
522-
523-
// Make version 1.0.0 mimic a version published before we started recording who published
524-
// versions
525-
let none: Option<i32> = None;
526-
update(versions::table)
527-
.filter(versions::num.eq("1.0.0"))
528-
.set(versions::published_by.eq(none))
529-
.execute(conn)
530-
.unwrap();
531-
532-
krate
533-
});
534-
535-
let json = anon.show_crate("foo_show");
536-
assert_eq!(json.krate.name, krate.name);
537-
assert_eq!(json.krate.id, krate.name);
538-
assert_eq!(json.krate.description, krate.description);
539-
assert_eq!(json.krate.homepage, krate.homepage);
540-
assert_eq!(json.krate.documentation, krate.documentation);
541-
assert_eq!(json.krate.keywords, Some(vec!["kw1".into()]));
542-
assert_eq!(json.krate.recent_downloads, Some(10));
543-
let versions = json.krate.versions.as_ref().unwrap();
544-
assert_eq!(versions.len(), 3);
545-
assert_eq!(json.versions.len(), 3);
546-
547-
assert_eq!(json.versions[0].id, versions[0]);
548-
assert_eq!(json.versions[0].krate, json.krate.id);
549-
assert_eq!(json.versions[0].num, "1.0.0");
550-
assert_none!(&json.versions[0].published_by);
551-
let suffix = "/api/v1/crates/foo_show/1.0.0/download";
552-
assert!(
553-
json.versions[0].dl_path.ends_with(suffix),
554-
"bad suffix {}",
555-
json.versions[0].dl_path
556-
);
557-
assert_eq!(1, json.keywords.len());
558-
assert_eq!("kw1", json.keywords[0].id);
559-
560-
assert_eq!(json.versions[1].num, "0.5.1");
561-
assert_eq!(json.versions[2].num, "0.5.0");
562-
assert_eq!(
563-
json.versions[1].published_by.as_ref().unwrap().login,
564-
user.gh_login
565-
);
566-
}
567-
568504
#[test]
569505
fn yanked_versions_are_not_considered_for_max_version() {
570506
let (app, anon, user) = TestApp::init().with_user();
@@ -716,21 +652,6 @@ fn test_default_sort_recent() {
716652
assert_eq!(json.crates[1].downloads, 20);
717653
}
718654

719-
#[test]
720-
fn block_bad_documentation_url() {
721-
let (app, anon, user) = TestApp::init().with_user();
722-
let user = user.as_model();
723-
724-
app.db(|conn| {
725-
CrateBuilder::new("foo_bad_doc_url", user.id)
726-
.documentation("http://rust-ci.org/foo/foo_bad_doc_url/doc/foo_bad_doc_url/")
727-
.expect_build(conn)
728-
});
729-
730-
let json = anon.show_crate("foo_bad_doc_url");
731-
assert_eq!(json.krate.documentation, None);
732-
}
733-
734655
// This is testing Cargo functionality! ! !
735656
// specifically functions modify_owners and add_owners
736657
// which call the `PUT /crates/:crate_id/owners` route

src/tests/krate/show.rs

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
use crate::builders::{CrateBuilder, VersionBuilder};
2+
use crate::util::{RequestHelper, TestApp};
3+
use diesel::prelude::*;
4+
5+
#[test]
6+
fn show() {
7+
let (app, anon, user) = TestApp::init().with_user();
8+
let user = user.as_model();
9+
10+
let krate = app.db(|conn| {
11+
use cargo_registry::schema::versions;
12+
use diesel::{update, ExpressionMethods};
13+
14+
let krate = CrateBuilder::new("foo_show", user.id)
15+
.description("description")
16+
.documentation("https://example.com")
17+
.homepage("http://example.com")
18+
.version(VersionBuilder::new("1.0.0"))
19+
.version(VersionBuilder::new("0.5.0"))
20+
.version(VersionBuilder::new("0.5.1"))
21+
.keyword("kw1")
22+
.downloads(20)
23+
.recent_downloads(10)
24+
.expect_build(conn);
25+
26+
// Make version 1.0.0 mimic a version published before we started recording who published
27+
// versions
28+
let none: Option<i32> = None;
29+
update(versions::table)
30+
.filter(versions::num.eq("1.0.0"))
31+
.set(versions::published_by.eq(none))
32+
.execute(conn)
33+
.unwrap();
34+
35+
krate
36+
});
37+
38+
let json = anon.show_crate("foo_show");
39+
assert_eq!(json.krate.name, krate.name);
40+
assert_eq!(json.krate.id, krate.name);
41+
assert_eq!(json.krate.description, krate.description);
42+
assert_eq!(json.krate.homepage, krate.homepage);
43+
assert_eq!(json.krate.documentation, krate.documentation);
44+
assert_eq!(json.krate.keywords, Some(vec!["kw1".into()]));
45+
assert_eq!(json.krate.recent_downloads, Some(10));
46+
let versions = json.krate.versions.as_ref().unwrap();
47+
assert_eq!(versions.len(), 3);
48+
assert_eq!(json.versions.len(), 3);
49+
50+
assert_eq!(json.versions[0].id, versions[0]);
51+
assert_eq!(json.versions[0].krate, json.krate.id);
52+
assert_eq!(json.versions[0].num, "1.0.0");
53+
assert_none!(&json.versions[0].published_by);
54+
let suffix = "/api/v1/crates/foo_show/1.0.0/download";
55+
assert!(
56+
json.versions[0].dl_path.ends_with(suffix),
57+
"bad suffix {}",
58+
json.versions[0].dl_path
59+
);
60+
assert_eq!(1, json.keywords.len());
61+
assert_eq!("kw1", json.keywords[0].id);
62+
63+
assert_eq!(json.versions[1].num, "0.5.1");
64+
assert_eq!(json.versions[2].num, "0.5.0");
65+
assert_eq!(
66+
json.versions[1].published_by.as_ref().unwrap().login,
67+
user.gh_login
68+
);
69+
}
70+
71+
#[test]
72+
fn block_bad_documentation_url() {
73+
let (app, anon, user) = TestApp::init().with_user();
74+
let user = user.as_model();
75+
76+
app.db(|conn| {
77+
CrateBuilder::new("foo_bad_doc_url", user.id)
78+
.documentation("http://rust-ci.org/foo/foo_bad_doc_url/doc/foo_bad_doc_url/")
79+
.expect_build(conn)
80+
});
81+
82+
let json = anon.show_crate("foo_bad_doc_url");
83+
assert_eq!(json.krate.documentation, None);
84+
}

0 commit comments

Comments
 (0)