diff --git a/lib/noosfero/api/v1/articles.rb b/lib/noosfero/api/v1/articles.rb index 5639389..fa2b6fc 100644 --- a/lib/noosfero/api/v1/articles.rb +++ b/lib/noosfero/api/v1/articles.rb @@ -197,7 +197,7 @@ module Noosfero child.hit present child, :with => Entities::Article, :fields => params[:fields] end - + desc 'Suggest a article to another profile' do detail 'Suggest a article to another profile (person, community...)' params Noosfero::API::Entities::Article.documentation diff --git a/lib/noosfero/api/v1/search.rb b/lib/noosfero/api/v1/search.rb index 6bfbb6c..2edd3c4 100644 --- a/lib/noosfero/api/v1/search.rb +++ b/lib/noosfero/api/v1/search.rb @@ -23,6 +23,8 @@ module Noosfero scope = scope.joins(:categories).where(:categories => {:id => params[:category_ids]}) if params[:category_ids].present? + scope = scope.where('children_count > 0') if params[:has_children].present? + query = params[:query] || "" order = "more_recent" diff --git a/test/unit/api/articles_test.rb b/test/unit/api/articles_test.rb index 90cb63e..dd608d6 100644 --- a/test/unit/api/articles_test.rb +++ b/test/unit/api/articles_test.rb @@ -40,11 +40,12 @@ class ArticlesTest < ActiveSupport::TestCase end should 'list article children' do - article = fast_create(Article, :profile_id => user.person.id, :name => "Some thing") - child1 = fast_create(Article, :parent_id => article.id, :profile_id => user.person.id, :name => "Some thing") - child2 = fast_create(Article, :parent_id => article.id, :profile_id => user.person.id, :name => "Some thing") + article = create(Article, :profile_id => user.person.id, :name => "Parent") + child1 = create(Article, :parent_id => article.id, :profile_id => user.person.id, :name => "Some Child") + child2 = create(Article, :parent_id => article.id, :profile_id => user.person.id, :name => "Some Child2") get "/api/v1/articles/#{article.id}/children?#{params.to_query}" json = JSON.parse(last_response.body) + assert_equivalent [child1.id, child2.id], json["articles"].map { |a| a["id"] } end diff --git a/test/unit/api/search_test.rb b/test/unit/api/search_test.rb index 823442b..64b2791 100644 --- a/test/unit/api/search_test.rb +++ b/test/unit/api/search_test.rb @@ -23,6 +23,16 @@ class SearchTest < ActiveSupport::TestCase assert_not_empty json['articles'] end + should 'list only articles that has children' do + article = fast_create(Article, :profile_id => person.id) + parent = create(Article, :profile_id => person.id, :name => 'parent article') + child = create(Article, :profile_id => person.id, :parent_id => parent.id, :name => 'child article') + + get "/api/v1/search/article?has_children=true" + json = JSON.parse(last_response.body) + assert_equal parent.id, json['articles'].first['id'] + end + should 'invalid search string articles' do fast_create(Article, :profile_id => person.id, :name => 'some article') get "/api/v1/search/article?query=test" -- libgit2 0.21.2