Skip to content

Commit 9628148

Browse files
committed
tests: Move GET /crates/:name/versions test to krate::versions module
1 parent dd8cdcf commit 9628148

File tree

2 files changed

+51
-38
lines changed

2 files changed

+51
-38
lines changed

src/tests/krate/mod.rs

Lines changed: 8 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::{
44
};
55
use cargo_registry::{
66
models::Category,
7-
schema::{crates, versions},
7+
schema::crates,
88
views::{EncodableDependency, EncodableVersion, EncodableVersionDownload},
99
};
1010

@@ -13,11 +13,8 @@ use diesel::{dsl::*, prelude::*, update};
1313

1414
mod publish;
1515
mod summary;
16+
mod versions;
1617

17-
#[derive(Deserialize)]
18-
struct VersionsList {
19-
versions: Vec<EncodableVersion>,
20-
}
2118
#[derive(Deserialize)]
2219
struct Deps {
2320
dependencies: Vec<EncodableDependency>,
@@ -566,6 +563,8 @@ fn show() {
566563
let user = user.as_model();
567564

568565
let krate = app.db(|conn| {
566+
use cargo_registry::schema::versions;
567+
569568
let krate = CrateBuilder::new("foo_show", user.id)
570569
.description("description")
571570
.documentation("https://example.com")
@@ -641,39 +640,6 @@ fn yanked_versions_are_not_considered_for_max_version() {
641640
assert_eq!(json.crates[0].max_version, "1.0.0");
642641
}
643642

644-
#[test]
645-
fn versions() {
646-
let (app, anon, user) = TestApp::init().with_user();
647-
let user = user.as_model();
648-
app.db(|conn| {
649-
CrateBuilder::new("foo_versions", user.id)
650-
.version("0.5.1")
651-
.version("1.0.0")
652-
.version("0.5.0")
653-
.expect_build(conn);
654-
// Make version 1.0.0 mimic a version published before we started recording who published
655-
// versions
656-
let none: Option<i32> = None;
657-
update(versions::table)
658-
.filter(versions::num.eq("1.0.0"))
659-
.set(versions::published_by.eq(none))
660-
.execute(conn)
661-
.unwrap();
662-
});
663-
664-
let json: VersionsList = anon.get("/api/v1/crates/foo_versions/versions").good();
665-
666-
assert_eq!(json.versions.len(), 3);
667-
assert_eq!(json.versions[0].num, "1.0.0");
668-
assert_eq!(json.versions[1].num, "0.5.1");
669-
assert_eq!(json.versions[2].num, "0.5.0");
670-
assert_none!(&json.versions[0].published_by);
671-
assert_eq!(
672-
json.versions[1].published_by.as_ref().unwrap().login,
673-
user.gh_login
674-
);
675-
}
676-
677643
#[test]
678644
fn download() {
679645
use chrono::{Duration, Utc};
@@ -1159,6 +1125,8 @@ fn yanked_versions_not_included_in_reverse_dependencies() {
11591125
assert_eq!(deps.dependencies[0].crate_id, "c1");
11601126

11611127
app.db(|conn| {
1128+
use cargo_registry::schema::versions;
1129+
11621130
diesel::update(versions::table.filter(versions::num.eq("2.0.0")))
11631131
.set(versions::yanked.eq(true))
11641132
.execute(conn)
@@ -1176,6 +1144,8 @@ fn reverse_dependencies_includes_published_by_user_when_present() {
11761144
let user = user.as_model();
11771145

11781146
app.db(|conn| {
1147+
use cargo_registry::schema::versions;
1148+
11791149
let c1 = CrateBuilder::new("c1", user.id)
11801150
.version("1.0.0")
11811151
.expect_build(conn);

src/tests/krate/versions.rs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
use crate::builders::CrateBuilder;
2+
use crate::util::{RequestHelper, TestApp};
3+
use cargo_registry::schema::versions;
4+
use cargo_registry::views::EncodableVersion;
5+
use diesel::{prelude::*, update};
6+
7+
#[derive(Deserialize)]
8+
struct VersionsList {
9+
versions: Vec<EncodableVersion>,
10+
}
11+
12+
#[test]
13+
fn versions() {
14+
let (app, anon, user) = TestApp::init().with_user();
15+
let user = user.as_model();
16+
app.db(|conn| {
17+
CrateBuilder::new("foo_versions", user.id)
18+
.version("0.5.1")
19+
.version("1.0.0")
20+
.version("0.5.0")
21+
.expect_build(conn);
22+
// Make version 1.0.0 mimic a version published before we started recording who published
23+
// versions
24+
let none: Option<i32> = None;
25+
update(versions::table)
26+
.filter(versions::num.eq("1.0.0"))
27+
.set(versions::published_by.eq(none))
28+
.execute(conn)
29+
.unwrap();
30+
});
31+
32+
let json: VersionsList = anon.get("/api/v1/crates/foo_versions/versions").good();
33+
34+
assert_eq!(json.versions.len(), 3);
35+
assert_eq!(json.versions[0].num, "1.0.0");
36+
assert_eq!(json.versions[1].num, "0.5.1");
37+
assert_eq!(json.versions[2].num, "0.5.0");
38+
assert_none!(&json.versions[0].published_by);
39+
assert_eq!(
40+
json.versions[1].published_by.as_ref().unwrap().login,
41+
user.gh_login
42+
);
43+
}

0 commit comments

Comments
 (0)