Skip to content

Commit 34bc397

Browse files
committed
tests: Move GET /crates/:name/reverse_dependencies tests to krate::reverse_dependencies module
1 parent 7d16ec1 commit 34bc397

File tree

2 files changed

+220
-217
lines changed

2 files changed

+220
-217
lines changed

src/tests/krate/mod.rs

Lines changed: 3 additions & 217 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
use crate::{
22
builders::{CrateBuilder, VersionBuilder},
3-
new_category, new_user, CrateMeta, RequestHelper, TestApp,
4-
};
5-
use cargo_registry::{
6-
models::Category,
7-
schema::crates,
8-
views::{EncodableDependency, EncodableVersion},
3+
new_category, new_user, RequestHelper, TestApp,
94
};
5+
use cargo_registry::{models::Category, schema::crates};
106

117
use conduit::StatusCode;
128
use diesel::{dsl::*, prelude::*, update};
@@ -15,24 +11,11 @@ mod dependencies;
1511
mod downloads;
1612
mod following;
1713
mod publish;
14+
mod reverse_dependencies;
1815
mod summary;
1916
mod versions;
2017
mod yanking;
2118

22-
#[derive(Deserialize)]
23-
struct RevDeps {
24-
dependencies: Vec<EncodableDependency>,
25-
versions: Vec<EncodableVersion>,
26-
meta: CrateMeta,
27-
}
28-
29-
impl crate::util::MockAnonymousUser {
30-
fn reverse_dependencies(&self, krate_name: &str) -> RevDeps {
31-
let url = format!("/api/v1/crates/{}/reverse_dependencies", krate_name);
32-
self.get(&url).good()
33-
}
34-
}
35-
3619
#[test]
3720
fn index() {
3821
let (app, anon) = TestApp::init().empty();
@@ -600,203 +583,6 @@ fn yanked_versions_are_not_considered_for_max_version() {
600583
assert_eq!(json.crates[0].max_version, "1.0.0");
601584
}
602585

603-
#[test]
604-
fn reverse_dependencies() {
605-
let (app, anon, user) = TestApp::init().with_user();
606-
let user = user.as_model();
607-
608-
app.db(|conn| {
609-
let c1 = CrateBuilder::new("c1", user.id).expect_build(conn);
610-
CrateBuilder::new("c2", user.id)
611-
.version(VersionBuilder::new("1.0.0").dependency(&c1, None))
612-
.version(
613-
VersionBuilder::new("1.1.0")
614-
.dependency(&c1, None)
615-
.dependency(&c1, Some("foo")),
616-
)
617-
.expect_build(conn);
618-
});
619-
620-
let deps = anon.reverse_dependencies("c1");
621-
assert_eq!(deps.dependencies.len(), 1);
622-
assert_eq!(deps.meta.total, 1);
623-
assert_eq!(deps.dependencies[0].crate_id, "c1");
624-
assert_eq!(deps.versions.len(), 1);
625-
assert_eq!(deps.versions[0].krate, "c2");
626-
assert_eq!(deps.versions[0].num, "1.1.0");
627-
628-
// c1 has no dependent crates.
629-
let deps = anon.reverse_dependencies("c2");
630-
assert_eq!(deps.dependencies.len(), 0);
631-
assert_eq!(deps.meta.total, 0);
632-
}
633-
634-
#[test]
635-
fn reverse_dependencies_when_old_version_doesnt_depend_but_new_does() {
636-
let (app, anon, user) = TestApp::init().with_user();
637-
let user = user.as_model();
638-
639-
app.db(|conn| {
640-
let c1 = CrateBuilder::new("c1", user.id)
641-
.version("1.1.0")
642-
.expect_build(conn);
643-
CrateBuilder::new("c2", user.id)
644-
.version("1.0.0")
645-
.version(VersionBuilder::new("2.0.0").dependency(&c1, None))
646-
.expect_build(conn);
647-
});
648-
649-
let deps = anon.reverse_dependencies("c1");
650-
assert_eq!(deps.dependencies.len(), 1);
651-
assert_eq!(deps.meta.total, 1);
652-
assert_eq!(deps.dependencies[0].crate_id, "c1");
653-
}
654-
655-
#[test]
656-
fn reverse_dependencies_when_old_version_depended_but_new_doesnt() {
657-
let (app, anon, user) = TestApp::init().with_user();
658-
let user = user.as_model();
659-
660-
app.db(|conn| {
661-
let c1 = CrateBuilder::new("c1", user.id)
662-
.version("1.0.0")
663-
.expect_build(conn);
664-
CrateBuilder::new("c2", user.id)
665-
.version(VersionBuilder::new("1.0.0").dependency(&c1, None))
666-
.version("2.0.0")
667-
.expect_build(conn);
668-
});
669-
670-
let deps = anon.reverse_dependencies("c1");
671-
assert_eq!(deps.dependencies.len(), 0);
672-
assert_eq!(deps.meta.total, 0);
673-
}
674-
675-
#[test]
676-
fn prerelease_versions_not_included_in_reverse_dependencies() {
677-
let (app, anon, user) = TestApp::init().with_user();
678-
let user = user.as_model();
679-
680-
app.db(|conn| {
681-
let c1 = CrateBuilder::new("c1", user.id)
682-
.version("1.0.0")
683-
.expect_build(conn);
684-
CrateBuilder::new("c2", user.id)
685-
.version("1.1.0-pre")
686-
.expect_build(conn);
687-
CrateBuilder::new("c3", user.id)
688-
.version(VersionBuilder::new("1.0.0").dependency(&c1, None))
689-
.version("1.1.0-pre")
690-
.expect_build(conn);
691-
});
692-
693-
let deps = anon.reverse_dependencies("c1");
694-
assert_eq!(deps.dependencies.len(), 1);
695-
assert_eq!(deps.meta.total, 1);
696-
assert_eq!(deps.dependencies[0].crate_id, "c1");
697-
}
698-
699-
#[test]
700-
fn yanked_versions_not_included_in_reverse_dependencies() {
701-
let (app, anon, user) = TestApp::init().with_user();
702-
let user = user.as_model();
703-
704-
app.db(|conn| {
705-
let c1 = CrateBuilder::new("c1", user.id)
706-
.version("1.0.0")
707-
.expect_build(conn);
708-
CrateBuilder::new("c2", user.id)
709-
.version("1.0.0")
710-
.version(VersionBuilder::new("2.0.0").dependency(&c1, None))
711-
.expect_build(conn);
712-
});
713-
714-
let deps = anon.reverse_dependencies("c1");
715-
assert_eq!(deps.dependencies.len(), 1);
716-
assert_eq!(deps.meta.total, 1);
717-
assert_eq!(deps.dependencies[0].crate_id, "c1");
718-
719-
app.db(|conn| {
720-
use cargo_registry::schema::versions;
721-
722-
diesel::update(versions::table.filter(versions::num.eq("2.0.0")))
723-
.set(versions::yanked.eq(true))
724-
.execute(conn)
725-
.unwrap();
726-
});
727-
728-
let deps = anon.reverse_dependencies("c1");
729-
assert_eq!(deps.dependencies.len(), 0);
730-
assert_eq!(deps.meta.total, 0);
731-
}
732-
733-
#[test]
734-
fn reverse_dependencies_includes_published_by_user_when_present() {
735-
let (app, anon, user) = TestApp::init().with_user();
736-
let user = user.as_model();
737-
738-
app.db(|conn| {
739-
use cargo_registry::schema::versions;
740-
741-
let c1 = CrateBuilder::new("c1", user.id)
742-
.version("1.0.0")
743-
.expect_build(conn);
744-
CrateBuilder::new("c2", user.id)
745-
.version(VersionBuilder::new("2.0.0").dependency(&c1, None))
746-
.expect_build(conn);
747-
748-
// Make c2's version (and,incidentally, c1's, but that doesn't matter) mimic a version
749-
// published before we started recording who published versions
750-
let none: Option<i32> = None;
751-
update(versions::table)
752-
.set(versions::published_by.eq(none))
753-
.execute(conn)
754-
.unwrap();
755-
756-
// c3's version will have the published by info recorded
757-
CrateBuilder::new("c3", user.id)
758-
.version(VersionBuilder::new("3.0.0").dependency(&c1, None))
759-
.expect_build(conn);
760-
});
761-
762-
let deps = anon.reverse_dependencies("c1");
763-
assert_eq!(deps.versions.len(), 2);
764-
765-
let c2_version = deps.versions.iter().find(|v| v.krate == "c2").unwrap();
766-
assert_none!(&c2_version.published_by);
767-
768-
let c3_version = deps.versions.iter().find(|v| v.krate == "c3").unwrap();
769-
assert_eq!(
770-
c3_version.published_by.as_ref().unwrap().login,
771-
user.gh_login
772-
);
773-
}
774-
775-
#[test]
776-
fn reverse_dependencies_query_supports_u64_version_number_parts() {
777-
let (app, anon, user) = TestApp::init().with_user();
778-
let user = user.as_model();
779-
780-
let large_but_valid_version_number = format!("1.0.{}", std::u64::MAX);
781-
782-
app.db(|conn| {
783-
let c1 = CrateBuilder::new("c1", user.id).expect_build(conn);
784-
// The crate that depends on c1...
785-
CrateBuilder::new("c2", user.id)
786-
// ...has a patch version at the limits of what the semver crate supports
787-
.version(VersionBuilder::new(&large_but_valid_version_number).dependency(&c1, None))
788-
.expect_build(conn);
789-
});
790-
791-
let deps = anon.reverse_dependencies("c1");
792-
assert_eq!(deps.dependencies.len(), 1);
793-
assert_eq!(deps.meta.total, 1);
794-
assert_eq!(deps.dependencies[0].crate_id, "c1");
795-
assert_eq!(deps.versions.len(), 1);
796-
assert_eq!(deps.versions[0].krate, "c2");
797-
assert_eq!(deps.versions[0].num, large_but_valid_version_number);
798-
}
799-
800586
/* Given two crates, one with downloads less than 90 days ago, the
801587
other with all downloads greater than 90 days ago, check that
802588
the order returned is by recent downloads, descending. Check

0 commit comments

Comments
 (0)