@@ -261,6 +261,8 @@ fn index_sorting() {
261
261
let ( app, anon, user) = TestApp :: init ( ) . with_user ( ) ;
262
262
let user = user. as_model ( ) ;
263
263
264
+ // To test that the unique ordering of seed-based pagination is correct, we need to
265
+ // set some columns to the same value.
264
266
app. db ( |conn| {
265
267
let krate1 = CrateBuilder :: new ( "foo_sort" , user. id )
266
268
. description ( "bar_sort baz_sort const" )
@@ -277,12 +279,12 @@ fn index_sorting() {
277
279
let krate3 = CrateBuilder :: new ( "baz_sort" , user. id )
278
280
. description ( "foo_sort bar_sort foo_sort bar_sort foo_sort bar_sort const" )
279
281
. downloads ( 100_000 )
280
- . recent_downloads ( 10 )
282
+ . recent_downloads ( 50 )
281
283
. expect_build ( conn) ;
282
284
283
285
let krate4 = CrateBuilder :: new ( "other_sort" , user. id )
284
286
. description ( "other_sort const" )
285
- . downloads ( 999_999 )
287
+ . downloads ( 100_000 )
286
288
. expect_build ( conn) ;
287
289
288
290
// Set the created at column for each crate
@@ -294,11 +296,7 @@ fn index_sorting() {
294
296
. set ( crates:: created_at. eq ( now - 1 . weeks ( ) ) )
295
297
. execute ( conn)
296
298
. 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] ) ) )
302
300
. set ( crates:: created_at. eq ( now - 3 . weeks ( ) ) )
303
301
. execute ( conn)
304
302
. unwrap ( ) ;
@@ -308,14 +306,10 @@ fn index_sorting() {
308
306
. set ( crates:: updated_at. eq ( now - 3 . weeks ( ) ) )
309
307
. execute ( conn)
310
308
. unwrap ( ) ;
311
- update ( & krate2)
309
+ update ( crates :: table . filter ( crates :: id . eq_any ( vec ! [ krate2. id , krate3 . id ] ) ) )
312
310
. set ( crates:: updated_at. eq ( now - 5 . days ( ) ) )
313
311
. execute ( conn)
314
312
. unwrap ( ) ;
315
- update ( & krate3)
316
- . set ( crates:: updated_at. eq ( now - 10 . seconds ( ) ) )
317
- . execute ( conn)
318
- . unwrap ( ) ;
319
313
update ( & krate4)
320
314
. set ( crates:: updated_at. eq ( now) )
321
315
. execute ( conn)
@@ -325,14 +319,14 @@ fn index_sorting() {
325
319
// Sort by downloads
326
320
for json in search_both ( & anon, "sort=downloads" ) {
327
321
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 " ) ;
330
324
assert_eq ! ( json. crates[ 2 ] . name, "bar_sort" ) ;
331
325
assert_eq ! ( json. crates[ 3 ] . name, "foo_sort" ) ;
332
326
}
333
327
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 " ) ;
336
330
assert_eq ! ( resp[ 2 ] . crates[ 0 ] . name, "bar_sort" ) ;
337
331
assert_eq ! ( resp[ 3 ] . crates[ 0 ] . name, "foo_sort" ) ;
338
332
assert_eq ! ( resp[ 3 ] . meta. total, 4 ) ;
@@ -358,14 +352,14 @@ fn index_sorting() {
358
352
for json in search_both ( & anon, "sort=recent-updates" ) {
359
353
assert_eq ! ( json. meta. total, 4 ) ;
360
354
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 " ) ;
363
357
assert_eq ! ( json. crates[ 3 ] . name, "foo_sort" ) ;
364
358
}
365
359
let ( resp, calls) = page_with_seek ( & anon, "sort=recent-updates" ) ;
366
360
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 " ) ;
369
363
assert_eq ! ( resp[ 3 ] . crates[ 0 ] . name, "foo_sort" ) ;
370
364
assert_eq ! ( resp[ 3 ] . meta. total, 4 ) ;
371
365
assert_eq ! ( calls, 5 ) ;
0 commit comments