Commit 449502872be76c8eed45497c239ad9461ea9883c
1 parent
118042b5
Exists in
master
and in
29 other branches
ActionItem93: rewriting support for "recent documents"
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@993 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
2 changed files
with
20 additions
and
2 deletions
Show diff stats
app/models/article.rb
@@ -13,12 +13,18 @@ class Article < ActiveRecord::Base | @@ -13,12 +13,18 @@ class Article < ActiveRecord::Base | ||
13 | 13 | ||
14 | acts_as_versioned | 14 | acts_as_versioned |
15 | 15 | ||
16 | - # retrives all articles belonging to the given +profile+ that are not | 16 | + # retrieves all articles belonging to the given +profile+ that are not |
17 | # sub-articles of any other article. | 17 | # sub-articles of any other article. |
18 | - def Article.top_level_for(profile) | 18 | + def self.top_level_for(profile) |
19 | self.find(:all, :conditions => [ 'parent_id is null and profile_id = ?', profile.id ]) | 19 | self.find(:all, :conditions => [ 'parent_id is null and profile_id = ?', profile.id ]) |
20 | end | 20 | end |
21 | 21 | ||
22 | + # retrieves the latest +limit+ articles in profile +profile+, sorted from the | ||
23 | + # most recent to the oldest. | ||
24 | + def self.recent(profile, limit) | ||
25 | + self.find(:all, :limit => limit, :order => 'created_on') | ||
26 | + end | ||
27 | + | ||
22 | # produces the HTML code that is to be displayed as this article's contents. | 28 | # produces the HTML code that is to be displayed as this article's contents. |
23 | # | 29 | # |
24 | # The implementation in this class just provides the +body+ attribute as the | 30 | # The implementation in this class just provides the +body+ attribute as the |
test/unit/article_test.rb
@@ -128,7 +128,19 @@ class ArticleTest < Test::Unit::TestCase | @@ -128,7 +128,19 @@ class ArticleTest < Test::Unit::TestCase | ||
128 | a.last_changed_by = Person.new | 128 | a.last_changed_by = Person.new |
129 | a.save! | 129 | a.save! |
130 | end | 130 | end |
131 | + end | ||
131 | 132 | ||
133 | + should 'search for recent documents for a given profile' do | ||
134 | + first = profile.articles.build(:name => 'first'); first.save! | ||
135 | + second = profile.articles.build(:name => 'second'); second.save! | ||
136 | + third = profile.articles.build(:name => 'third'); third.save! | ||
137 | + forth = profile.articles.build(:name => 'forth'); forth.save! | ||
138 | + fifth = profile.articles.build(:name => 'fifth'); fifth.save! | ||
139 | + | ||
140 | + assert_equal [first,second,third], Article.recent(profile, 3) | ||
141 | + | ||
142 | + assert_equal [first,second,third,forth,fifth], Article.recent(profile, 10) | ||
143 | + | ||
132 | end | 144 | end |
133 | 145 | ||
134 | end | 146 | end |