From d465f6e8d75dcb41d500180dcd2d8ee6caddedcb Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Thu, 5 May 2016 12:25:03 -0300 Subject: [PATCH] api: accept order param in search endpoint --- lib/noosfero/api/v1/search.rb | 8 ++++++-- test/unit/api/search_test.rb | 8 ++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/noosfero/api/v1/search.rb b/lib/noosfero/api/v1/search.rb index 572871b..370083d 100644 --- a/lib/noosfero/api/v1/search.rb +++ b/lib/noosfero/api/v1/search.rb @@ -19,10 +19,14 @@ module Noosfero scope = scope.where(make_conditions_with_parameter(params)) scope = scope.joins(:categories).where(:categories => {:id => params[:category_ids]}) if params[:category_ids].present? scope = scope.where('articles.children_count > 0') if params[:has_children].present? + + order = make_order_with_parameters(profile || environment, :articles, params) + scope = scope.reorder(order) + query = params[:query] || "" - order = "more_recent" + search_order = "more_recent" - options = {:filter => order, :template_id => params[:template_id]} + options = {:filter => search_order, :template_id => params[:template_id]} paginate_options = params.select{|k,v| [:page, :per_page].include?(k.to_sym)}.symbolize_keys paginate_options.each_pair{|k,v| v=v.to_i} diff --git a/test/unit/api/search_test.rb b/test/unit/api/search_test.rb index 7102674..5a95cea 100644 --- a/test/unit/api/search_test.rb +++ b/test/unit/api/search_test.rb @@ -156,4 +156,12 @@ class SearchTest < ActiveSupport::TestCase assert_equal [article2.id], json['articles'].map {|a| a['id']} end + should 'list articles with order' do + article1 = fast_create(Article, :profile_id => person.id, created_at: Time.now - 1.day) + article2 = fast_create(Article, :profile_id => person.id, created_at: Time.now) + params = {order: 'created_at DESC'} + get "/api/v1/search/article?#{params.to_query}" + json = JSON.parse(last_response.body) + assert_equal [article2.id, article1.id], json['articles'].map {|a| a['id']} + end end -- libgit2 0.21.2