Skip to content

Commit 8be70d1

Browse files
committed
tests/routes/crates/list: Ensure unique ordering of seek-based pagination is correct
1 parent fdaf7f6 commit 8be70d1

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

src/tests/routes/crates/list.rs

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,8 @@ fn index_sorting() {
261261
let (app, anon, user) = TestApp::init().with_user();
262262
let user = user.as_model();
263263

264+
// To test that the unique ordering of seed-based pagination is correct, we need to
265+
// set some columns to the same value.
264266
app.db(|conn| {
265267
let krate1 = CrateBuilder::new("foo_sort", user.id)
266268
.description("bar_sort baz_sort const")
@@ -277,12 +279,12 @@ fn index_sorting() {
277279
let krate3 = CrateBuilder::new("baz_sort", user.id)
278280
.description("foo_sort bar_sort foo_sort bar_sort foo_sort bar_sort const")
279281
.downloads(100_000)
280-
.recent_downloads(10)
282+
.recent_downloads(50)
281283
.expect_build(conn);
282284

283285
let krate4 = CrateBuilder::new("other_sort", user.id)
284286
.description("other_sort const")
285-
.downloads(999_999)
287+
.downloads(100_000)
286288
.expect_build(conn);
287289

288290
// Set the created at column for each crate
@@ -294,11 +296,7 @@ fn index_sorting() {
294296
.set(crates::created_at.eq(now - 1.weeks()))
295297
.execute(conn)
296298
.unwrap();
297-
update(&krate3)
298-
.set(crates::created_at.eq(now - 2.weeks()))
299-
.execute(conn)
300-
.unwrap();
301-
update(&krate4)
299+
update(crates::table.filter(crates::id.eq_any(vec![krate3.id, krate4.id])))
302300
.set(crates::created_at.eq(now - 3.weeks()))
303301
.execute(conn)
304302
.unwrap();
@@ -308,14 +306,10 @@ fn index_sorting() {
308306
.set(crates::updated_at.eq(now - 3.weeks()))
309307
.execute(conn)
310308
.unwrap();
311-
update(&krate2)
309+
update(crates::table.filter(crates::id.eq_any(vec![krate2.id, krate3.id])))
312310
.set(crates::updated_at.eq(now - 5.days()))
313311
.execute(conn)
314312
.unwrap();
315-
update(&krate3)
316-
.set(crates::updated_at.eq(now - 10.seconds()))
317-
.execute(conn)
318-
.unwrap();
319313
update(&krate4)
320314
.set(crates::updated_at.eq(now))
321315
.execute(conn)
@@ -325,14 +319,14 @@ fn index_sorting() {
325319
// Sort by downloads
326320
for json in search_both(&anon, "sort=downloads") {
327321
assert_eq!(json.meta.total, 4);
328-
assert_eq!(json.crates[0].name, "other_sort");
329-
assert_eq!(json.crates[1].name, "baz_sort");
322+
assert_eq!(json.crates[0].name, "baz_sort");
323+
assert_eq!(json.crates[1].name, "other_sort");
330324
assert_eq!(json.crates[2].name, "bar_sort");
331325
assert_eq!(json.crates[3].name, "foo_sort");
332326
}
333327
let (resp, calls) = page_with_seek(&anon, "sort=downloads");
334-
assert_eq!(resp[0].crates[0].name, "other_sort");
335-
assert_eq!(resp[1].crates[0].name, "baz_sort");
328+
assert_eq!(resp[0].crates[0].name, "baz_sort");
329+
assert_eq!(resp[1].crates[0].name, "other_sort");
336330
assert_eq!(resp[2].crates[0].name, "bar_sort");
337331
assert_eq!(resp[3].crates[0].name, "foo_sort");
338332
assert_eq!(resp[3].meta.total, 4);
@@ -358,14 +352,14 @@ fn index_sorting() {
358352
for json in search_both(&anon, "sort=recent-updates") {
359353
assert_eq!(json.meta.total, 4);
360354
assert_eq!(json.crates[0].name, "other_sort");
361-
assert_eq!(json.crates[1].name, "baz_sort");
362-
assert_eq!(json.crates[2].name, "bar_sort");
355+
assert_eq!(json.crates[1].name, "bar_sort");
356+
assert_eq!(json.crates[2].name, "baz_sort");
363357
assert_eq!(json.crates[3].name, "foo_sort");
364358
}
365359
let (resp, calls) = page_with_seek(&anon, "sort=recent-updates");
366360
assert_eq!(resp[0].crates[0].name, "other_sort");
367-
assert_eq!(resp[1].crates[0].name, "baz_sort");
368-
assert_eq!(resp[2].crates[0].name, "bar_sort");
361+
assert_eq!(resp[1].crates[0].name, "bar_sort");
362+
assert_eq!(resp[2].crates[0].name, "baz_sort");
369363
assert_eq!(resp[3].crates[0].name, "foo_sort");
370364
assert_eq!(resp[3].meta.total, 4);
371365
assert_eq!(calls, 5);

0 commit comments

Comments
 (0)