From 434d9bac05af73c5aff6a8265e2325893f9c00f7 Mon Sep 17 00:00:00 2001 From: Brandon Moore Date: Wed, 21 Feb 2018 13:56:26 -0500 Subject: [PATCH 1/4] Added 'recently-updated' as a sorting option in the API --- src/controllers/krate/search.rs | 2 + src/tests/krate.rs | 134 +++++++++++++++++++++++++++++++- 2 files changed, 132 insertions(+), 4 deletions(-) diff --git a/src/controllers/krate/search.rs b/src/controllers/krate/search.rs index 111315c413a..c1e7ff52ae9 100644 --- a/src/controllers/krate/search.rs +++ b/src/controllers/krate/search.rs @@ -143,6 +143,8 @@ pub fn search(req: &mut dyn Request) -> CargoResult { query = query.then_order_by(crates::downloads.desc()) } else if sort == "recent-downloads" { query = query.then_order_by(recent_crate_downloads::downloads.desc().nulls_last()) + } else if sort == "recently-updated" { + query = query.order(crates::updated_at.desc()); } else { query = query.then_order_by(crates::name.asc()) } diff --git a/src/tests/krate.rs b/src/tests/krate.rs index 2e42cad1c12..9aa0abbb6e8 100644 --- a/src/tests/krate.rs +++ b/src/tests/krate.rs @@ -8,6 +8,7 @@ use std::sync::Arc; use chrono::Utc; use conduit::{Handler, Method}; +use diesel::dsl::*; use diesel::update; use flate2::Compression; use flate2::write::GzEncoder; @@ -288,36 +289,153 @@ fn exact_match_first_on_queries() { assert_eq!(json.crates[2].name, "foo_exact"); } +#[test] +fn index_sorting() { + let (_b, app, middle) = ::app(); + let krate1; + let krate2; + let krate3; + let krate4; + + { + let conn = app.diesel_database.get().unwrap(); + let user = ::new_user("foo").create_or_update(&conn).unwrap(); + + krate1 = ::CrateBuilder::new("foo_sort", user.id) + .description("bar_sort baz_sort const") + .downloads(50) + .recent_downloads(50) + .expect_build(&conn); + + krate2 = ::CrateBuilder::new("bar_sort", user.id) + .description("foo_sort baz_sort foo_sort baz_sort const") + .downloads(3333) + .recent_downloads(0) + .expect_build(&conn); + + krate3 = ::CrateBuilder::new("baz_sort", user.id) + .description("foo_sort bar_sort foo_sort bar_sort foo_sort bar_sort const") + .downloads(100_000) + .recent_downloads(10) + .expect_build(&conn); + + krate4 = ::CrateBuilder::new("other_sort", user.id) + .description("other_sort const") + .downloads(999_999) + .expect_build(&conn); + + // Set the updated at column for each crate + update(&krate1) + .set(crates::updated_at.eq(now - 3.weeks())) + .execute(&*conn) + .unwrap(); + update(&krate2) + .set(crates::updated_at.eq(now - 5.days())) + .execute(&*conn) + .unwrap(); + update(&krate3) + .set(crates::updated_at.eq(now - 10.seconds())) + .execute(&*conn) + .unwrap(); + update(&krate4) + .set(crates::updated_at.eq(now)) + .execute(&*conn) + .unwrap(); + } + + // Sort by downloads + let mut req = ::req(app, Method::Get, "/api/v1/crates"); + let mut response = ok_resp!(middle.call(req.with_query("sort=downloads"))); + let json: CrateList = ::json(&mut response); + assert_eq!(json.meta.total, 4); + assert_eq!(json.crates[0].name, "other_sort"); + assert_eq!(json.crates[1].name, "baz_sort"); + assert_eq!(json.crates[2].name, "bar_sort"); + assert_eq!(json.crates[3].name, "foo_sort"); + + // Sort by recent-downloads + let mut response = ok_resp!(middle.call(req.with_query("sort=recent-downloads"),)); + let json: CrateList = ::json(&mut response); + assert_eq!(json.meta.total, 4); + assert_eq!(json.crates[0].name, "foo_sort"); + assert_eq!(json.crates[1].name, "baz_sort"); + assert_eq!(json.crates[2].name, "bar_sort"); + assert_eq!(json.crates[3].name, "other_sort"); + + //Sort by recently-updated + let mut response = ok_resp!(middle.call(req.with_query("sort=recently-updated"),)); + let json: CrateList = ::json(&mut response); + assert_eq!(json.meta.total, 4); + assert_eq!(json.crates[0].name, "other_sort"); + assert_eq!(json.crates[1].name, "baz_sort"); + assert_eq!(json.crates[2].name, "bar_sort"); + assert_eq!(json.crates[3].name, "foo_sort"); + + // Test for bug with showing null results first when sorting + // by descending + // This has nothing to do with querying for exact match I'm sorry + let mut response = ok_resp!(middle.call(req.with_query("sort=recent-downloads"))); + let json: CrateList = ::json(&mut response); + assert_eq!(json.meta.total, 4); + assert_eq!(json.crates[0].name, "foo_sort"); + assert_eq!(json.crates[1].name, "baz_sort"); + assert_eq!(json.crates[2].name, "bar_sort"); + assert_eq!(json.crates[3].name, "other_sort"); +} + #[test] fn exact_match_on_queries_with_sort() { let (_b, app, middle) = ::app(); + let krate1; + let krate2; + let krate3; + let krate4; + { let conn = app.diesel_database.get().unwrap(); let user = ::new_user("foo").create_or_update(&conn).unwrap(); - ::CrateBuilder::new("foo_sort", user.id) + krate1 = ::CrateBuilder::new("foo_sort", user.id) .description("bar_sort baz_sort const") .downloads(50) .recent_downloads(50) .expect_build(&conn); - ::CrateBuilder::new("bar_sort", user.id) + krate2 = ::CrateBuilder::new("bar_sort", user.id) .description("foo_sort baz_sort foo_sort baz_sort const") .downloads(3333) .recent_downloads(0) .expect_build(&conn); - ::CrateBuilder::new("baz_sort", user.id) + krate3 = ::CrateBuilder::new("baz_sort", user.id) .description("foo_sort bar_sort foo_sort bar_sort foo_sort bar_sort const") .downloads(100_000) .recent_downloads(10) .expect_build(&conn); - ::CrateBuilder::new("other_sort", user.id) + krate4 = ::CrateBuilder::new("other_sort", user.id) .description("other_sort const") .downloads(999_999) .expect_build(&conn); + + // Set the updated at column for each crate + update(&krate1) + .set(crates::updated_at.eq(now - 3.weeks())) + .execute(&*conn) + .unwrap(); + update(&krate2) + .set(crates::updated_at.eq(now - 5.days())) + .execute(&*conn) + .unwrap(); + update(&krate3) + .set(crates::updated_at.eq(now - 10.seconds())) + .execute(&*conn) + .unwrap(); + update(&krate4) + .set(crates::updated_at.eq(now)) + .execute(&*conn) + .unwrap(); } // Sort by downloads @@ -359,6 +477,14 @@ fn exact_match_on_queries_with_sort() { assert_eq!(json.crates[1].name, "foo_sort"); assert_eq!(json.crates[2].name, "baz_sort"); + //Sort by recently-updated + let mut response = ok_resp!(middle.call(req.with_query("q=bar_sort&sort=recently-updated"),)); + let json: CrateList = ::json(&mut response); + assert_eq!(json.meta.total, 3); + assert_eq!(json.crates[0].name, "baz_sort"); + assert_eq!(json.crates[1].name, "bar_sort"); + assert_eq!(json.crates[2].name, "foo_sort"); + // Test for bug with showing null results first when sorting // by descending // This has nothing to do with querying for exact match I'm sorry From 543583dd93c75f3ec05a70bc8d204c405477c182 Mon Sep 17 00:00:00 2001 From: Brandon Moore Date: Wed, 21 Feb 2018 14:14:50 -0500 Subject: [PATCH 2/4] Added recently updated sorting to the frontend --- app/controllers/category/index.js | 2 ++ app/controllers/crates.js | 2 ++ app/controllers/keyword/index.js | 2 ++ app/controllers/me/crates.js | 2 ++ app/controllers/search.js | 2 ++ app/controllers/team.js | 2 ++ app/controllers/user.js | 2 ++ app/templates/category/index.hbs | 5 +++++ app/templates/crates.hbs | 5 +++++ app/templates/keyword/index.hbs | 5 +++++ app/templates/me/crates.hbs | 5 +++++ app/templates/search.hbs | 5 +++++ app/templates/team.hbs | 5 +++++ app/templates/user.hbs | 5 +++++ 14 files changed, 49 insertions(+) diff --git a/app/controllers/category/index.js b/app/controllers/category/index.js index 827e851786b..e9bfed13947 100644 --- a/app/controllers/category/index.js +++ b/app/controllers/category/index.js @@ -19,6 +19,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'alpha') { return 'Alphabetical'; + } else if (this.get('sort') === 'recently-updated') { + return 'Recently Updated'; } else { return 'Recent Downloads'; } diff --git a/app/controllers/crates.js b/app/controllers/crates.js index b54e7a51274..4fe69dd2913 100644 --- a/app/controllers/crates.js +++ b/app/controllers/crates.js @@ -19,6 +19,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; + } else if (this.get('sort') === 'recently-updated') { + return 'Recently Updated'; } else { return 'Alphabetical'; } diff --git a/app/controllers/keyword/index.js b/app/controllers/keyword/index.js index c73c250ff9b..c05ccf60001 100644 --- a/app/controllers/keyword/index.js +++ b/app/controllers/keyword/index.js @@ -17,6 +17,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'alpha') { return 'Alphabetical'; + } else if (this.get('sort') === 'recently-updated') { + return 'Recently Updated'; } else { return 'Recent Downloads'; } diff --git a/app/controllers/me/crates.js b/app/controllers/me/crates.js index fd425c324b2..df461531d3c 100644 --- a/app/controllers/me/crates.js +++ b/app/controllers/me/crates.js @@ -19,6 +19,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; + } else if (this.get('sort') === 'recently-updated') { + return 'Recently Updated'; } else { return 'Alphabetical'; } diff --git a/app/controllers/search.js b/app/controllers/search.js index 89b66edd9ed..05948ea6a39 100644 --- a/app/controllers/search.js +++ b/app/controllers/search.js @@ -31,6 +31,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; + } else if (this.get('sort') === 'recently-updated') { + return 'Recently Updated'; } else { return 'Relevance'; } diff --git a/app/controllers/team.js b/app/controllers/team.js index f8451a611a1..b45dcf0ab04 100644 --- a/app/controllers/team.js +++ b/app/controllers/team.js @@ -17,6 +17,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; + } else if (this.get('sort') === 'recently-updated') { + return 'Recently Updated'; } else { return 'Alphabetical'; } diff --git a/app/controllers/user.js b/app/controllers/user.js index b5b026400f0..c13f9261cb1 100644 --- a/app/controllers/user.js +++ b/app/controllers/user.js @@ -18,6 +18,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; + } else if (this.get('sort') === 'recently-updated') { + return 'Recently Updated'; } else { return 'Alphabetical'; } diff --git a/app/templates/category/index.hbs b/app/templates/category/index.hbs index 0051ab6658b..409965e0049 100644 --- a/app/templates/category/index.hbs +++ b/app/templates/category/index.hbs @@ -69,6 +69,11 @@ Recent Downloads {{/link-to}} +
  • + {{#link-to (query-params sort="recently-updated")}} + Recently Updated + {{/link-to}} +
  • {{/rl-dropdown}} {{/rl-dropdown-container}} diff --git a/app/templates/crates.hbs b/app/templates/crates.hbs index a96accf2184..30afdc7f9e4 100644 --- a/app/templates/crates.hbs +++ b/app/templates/crates.hbs @@ -60,6 +60,11 @@ Recent Downloads {{/link-to}} +
  • + {{#link-to (query-params page=1 sort="recently-updated")}} + Recently Updated + {{/link-to}} +
  • {{/rl-dropdown}} {{/rl-dropdown-container}} diff --git a/app/templates/keyword/index.hbs b/app/templates/keyword/index.hbs index 369c7dac343..f1e11b53e3d 100644 --- a/app/templates/keyword/index.hbs +++ b/app/templates/keyword/index.hbs @@ -40,6 +40,11 @@ Recent Downloads {{/link-to}} +
  • + {{#link-to (query-params sort="recently-updated")}} + Recently Updated + {{/link-to}} +
  • {{/rl-dropdown}} {{/rl-dropdown-container}} diff --git a/app/templates/me/crates.hbs b/app/templates/me/crates.hbs index 494e56eef54..81075827883 100644 --- a/app/templates/me/crates.hbs +++ b/app/templates/me/crates.hbs @@ -41,6 +41,11 @@ Recent Downloads {{/link-to}} +
  • + {{#link-to (query-params sort="recently-updated")}} + Recently Updated + {{/link-to}} +
  • {{/rl-dropdown}} {{/rl-dropdown-container}} diff --git a/app/templates/search.hbs b/app/templates/search.hbs index fcfcdcc63cf..956fe8a4e6f 100644 --- a/app/templates/search.hbs +++ b/app/templates/search.hbs @@ -52,6 +52,11 @@ Recent Downloads {{/link-to}} +
  • + {{#link-to (query-params page=1 sort="recently-updated")}} + Recently Updated + {{/link-to}} +
  • {{/rl-dropdown}} {{/rl-dropdown-container}} diff --git a/app/templates/team.hbs b/app/templates/team.hbs index 46c1baa3b88..da4f43976fe 100644 --- a/app/templates/team.hbs +++ b/app/templates/team.hbs @@ -55,6 +55,11 @@ Recent Downloads {{/link-to}} +
  • + {{#link-to (query-params sort="recently-updated")}} + Recently Updated + {{/link-to}} +
  • {{/rl-dropdown}} {{/rl-dropdown-container}} diff --git a/app/templates/user.hbs b/app/templates/user.hbs index d9149e013a9..8458032775d 100644 --- a/app/templates/user.hbs +++ b/app/templates/user.hbs @@ -46,6 +46,11 @@ Recent Downloads {{/link-to}} +
  • + {{#link-to (query-params sort="recently-updated")}} + Recently Updated + {{/link-to}} +
  • {{/rl-dropdown}} {{/rl-dropdown-container}} From cb6c362f62a7186897ab682321e7c95d2d311429 Mon Sep 17 00:00:00 2001 From: Brandon Moore Date: Wed, 21 Feb 2018 14:20:12 -0500 Subject: [PATCH 3/4] changed recently updated to recent updates to match recent downloads --- app/controllers/category/index.js | 4 ++-- app/controllers/crates.js | 4 ++-- app/controllers/keyword/index.js | 4 ++-- app/controllers/me/crates.js | 4 ++-- app/controllers/search.js | 4 ++-- app/controllers/team.js | 4 ++-- app/controllers/user.js | 4 ++-- app/templates/category/index.hbs | 4 ++-- app/templates/crates.hbs | 4 ++-- app/templates/keyword/index.hbs | 4 ++-- app/templates/me/crates.hbs | 4 ++-- app/templates/search.hbs | 4 ++-- app/templates/team.hbs | 4 ++-- app/templates/user.hbs | 4 ++-- src/controllers/krate/search.rs | 2 +- src/tests/krate.rs | 8 ++++---- tests/acceptance/search-test.js | 2 +- 17 files changed, 34 insertions(+), 34 deletions(-) diff --git a/app/controllers/category/index.js b/app/controllers/category/index.js index e9bfed13947..2e4d091ac1a 100644 --- a/app/controllers/category/index.js +++ b/app/controllers/category/index.js @@ -19,8 +19,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'alpha') { return 'Alphabetical'; - } else if (this.get('sort') === 'recently-updated') { - return 'Recently Updated'; + } else if (this.get('sort') === 'recent-updates') { + return 'Recent Updates'; } else { return 'Recent Downloads'; } diff --git a/app/controllers/crates.js b/app/controllers/crates.js index 4fe69dd2913..dbfc0e8ff74 100644 --- a/app/controllers/crates.js +++ b/app/controllers/crates.js @@ -19,8 +19,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; - } else if (this.get('sort') === 'recently-updated') { - return 'Recently Updated'; + } else if (this.get('sort') === 'recent-updates') { + return 'Recent Updates'; } else { return 'Alphabetical'; } diff --git a/app/controllers/keyword/index.js b/app/controllers/keyword/index.js index c05ccf60001..aadd8fb66c9 100644 --- a/app/controllers/keyword/index.js +++ b/app/controllers/keyword/index.js @@ -17,8 +17,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'alpha') { return 'Alphabetical'; - } else if (this.get('sort') === 'recently-updated') { - return 'Recently Updated'; + } else if (this.get('sort') === 'recent-updates') { + return 'Recent Updates'; } else { return 'Recent Downloads'; } diff --git a/app/controllers/me/crates.js b/app/controllers/me/crates.js index df461531d3c..fd9c716d1b8 100644 --- a/app/controllers/me/crates.js +++ b/app/controllers/me/crates.js @@ -19,8 +19,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; - } else if (this.get('sort') === 'recently-updated') { - return 'Recently Updated'; + } else if (this.get('sort') === 'recent-updates') { + return 'Recent Updates'; } else { return 'Alphabetical'; } diff --git a/app/controllers/search.js b/app/controllers/search.js index 05948ea6a39..4fc8564f512 100644 --- a/app/controllers/search.js +++ b/app/controllers/search.js @@ -31,8 +31,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; - } else if (this.get('sort') === 'recently-updated') { - return 'Recently Updated'; + } else if (this.get('sort') === 'recent-updates') { + return 'Recent Updates'; } else { return 'Relevance'; } diff --git a/app/controllers/team.js b/app/controllers/team.js index b45dcf0ab04..8d36c2bfe56 100644 --- a/app/controllers/team.js +++ b/app/controllers/team.js @@ -17,8 +17,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; - } else if (this.get('sort') === 'recently-updated') { - return 'Recently Updated'; + } else if (this.get('sort') === 'recent-updates') { + return 'Recent Updates'; } else { return 'Alphabetical'; } diff --git a/app/controllers/user.js b/app/controllers/user.js index c13f9261cb1..08b51995c2d 100644 --- a/app/controllers/user.js +++ b/app/controllers/user.js @@ -18,8 +18,8 @@ export default Controller.extend(PaginationMixin, { return 'All-Time Downloads'; } else if (this.sort === 'recent-downloads') { return 'Recent Downloads'; - } else if (this.get('sort') === 'recently-updated') { - return 'Recently Updated'; + } else if (this.get('sort') === 'recent-updates') { + return 'Recent Updates'; } else { return 'Alphabetical'; } diff --git a/app/templates/category/index.hbs b/app/templates/category/index.hbs index 409965e0049..8cffed09829 100644 --- a/app/templates/category/index.hbs +++ b/app/templates/category/index.hbs @@ -70,8 +70,8 @@ {{/link-to}}
  • - {{#link-to (query-params sort="recently-updated")}} - Recently Updated + {{#link-to (query-params sort="recent-updates")}} + Recent Updates {{/link-to}}
  • {{/rl-dropdown}} diff --git a/app/templates/crates.hbs b/app/templates/crates.hbs index 30afdc7f9e4..1b63ff233ff 100644 --- a/app/templates/crates.hbs +++ b/app/templates/crates.hbs @@ -61,8 +61,8 @@ {{/link-to}}
  • - {{#link-to (query-params page=1 sort="recently-updated")}} - Recently Updated + {{#link-to (query-params page=1 sort="recent-updates")}} + Recent Updates {{/link-to}}
  • {{/rl-dropdown}} diff --git a/app/templates/keyword/index.hbs b/app/templates/keyword/index.hbs index f1e11b53e3d..d187261ea60 100644 --- a/app/templates/keyword/index.hbs +++ b/app/templates/keyword/index.hbs @@ -41,8 +41,8 @@ {{/link-to}}
  • - {{#link-to (query-params sort="recently-updated")}} - Recently Updated + {{#link-to (query-params sort="recent-updates")}} + Recent Updates {{/link-to}}
  • {{/rl-dropdown}} diff --git a/app/templates/me/crates.hbs b/app/templates/me/crates.hbs index 81075827883..fc3303e1683 100644 --- a/app/templates/me/crates.hbs +++ b/app/templates/me/crates.hbs @@ -42,8 +42,8 @@ {{/link-to}}
  • - {{#link-to (query-params sort="recently-updated")}} - Recently Updated + {{#link-to (query-params sort="recent-updates")}} + Recent Updates {{/link-to}}
  • {{/rl-dropdown}} diff --git a/app/templates/search.hbs b/app/templates/search.hbs index 956fe8a4e6f..f261201d7e0 100644 --- a/app/templates/search.hbs +++ b/app/templates/search.hbs @@ -53,8 +53,8 @@ {{/link-to}}
  • - {{#link-to (query-params page=1 sort="recently-updated")}} - Recently Updated + {{#link-to (query-params page=1 sort="recent-updates")}} + Recent Updates {{/link-to}}
  • {{/rl-dropdown}} diff --git a/app/templates/team.hbs b/app/templates/team.hbs index da4f43976fe..a0481e6e521 100644 --- a/app/templates/team.hbs +++ b/app/templates/team.hbs @@ -56,8 +56,8 @@ {{/link-to}}
  • - {{#link-to (query-params sort="recently-updated")}} - Recently Updated + {{#link-to (query-params sort="recent-updates")}} + Recent Updates {{/link-to}}
  • {{/rl-dropdown}} diff --git a/app/templates/user.hbs b/app/templates/user.hbs index 8458032775d..69ce4ce34da 100644 --- a/app/templates/user.hbs +++ b/app/templates/user.hbs @@ -47,8 +47,8 @@ {{/link-to}}
  • - {{#link-to (query-params sort="recently-updated")}} - Recently Updated + {{#link-to (query-params sort="recent-updates")}} + Recent Updates {{/link-to}}
  • {{/rl-dropdown}} diff --git a/src/controllers/krate/search.rs b/src/controllers/krate/search.rs index c1e7ff52ae9..06e7626f464 100644 --- a/src/controllers/krate/search.rs +++ b/src/controllers/krate/search.rs @@ -143,7 +143,7 @@ pub fn search(req: &mut dyn Request) -> CargoResult { query = query.then_order_by(crates::downloads.desc()) } else if sort == "recent-downloads" { query = query.then_order_by(recent_crate_downloads::downloads.desc().nulls_last()) - } else if sort == "recently-updated" { + } else if sort == "recent-updates" { query = query.order(crates::updated_at.desc()); } else { query = query.then_order_by(crates::name.asc()) diff --git a/src/tests/krate.rs b/src/tests/krate.rs index 9aa0abbb6e8..65ca1ceff39 100644 --- a/src/tests/krate.rs +++ b/src/tests/krate.rs @@ -362,8 +362,8 @@ fn index_sorting() { assert_eq!(json.crates[2].name, "bar_sort"); assert_eq!(json.crates[3].name, "other_sort"); - //Sort by recently-updated - let mut response = ok_resp!(middle.call(req.with_query("sort=recently-updated"),)); + //Sort by recent-updates + let mut response = ok_resp!(middle.call(req.with_query("sort=recent-updates"),)); let json: CrateList = ::json(&mut response); assert_eq!(json.meta.total, 4); assert_eq!(json.crates[0].name, "other_sort"); @@ -477,8 +477,8 @@ fn exact_match_on_queries_with_sort() { assert_eq!(json.crates[1].name, "foo_sort"); assert_eq!(json.crates[2].name, "baz_sort"); - //Sort by recently-updated - let mut response = ok_resp!(middle.call(req.with_query("q=bar_sort&sort=recently-updated"),)); + //Sort by recent-updates + let mut response = ok_resp!(middle.call(req.with_query("q=bar_sort&sort=recent-updates"),)); let json: CrateList = ::json(&mut response); assert_eq!(json.meta.total, 3); assert_eq!(json.crates[0].name, "baz_sort"); diff --git a/tests/acceptance/search-test.js b/tests/acceptance/search-test.js index 4e070023f77..5fd25b85cef 100644 --- a/tests/acceptance/search-test.js +++ b/tests/acceptance/search-test.js @@ -36,7 +36,7 @@ module('Acceptance | search', function(hooks) { assert.dom('[data-test-search-nav]').hasText('Displaying 1-8 of 8 total results'); assert .dom('[data-test-search-sort]') - .hasText('Sort by Relevance Relevance All-Time Downloads Recent Downloads'); + .hasText('Sort by Relevance Relevance All-Time Downloads Recent Downloads Recent Updates'); assert.dom('[data-test-crate-row="0"] [data-test-crate-link]').hasText('kinetic-rust'); assert.dom('[data-test-crate-row="0"] [data-test-version-badge]').hasAttribute('alt', '0.0.16'); From 389181056cb11aab8b77c892c20d57e7bb3be402 Mon Sep 17 00:00:00 2001 From: "Carol (Nichols || Goulding)" Date: Fri, 20 Jul 2018 15:56:08 -0400 Subject: [PATCH 4/4] Fix up some comments --- src/tests/krate.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/tests/krate.rs b/src/tests/krate.rs index 65ca1ceff39..e55c1a6292c 100644 --- a/src/tests/krate.rs +++ b/src/tests/krate.rs @@ -362,7 +362,7 @@ fn index_sorting() { assert_eq!(json.crates[2].name, "bar_sort"); assert_eq!(json.crates[3].name, "other_sort"); - //Sort by recent-updates + // Sort by recent-updates let mut response = ok_resp!(middle.call(req.with_query("sort=recent-updates"),)); let json: CrateList = ::json(&mut response); assert_eq!(json.meta.total, 4); @@ -372,8 +372,7 @@ fn index_sorting() { assert_eq!(json.crates[3].name, "foo_sort"); // Test for bug with showing null results first when sorting - // by descending - // This has nothing to do with querying for exact match I'm sorry + // by descending downloads let mut response = ok_resp!(middle.call(req.with_query("sort=recent-downloads"))); let json: CrateList = ::json(&mut response); assert_eq!(json.meta.total, 4); @@ -477,7 +476,7 @@ fn exact_match_on_queries_with_sort() { assert_eq!(json.crates[1].name, "foo_sort"); assert_eq!(json.crates[2].name, "baz_sort"); - //Sort by recent-updates + // Sort by recent-updates let mut response = ok_resp!(middle.call(req.with_query("q=bar_sort&sort=recent-updates"),)); let json: CrateList = ::json(&mut response); assert_eq!(json.meta.total, 3); @@ -486,8 +485,7 @@ fn exact_match_on_queries_with_sort() { assert_eq!(json.crates[2].name, "foo_sort"); // Test for bug with showing null results first when sorting - // by descending - // This has nothing to do with querying for exact match I'm sorry + // by descending downloads let mut response = ok_resp!(middle.call(req.with_query("sort=recent-downloads"))); let json: CrateList = ::json(&mut response); assert_eq!(json.meta.total, 4);