DEV: Standardize table sorting verbiage (#9757)

* DEV: Standardize table sorting verbiage

This commit creates a common component that tables can use to make their
headers sortable. This commit also standardizes on using `desc` as the
default and passing in the `asc=true` flag to adjust the sorting
direction.

* Add deprecation warnings

Adds deprecation warnings if using previous params and maintains
backwards compatibility. Set the default sort value for group members to
be asc.

* switch group requests to use common table-header-toggle

* update fixture
This commit is contained in:
Blake Erickson
2020-05-14 20:10:59 -06:00
committed by GitHub
parent 11cd149122
commit 1a2b9435b0
18 changed files with 49 additions and 106 deletions

View File

@ -29,7 +29,7 @@ describe AdminUserIndexQuery do
end
it "allows custom ordering asc" do
query = ::AdminUserIndexQuery.new(order: "trust_level", ascending: true)
query = ::AdminUserIndexQuery.new(order: "trust_level", asc: true)
expect(query.find_users_query.to_sql).to match("trust_level ASC")
end
@ -39,7 +39,7 @@ describe AdminUserIndexQuery do
end
it "allows custom ordering and direction for stats" do
query = ::AdminUserIndexQuery.new(order: "topics_viewed", ascending: true)
query = ::AdminUserIndexQuery.new(order: "topics_viewed", asc: true)
expect(query.find_users_query.to_sql).to match("topics_entered ASC")
end
end
@ -118,7 +118,7 @@ describe AdminUserIndexQuery do
end
it "shows nil values first with asc" do
users = ::AdminUserIndexQuery.new(order: "last_emailed", ascending: true).find_users
users = ::AdminUserIndexQuery.new(order: "last_emailed", asc: true).find_users
expect(users.where('users.id > -2').count).to eq(2)
expect(users.where('users.id > -2').order('users.id asc').first.username).to eq("system")

View File

@ -489,7 +489,7 @@ describe GroupsController do
4.times { group.add(Fabricate(:user)) }
usernames = group.users.map { |m| m.username }.sort
get "/groups/#{group.name}/members.json", params: { limit: 3 }
get "/groups/#{group.name}/members.json", params: { limit: 3, asc: true }
expect(response.status).to eq(200)
@ -497,7 +497,7 @@ describe GroupsController do
expect(members.map { |m| m['username'] }).to eq(usernames[0..2])
get "/groups/#{group.name}/members.json", params: { limit: 3, offset: 3 }
get "/groups/#{group.name}/members.json", params: { limit: 3, offset: 3, asc: true }
expect(response.status).to eq(200)
@ -505,7 +505,7 @@ describe GroupsController do
expect(members.map { |m| m['username'] }).to eq(usernames[3..5])
get "/groups/#{group.name}/members.json", params: { order: 'added_at', desc: true }
get "/groups/#{group.name}/members.json", params: { order: 'added_at' }
members = response.parsed_body["members"]
expect(members.last['added_at']).to eq(first_user.created_at.as_json)
@ -851,7 +851,7 @@ describe GroupsController do
it "should allow members to be sorted by" do
get "/groups/#{group.name}/members.json", params: {
order: 'last_seen_at', desc: true
order: 'last_seen_at'
}
expect(response.status).to eq(200)
@ -860,7 +860,7 @@ describe GroupsController do
expect(members.map { |m| m["id"] }).to eq([user1.id, user2.id, user3.id])
get "/groups/#{group.name}/members.json", params: { order: 'last_seen_at' }
get "/groups/#{group.name}/members.json", params: { order: 'last_seen_at', asc: true }
expect(response.status).to eq(200)
@ -869,7 +869,7 @@ describe GroupsController do
expect(members.map { |m| m["id"] }).to eq([user2.id, user1.id, user3.id])
get "/groups/#{group.name}/members.json", params: {
order: 'last_posted_at', desc: true
order: 'last_posted_at'
}
expect(response.status).to eq(200)