Skip to content

Commit 62b4ac7

Browse files
jtgeibelTurbo87
authored andcommitted
tests/downloads: Promote persist_downloads_count() and assert_dl_count() to proper functions
1 parent 5728a99 commit 62b4ac7

File tree

1 file changed

+42
-36
lines changed

1 file changed

+42
-36
lines changed

src/tests/krate/downloads.rs

+42-36
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::builders::{CrateBuilder, VersionBuilder};
2-
use crate::util::{RequestHelper, TestApp};
2+
use crate::util::{MockAnonymousUser, RequestHelper, TestApp};
33
use cargo_registry::views::EncodableVersionDownload;
44
use chrono::{Duration, Utc};
55
use http::StatusCode;
@@ -9,6 +9,35 @@ struct Downloads {
99
version_downloads: Vec<EncodableVersionDownload>,
1010
}
1111

12+
fn persist_downloads_count(app: &TestApp) {
13+
app.as_inner()
14+
.downloads_counter
15+
.persist_all_shards(app.as_inner())
16+
.expect("failed to persist downloads count")
17+
.log();
18+
}
19+
20+
#[track_caller]
21+
fn assert_dl_count(
22+
anon: &MockAnonymousUser,
23+
name_and_version: &str,
24+
query: Option<&str>,
25+
count: i32,
26+
) {
27+
let url = format!("/api/v1/crates/{}/downloads", name_and_version);
28+
let downloads: Downloads = if let Some(query) = query {
29+
anon.get_with_query(&url, query).good()
30+
} else {
31+
anon.get(&url).good()
32+
};
33+
let total_downloads = downloads
34+
.version_downloads
35+
.iter()
36+
.map(|vd| vd.downloads)
37+
.sum::<i32>();
38+
assert_eq!(total_downloads, count);
39+
}
40+
1241
#[test]
1342
fn download() {
1443
let (app, anon, user) = TestApp::init().with_user();
@@ -20,60 +49,37 @@ fn download() {
2049
.expect_build(conn);
2150
});
2251

23-
let assert_dl_count = |name_and_version: &str, query: Option<&str>, count: i32| {
24-
let url = format!("/api/v1/crates/{}/downloads", name_and_version);
25-
let downloads: Downloads = if let Some(query) = query {
26-
anon.get_with_query(&url, query).good()
27-
} else {
28-
anon.get(&url).good()
29-
};
30-
let total_downloads = downloads
31-
.version_downloads
32-
.iter()
33-
.map(|vd| vd.downloads)
34-
.sum::<i32>();
35-
assert_eq!(total_downloads, count);
36-
};
37-
3852
let download = |name_and_version: &str| {
3953
let url = format!("/api/v1/crates/{}/download", name_and_version);
4054
let response = anon.get::<()>(&url);
4155
assert_eq!(response.status(), StatusCode::FOUND);
4256
// TODO: test the with_json code path
4357
};
4458

45-
let persist_downloads_count = || {
46-
app.as_inner()
47-
.downloads_counter
48-
.persist_all_shards(app.as_inner())
49-
.expect("failed to persist downloads count")
50-
.log();
51-
};
52-
5359
download("foo_download/1.0.0");
5460
// No downloads are counted until the counters are persisted
55-
assert_dl_count("foo_download/1.0.0", None, 0);
56-
assert_dl_count("foo_download", None, 0);
57-
persist_downloads_count();
61+
assert_dl_count(&anon, "foo_download/1.0.0", None, 0);
62+
assert_dl_count(&anon, "foo_download", None, 0);
63+
persist_downloads_count(&app);
5864
// Now that the counters are persisted the download counts show up.
59-
assert_dl_count("foo_download/1.0.0", None, 1);
60-
assert_dl_count("foo_download", None, 1);
65+
assert_dl_count(&anon, "foo_download/1.0.0", None, 1);
66+
assert_dl_count(&anon, "foo_download", None, 1);
6167

6268
download("FOO_DOWNLOAD/1.0.0");
63-
persist_downloads_count();
64-
assert_dl_count("FOO_DOWNLOAD/1.0.0", None, 2);
65-
assert_dl_count("FOO_DOWNLOAD", None, 2);
69+
persist_downloads_count(&app);
70+
assert_dl_count(&anon, "FOO_DOWNLOAD/1.0.0", None, 2);
71+
assert_dl_count(&anon, "FOO_DOWNLOAD", None, 2);
6672

6773
let yesterday = (Utc::today() + Duration::days(-1)).format("%F");
6874
let query = format!("before_date={}", yesterday);
69-
assert_dl_count("FOO_DOWNLOAD/1.0.0", Some(&query), 0);
75+
assert_dl_count(&anon, "FOO_DOWNLOAD/1.0.0", Some(&query), 0);
7076
// crate/downloads always returns the last 90 days and ignores date params
71-
assert_dl_count("FOO_DOWNLOAD", Some(&query), 2);
77+
assert_dl_count(&anon, "FOO_DOWNLOAD", Some(&query), 2);
7278

7379
let tomorrow = (Utc::today() + Duration::days(1)).format("%F");
7480
let query = format!("before_date={}", tomorrow);
75-
assert_dl_count("FOO_DOWNLOAD/1.0.0", Some(&query), 2);
76-
assert_dl_count("FOO_DOWNLOAD", Some(&query), 2);
81+
assert_dl_count(&anon, "FOO_DOWNLOAD/1.0.0", Some(&query), 2);
82+
assert_dl_count(&anon, "FOO_DOWNLOAD", Some(&query), 2);
7783
}
7884

7985
#[test]

0 commit comments

Comments
 (0)