Commit 9253c083771c2caf0a2e8838ea7739ac1fa9cae6
1 parent
44950287
Exists in
master
and in
29 other branches
ActionItem93: making profile tests pass again
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@994 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
2 changed files
with
34 additions
and
12 deletions
Show diff stats
app/models/profile.rb
... | ... | @@ -15,7 +15,7 @@ class Profile < ActiveRecord::Base |
15 | 15 | |
16 | 16 | acts_as_design |
17 | 17 | |
18 | -# acts_as_ferret :fields => [ :name ] | |
18 | + acts_as_ferret :fields => [ :name ] | |
19 | 19 | |
20 | 20 | # Valid identifiers must match this format. |
21 | 21 | IDENTIFIER_FORMAT = /^[a-z][a-z0-9_]*[a-z0-9]$/ |
... | ... | @@ -42,7 +42,7 @@ class Profile < ActiveRecord::Base |
42 | 42 | |
43 | 43 | has_many :role_assignments, :as => :resource |
44 | 44 | |
45 | - has_many :articles | |
45 | + has_many :articles, :dependent => :destroy | |
46 | 46 | belongs_to :home_page, :class_name => Article.name, :foreign_key => 'home_page_id' |
47 | 47 | |
48 | 48 | has_one :image, :as => :owner |
... | ... | @@ -113,13 +113,13 @@ class Profile < ActiveRecord::Base |
113 | 113 | self.user ? self.user.email : nil |
114 | 114 | end |
115 | 115 | |
116 | - # gets recent documents in this profile. | |
116 | + # gets recent documents in this profile, ordered from the most recent to the | |
117 | + # oldest. | |
117 | 118 | # |
118 | 119 | # +limit+ is the maximum number of documents to be returned. It defaults to |
119 | 120 | # 10. |
120 | 121 | def recent_documents(limit = 10) |
121 | - # FIXME not like this anymore | |
122 | - raise 'needs to be rewritten' | |
122 | + self.articles.recent(self, limit) | |
123 | 123 | end |
124 | 124 | |
125 | 125 | def superior_instance | ... | ... |
test/unit/profile_test.rb
... | ... | @@ -94,8 +94,15 @@ class ProfileTest < Test::Unit::TestCase |
94 | 94 | assert ! Profile.search('not_wanted').include?(p) |
95 | 95 | end |
96 | 96 | |
97 | - def test_should_remove_pages_when_removing_profile | |
98 | - flunk 'pending' | |
97 | + should 'remove pages when removing profile' do | |
98 | + profile = Profile.create!(:name => 'testing profile', :identifier => 'testingprofile') | |
99 | + first = profile.articles.build(:name => 'first'); first.save! | |
100 | + second = profile.articles.build(:name => 'second'); second.save! | |
101 | + third = profile.articles.build(:name => 'third'); third.save! | |
102 | + | |
103 | + n = Article.count | |
104 | + profile.destroy | |
105 | + assert_equal n - 3, Article.count | |
99 | 106 | end |
100 | 107 | |
101 | 108 | def test_should_define_info |
... | ... | @@ -112,12 +119,14 @@ class ProfileTest < Test::Unit::TestCase |
112 | 119 | assert_invalid_identifier 'test' |
113 | 120 | end |
114 | 121 | |
115 | - def test_should_provide_recent_documents | |
116 | - flunk 'pending' | |
117 | - end | |
122 | + should 'provide recent documents' do | |
123 | + profile = Profile.create!(:name => 'testing profile', :identifier => 'testingprofile') | |
124 | + first = profile.articles.build(:name => 'first'); first.save! | |
125 | + second = profile.articles.build(:name => 'second'); second.save! | |
126 | + third = profile.articles.build(:name => 'third'); third.save! | |
118 | 127 | |
119 | - def test_should_provide_most_recent_documents | |
120 | - flunk 'pending' | |
128 | + assert_equal [first,second], profile.recent_documents(2) | |
129 | + assert_equal [first,second,third], profile.recent_documents | |
121 | 130 | end |
122 | 131 | |
123 | 132 | should 'affiliate and provide a list of the affiliated users' do |
... | ... | @@ -180,6 +189,19 @@ class ProfileTest < Test::Unit::TestCase |
180 | 189 | assert_not_same list, other_list |
181 | 190 | end |
182 | 191 | |
192 | + should 'be able to find profiles by their names with ferret' do | |
193 | + small = Profile.create!(:name => 'A small profile for testing ', :identifier => 'smallprofilefortesting') | |
194 | + big = Profile.create!(:name => 'A big profile for testing', :identifier => 'bigprofilefortesting') | |
195 | + | |
196 | + assert Profile.find_by_contents('small').include?(small) | |
197 | + assert Profile.find_by_contents('big').include?(big) | |
198 | + | |
199 | + both = Profile.find_by_contents('profile testing') | |
200 | + assert both.include?(small) | |
201 | + assert both.include?(big) | |
202 | + end | |
203 | + | |
204 | + | |
183 | 205 | private |
184 | 206 | |
185 | 207 | def assert_invalid_identifier(id) | ... | ... |