Commit 745bd5056dd98a333b26d0f37ac91fb7e0c1abd9

Authored by Victor Costa
1 parent 04962ef3

Named scope to filter article by array of types

app/models/article.rb
... ... @@ -444,6 +444,7 @@ class Article < ActiveRecord::Base
444 444 named_scope :galleries, :conditions => { :type => 'Gallery' }
445 445 named_scope :images, :conditions => { :is_image => true }
446 446 named_scope :text_articles, :conditions => [ 'articles.type IN (?)', text_article_types ]
  447 + named_scope :with_types, lambda { |types| { :conditions => [ 'articles.type IN (?)', types ] } }
447 448  
448 449 named_scope :more_popular, :order => 'hits DESC'
449 450 named_scope :more_comments, :order => "comments_count DESC"
... ...
test/unit/article_test.rb
... ... @@ -1744,4 +1744,17 @@ class ArticleTest < ActiveSupport::TestCase
1744 1744 assert_nil article.author_id
1745 1745 end
1746 1746  
  1747 + should 'return articles with specific types' do
  1748 + Article.delete_all
  1749 +
  1750 + c1 = fast_create(TinyMceArticle, :name => 'Testing article 1', :body => 'Article body 1', :profile_id => profile.id)
  1751 + c2 = fast_create(TextArticle, :name => 'Testing article 2', :body => 'Article body 2', :profile_id => profile.id)
  1752 + c3 = fast_create(Event, :name => 'Testing article 3', :body => 'Article body 3', :profile_id => profile.id)
  1753 + c4 = fast_create(RssFeed, :name => 'Testing article 4', :body => 'Article body 4', :profile_id => profile.id)
  1754 + c5 = fast_create(TextileArticle, :name => 'Testing article 5', :body => 'Article body 5', :profile_id => profile.id)
  1755 +
  1756 + assert_equivalent [c1,c2], Article.with_types(['TinyMceArticle', 'TextArticle'])
  1757 + assert_equivalent [c3], Article.with_types(['Event'])
  1758 + end
  1759 +
1747 1760 end
... ...