Commit d90595acd954e4232abad6402b6fc7c6fd91ddfe
Committed by
Marcos Pereira
1 parent
75101844
Exists in
staging
and in
31 other branches
api: accept article type when create articles
Showing
3 changed files
with
14 additions
and
2 deletions
Show diff stats
lib/noosfero/api/helpers.rb
@@ -108,7 +108,7 @@ require_relative '../../find_by_contents' | @@ -108,7 +108,7 @@ require_relative '../../find_by_contents' | ||
108 | def post_article(asset, params) | 108 | def post_article(asset, params) |
109 | return forbidden! unless current_person.can_post_content?(asset) | 109 | return forbidden! unless current_person.can_post_content?(asset) |
110 | 110 | ||
111 | - klass_type= params[:content_type].nil? ? TinyMceArticle.name : params[:content_type] | 111 | + klass_type = params[:content_type] || params[:article].delete(:type) || TinyMceArticle.name |
112 | return forbidden! unless ARTICLE_TYPES.include?(klass_type) | 112 | return forbidden! unless ARTICLE_TYPES.include?(klass_type) |
113 | 113 | ||
114 | article = klass_type.constantize.new(params[:article]) | 114 | article = klass_type.constantize.new(params[:article]) |
lib/noosfero/api/v1/articles.rb
@@ -230,7 +230,7 @@ module Noosfero | @@ -230,7 +230,7 @@ module Noosfero | ||
230 | parent_article = environment.articles.find(params[:id]) | 230 | parent_article = environment.articles.find(params[:id]) |
231 | return forbidden! unless parent_article.allow_create?(current_person) | 231 | return forbidden! unless parent_article.allow_create?(current_person) |
232 | 232 | ||
233 | - klass_type= params[:content_type].nil? ? 'TinyMceArticle' : params[:content_type] | 233 | + klass_type = params[:content_type] || params[:article].delete(:type) || 'TinyMceArticle' |
234 | #FIXME see how to check the article types | 234 | #FIXME see how to check the article types |
235 | #return forbidden! unless ARTICLE_TYPES.include?(klass_type) | 235 | #return forbidden! unless ARTICLE_TYPES.include?(klass_type) |
236 | 236 |
test/api/articles_test.rb
@@ -408,6 +408,18 @@ class ArticlesTest < ActiveSupport::TestCase | @@ -408,6 +408,18 @@ class ArticlesTest < ActiveSupport::TestCase | ||
408 | assert_kind_of TextArticle, Article.last | 408 | assert_kind_of TextArticle, Article.last |
409 | end | 409 | end |
410 | 410 | ||
411 | + should "#{kind} create article with type passed as parameter" do | ||
412 | + profile = fast_create(kind.camelcase.constantize, :environment_id => environment.id) | ||
413 | + Person.any_instance.stubs(:can_post_content?).with(profile).returns(true) | ||
414 | + | ||
415 | + Article.delete_all | ||
416 | + params[:article] = {:name => "Title", :type => 'TextArticle'} | ||
417 | + post "/api/v1/#{kind.pluralize}/#{profile.id}/articles?#{params.to_query}" | ||
418 | + json = JSON.parse(last_response.body) | ||
419 | + | ||
420 | + assert_kind_of TextArticle, Article.last | ||
421 | + end | ||
422 | + | ||
411 | should "#{kind}: create article of TinyMceArticle type if no content type is passed as parameter" do | 423 | should "#{kind}: create article of TinyMceArticle type if no content type is passed as parameter" do |
412 | profile = fast_create(kind.camelcase.constantize, :environment_id => environment.id) | 424 | profile = fast_create(kind.camelcase.constantize, :environment_id => environment.id) |
413 | Person.any_instance.stubs(:can_post_content?).with(profile).returns(true) | 425 | Person.any_instance.stubs(:can_post_content?).with(profile).returns(true) |