Commit 5ae88da3 by Robert Raposa Committed by GitHub

Merge pull request #208 from edx/robrap/TNL-5115

TNL-5115: Remove sort order from cs_comment_service
parents bb116a19 d64a2113
...@@ -13,7 +13,6 @@ get "#{APIPREFIX}/threads" do # retrieve threads by course ...@@ -13,7 +13,6 @@ get "#{APIPREFIX}/threads" do # retrieve threads by course
value_to_boolean(params["unread"]), value_to_boolean(params["unread"]),
value_to_boolean(params["unanswered"]), value_to_boolean(params["unanswered"]),
params["sort_key"], params["sort_key"],
params["sort_order"],
params["page"], params["page"],
params["per_page"] params["per_page"]
).to_json ).to_json
......
...@@ -18,7 +18,6 @@ get "#{APIPREFIX}/:commentable_id/threads" do |commentable_id| ...@@ -18,7 +18,6 @@ get "#{APIPREFIX}/:commentable_id/threads" do |commentable_id|
value_to_boolean(params["unread"]), value_to_boolean(params["unread"]),
value_to_boolean(params["unanswered"]), value_to_boolean(params["unanswered"]),
params["sort_key"], params["sort_key"],
params["sort_order"],
params["page"], params["page"],
params["per_page"], params["per_page"],
params["context"] ? params["context"] : :course params["context"] ? params["context"] : :course
......
...@@ -12,7 +12,6 @@ get "#{APIPREFIX}/users/:user_id/subscribed_threads" do |user_id| ...@@ -12,7 +12,6 @@ get "#{APIPREFIX}/users/:user_id/subscribed_threads" do |user_id|
value_to_boolean(params["unread"]), value_to_boolean(params["unread"]),
value_to_boolean(params["unanswered"]), value_to_boolean(params["unanswered"]),
params["sort_key"], params["sort_key"],
params["sort_order"],
params["page"], params["page"],
params["per_page"] params["per_page"]
).to_json ).to_json
......
...@@ -88,7 +88,6 @@ get "#{APIPREFIX}/search/threads" do ...@@ -88,7 +88,6 @@ get "#{APIPREFIX}/search/threads" do
value_to_boolean(local_params["unread"]), value_to_boolean(local_params["unread"]),
value_to_boolean(local_params["unanswered"]), value_to_boolean(local_params["unanswered"]),
local_params["sort_key"], local_params["sort_key"],
local_params["sort_order"],
local_params["page"], local_params["page"],
local_params["per_page"], local_params["per_page"],
context context
......
...@@ -137,7 +137,6 @@ helpers do ...@@ -137,7 +137,6 @@ helpers do
filter_unread, filter_unread,
filter_unanswered, filter_unanswered,
sort_key, sort_key,
sort_order,
page, page,
per_page, per_page,
context=:course context=:course
...@@ -175,7 +174,7 @@ helpers do ...@@ -175,7 +174,7 @@ helpers do
end end
end end
sort_criteria = get_sort_criteria(sort_key, sort_order) sort_criteria = get_sort_criteria(sort_key)
if not sort_criteria if not sort_criteria
{} {}
else else
...@@ -240,7 +239,7 @@ helpers do ...@@ -240,7 +239,7 @@ helpers do
# Given query params, return sort criteria appropriate for passing to the # Given query params, return sort criteria appropriate for passing to the
# order_by function of a Mongoid query. Returns nil if params are not valid. # order_by function of a Mongoid query. Returns nil if params are not valid.
def get_sort_criteria(sort_key, sort_order) def get_sort_criteria(sort_key)
sort_key_mapper = { sort_key_mapper = {
"date" => :created_at, "date" => :created_at,
"activity" => :last_activity_at, "activity" => :last_activity_at,
...@@ -248,16 +247,11 @@ helpers do ...@@ -248,16 +247,11 @@ helpers do
"comments" => :comment_count, "comments" => :comment_count,
} }
sort_order_mapper = {
"desc" => :desc,
"asc" => :asc,
}
sort_key = sort_key_mapper[params["sort_key"] || "date"] sort_key = sort_key_mapper[params["sort_key"] || "date"]
sort_order = sort_order_mapper[params["sort_order"] || "desc"]
if sort_key && sort_order if sort_key
sort_criteria = [[:pinned, :desc], [sort_key, sort_order]] # only sort order of :desc is supported. support for :asc would require new indices.
sort_criteria = [[:pinned, :desc], [sort_key, :desc]]
if ![:created_at, :last_activity_at].include? sort_key if ![:created_at, :last_activity_at].include? sort_key
sort_criteria << [:created_at, :desc] sort_criteria << [:created_at, :desc]
end end
......
...@@ -76,19 +76,18 @@ namespace :benchmark do ...@@ -76,19 +76,18 @@ namespace :benchmark do
Benchmark.bm(31) do |x| Benchmark.bm(31) do |x|
sort_keys = %w[date activity votes comments] sort_keys = %w[date activity votes comments]
sort_order = "desc"
x.report("querying threads in a course") do x.report("querying threads in a course") do
(1..COURSE_THREAD_QUERY).each do |seed| (1..COURSE_THREAD_QUERY).each do |seed|
query_params = { course_id: "1", sort_key: sort_keys[seed % 4], sort_order: sort_order, page: seed % 5 + 1, per_page: 5 } query_params = { course_id: "1", sort_key: sort_keys[seed % 4], page: seed % 5 + 1, per_page: 5 }
RestClient.get "#{PREFIX}/threads", params: query_params RestClient.get "#{PREFIX}/threads", params: query_params
end end
end end
x.report("searching threads in a course") do x.report("searching threads in a course") do
(1..COURSE_THREAD_QUERY).each do |seed| (1..COURSE_THREAD_QUERY).each do |seed|
query_params = { course_id: "1", text: "token#{seed % 10} token#{(seed * seed) % 10}", sort_key: sort_keys[seed % 4], sort_order: sort_order, page: seed % 5 + 1, per_page: 5 } query_params = { course_id: "1", text: "token#{seed % 10} token#{(seed * seed) % 10}", sort_key: sort_keys[seed % 4], page: seed % 5 + 1, per_page: 5 }
RestClient.get "#{PREFIX}/search/threads", params: query_params RestClient.get "#{PREFIX}/search/threads", params: query_params
end end
end end
......
...@@ -50,7 +50,6 @@ namespace :deep_search do ...@@ -50,7 +50,6 @@ namespace :deep_search do
end end
sort_keys = %w[date activity votes comments] sort_keys = %w[date activity votes comments]
sort_order = "desc"
#set the sinatra env to test to avoid 401'ing #set the sinatra env to test to avoid 401'ing
set :environment, :test set :environment, :test
...@@ -58,7 +57,7 @@ namespace :deep_search do ...@@ -58,7 +57,7 @@ namespace :deep_search do
start_time = Time.now start_time = Time.now
puts "Starting test at #{start_time}" puts "Starting test at #{start_time}"
1000.times do |i| 1000.times do |i|
query_params = { course_id: "1", sort_key: sort_keys.sample, sort_order: sort_order, page: 1, per_page: 5, text: bodies.sample } query_params = { course_id: "1", sort_key: sort_keys.sample, page: 1, per_page: 5, text: bodies.sample }
RestClient.get "#{PREFIX}/threads", params: query_params RestClient.get "#{PREFIX}/threads", params: query_params
end end
end_time = Time.now end_time = Time.now
......
...@@ -21,18 +21,13 @@ describe "app" do ...@@ -21,18 +21,13 @@ describe "app" do
result.should == {} result.should == {}
end end
it "returns an empty reuslt if text parameter is missing" do it "returns an empty result if text parameter is missing" do
get "/api/v1/search/threads", course_id: course_id get "/api/v1/search/threads", course_id: course_id
assert_empty_response assert_empty_response
end end
it "returns an empty reuslt if sort key is invalid" do it "returns an empty result if sort key is invalid" do
get "/api/v1/search/threads", course_id: course_id, text: "foobar", sort_key: "invalid", sort_order: "desc" get "/api/v1/search/threads", course_id: course_id, text: "foobar", sort_key: "invalid"
assert_empty_response
end
it "returns an empty reuslt if sort order is invalid" do
get "/api/v1/search/threads", course_id: course_id, text: "foobar", sort_key: "date", sort_order: "invalid"
assert_empty_response assert_empty_response
end end
...@@ -159,8 +154,8 @@ describe "app" do ...@@ -159,8 +154,8 @@ describe "app" do
threads threads
end end
def check_sort(sort_key, sort_order, expected_thread_indexes) def check_sort(sort_key, expected_thread_indexes)
get "/api/v1/search/threads", text: "text", course_id: course_id, sort_key: sort_key, sort_order: sort_order get "/api/v1/search/threads", text: "text", course_id: course_id, sort_key: sort_key
last_response.should be_ok last_response.should be_ok
result = parse(last_response.body) result = parse(last_response.body)
actual_ids = get_result_ids(result) actual_ids = get_result_ids(result)
...@@ -169,29 +164,23 @@ describe "app" do ...@@ -169,29 +164,23 @@ describe "app" do
end end
it "by date" do it "by date" do
asc_order = [0, 1, 2, 3, 4, 5] check_sort("date", [5, 4, 3, 2, 1, 0])
check_sort("date", "asc", asc_order)
check_sort("date", "desc", asc_order.reverse)
end end
it "by activity" do it "by activity" do
asc_order = [0, 1, 2, 3, 4, 5] check_sort("activity", [5, 4, 3, 2, 1, 0])
check_sort("activity", "asc", asc_order)
check_sort("activity", "desc", asc_order.reverse)
end end
it "by votes" do it "by votes" do
check_sort("votes", "asc", [5, 4, 3, 0, 2, 1]) check_sort("votes", [2, 1, 5, 4, 3, 0])
check_sort("votes", "desc", [2, 1, 5, 4, 3, 0])
end end
it "by comments" do it "by comments" do
check_sort("comments", "asc", [5, 4, 2, 0, 3, 1]) check_sort("comments", [3, 1, 5, 4, 2, 0])
check_sort("comments", "desc", [3, 1, 5, 4, 2, 0])
end end
it "by default" do it "by default" do
check_sort(nil, nil, [5, 4, 3, 2, 1, 0]) check_sort(nil, [5, 4, 3, 2, 1, 0])
end end
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment