Commit 173bc36f14ade4cdc27ae2da9ea892528a637622
1 parent
59b1f0c0
Exists in
master
and in
22 other branches
Enhancements on wall
Showing
29 changed files
with
225 additions
and
260 deletions
Show diff stats
app/controllers/public/profile_controller.rb
... | ... | @@ -178,8 +178,8 @@ class ProfileController < PublicController |
178 | 178 | @scrap.receiver= receiver |
179 | 179 | @tab_action = params[:tab_action] |
180 | 180 | @message = @scrap.save ? _("Message successfully sent.") : _("You can't leave an empty message.") |
181 | - @activities = @profile.activities.paginate(:per_page => 30, :page => params[:page]) if params[:not_load_scraps].nil? | |
182 | - render :partial => 'profile_activities_list' | |
181 | + activities = @profile.activities.paginate(:per_page => 30, :page => params[:page]) if params[:not_load_scraps].nil? | |
182 | + render :partial => 'profile_activities_list', :locals => {:activities => activities} | |
183 | 183 | end |
184 | 184 | |
185 | 185 | def leave_comment_on_activity |
... | ... | @@ -191,8 +191,8 @@ class ProfileController < PublicController |
191 | 191 | @comment.source_type, @comment.source_id = (@activity.target_type == 'Article' ? ['Article', @activity.target_id] : [@activity.class.to_s, @activity.id]) |
192 | 192 | @tab_action = params[:tab_action] |
193 | 193 | @message = @comment.save ? _("Comment successfully added.") : _("You can't leave an empty comment.") |
194 | - @activities = @profile.activities.paginate(:per_page => 30, :page => params[:page]) if params[:not_load_scraps].nil? | |
195 | - render :partial => 'profile_activities_list' | |
194 | + activities = @profile.activities.paginate(:per_page => 30, :page => params[:page]) if params[:not_load_scraps].nil? | |
195 | + render :partial => 'profile_activities_list', :locals => {:activities => activities} | |
196 | 196 | end |
197 | 197 | |
198 | 198 | def view_more_scraps |
... | ... | @@ -202,7 +202,7 @@ class ProfileController < PublicController |
202 | 202 | |
203 | 203 | def view_more_activities |
204 | 204 | @activities = @profile.activities.paginate(:per_page => 30, :page => params[:page]) |
205 | - render :partial => 'profile_activities_scraps', :locals => {:activities => @activities} | |
205 | + render :partial => 'profile_activities_list', :locals => {:activities => @activities} | |
206 | 206 | end |
207 | 207 | |
208 | 208 | def view_more_network_activities | ... | ... |
app/models/enterprise.rb
... | ... | @@ -181,4 +181,8 @@ class Enterprise < Organization |
181 | 181 | true |
182 | 182 | end |
183 | 183 | |
184 | + def activities | |
185 | + Scrap.find_by_sql("SELECT id, updated_at, 'Scrap' AS klass FROM scraps WHERE scraps.receiver_id = #{self.id} AND scraps.scrap_id IS NULL UNION SELECT id, updated_at, 'ActionTracker::Record' AS klass FROM action_tracker WHERE action_tracker.target_id = #{self.id} UNION SELECT action_tracker.id, action_tracker.updated_at, 'ActionTracker::Record' AS klass FROM action_tracker INNER JOIN articles ON action_tracker.target_id = articles.id WHERE articles.profile_id = #{self.id} AND action_tracker.target_type = 'Article' ORDER BY action_tracker.updated_at DESC") | |
186 | + end | |
187 | + | |
184 | 188 | end | ... | ... |
app/models/scrap.rb
... | ... | @@ -13,6 +13,8 @@ class Scrap < ActiveRecord::Base |
13 | 13 | |
14 | 14 | track_actions :leave_scrap, :after_create, :keep_params => ['sender.name', 'content', 'receiver.name', 'receiver.url'], :if => Proc.new{|s| s.receiver != s.sender}, :custom_target => :action_tracker_target |
15 | 15 | |
16 | + track_actions :leave_scrap_to_self, :after_create, :keep_params => ['sender.name', 'content'], :if => Proc.new{|s| s.receiver == s.sender} | |
17 | + | |
16 | 18 | after_create do |scrap| |
17 | 19 | scrap.root.update_attribute('updated_at', DateTime.now) unless scrap.root.nil? |
18 | 20 | Scrap::Notifier.deliver_mail(scrap) if scrap.send_notification? | ... | ... |
app/models/uploaded_file.rb
app/views/profile/_comment.rhtml
1 | +<%# Comment %> | |
1 | 2 | <li class="article-comment" style='border-bottom:none;'> |
2 | 3 | <div class="article-comment-inner"> |
3 | 4 | |
4 | 5 | <div class="comment-content comment-logged-in"> |
5 | 6 | |
6 | - <% if Person.find(comment.author_id) %> | |
7 | - <%= link_to image_tag(profile_icon(Person.find(comment.author_id), :minor)), | |
7 | + <% if comment.author %> | |
8 | + <%= link_to image_tag(profile_icon(comment.author, :minor)), | |
8 | 9 | Person.find(comment.author_id).url, |
9 | 10 | :class => 'comment-picture', |
10 | - :title => Person.find(comment.author_id).name | |
11 | + :title => comment.author_name | |
11 | 12 | %> |
12 | 13 | <% end %> |
13 | 14 | |
14 | 15 | <div class="comment-details"> |
15 | 16 | <div class="comment-text"> |
16 | - <%= link_to(Person.find(comment.author_id).name, Person.find(comment.author_id).url) %> <%= txt2html comment.body %> | |
17 | + <%= link_to(comment.author_name, comment.author.url) %> <%= txt2html comment.body %> | |
17 | 18 | </div> |
18 | 19 | <div class="profile-activity-time"> |
19 | 20 | <%= time_ago_as_sentence(comment.created_at) %> |
20 | 21 | </div> |
21 | 22 | </div> |
22 | 23 | |
23 | - <% if logged_in? && (user == profile || user == Person.find(comment.author_id) || user.has_permission?(:moderate_comments, profile)) %> | |
24 | + <% if logged_in? && (user == profile || user == comment.author || user.has_permission?(:moderate_comments, profile)) %> | |
24 | 25 | <% button_bar(:style => 'float: right; margin-top: 0px;') do %> |
25 | 26 | <%= icon_button(:delete, _('Remove'), { :action => :remove_comment, :comment_id => comment.id }, :method => :get, :confirm => _('Are you sure you want to remove this comment and all its replies?')) %> |
26 | 27 | <% end %> |
... | ... | @@ -37,7 +38,7 @@ |
37 | 38 | }); |
38 | 39 | </script> |
39 | 40 | <% end %> |
40 | - <%= report_abuse(Person.find(comment.author_id), :comment_link, comment) if Person.find(comment.author_id) %> | |
41 | + <%= report_abuse(comment.author, :comment_link, comment) if comment.author %> | |
41 | 42 | <%= link_to_function _('Reply'), |
42 | 43 | "var f = add_comment_reply_form(this, %s); f.find('input[name=comment[title]], textarea').val(''); return false" % comment.id, |
43 | 44 | :class => 'comment-footer comment-footer-link comment-footer-hide', |
... | ... | @@ -47,7 +48,7 @@ |
47 | 48 | |
48 | 49 | </div> |
49 | 50 | |
50 | - <% unless Comment.find(comment.id).replies.blank? %> | |
51 | + <% unless comment.replies.blank? %> | |
51 | 52 | <ul class="comment-replies"> |
52 | 53 | <% comment.replies.each do |reply| %> |
53 | 54 | <%= render :partial => 'comment', :locals => { :comment => reply } %> | ... | ... |
app/views/profile/_create_article.rhtml
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | <div class='profile-activity-description profile-activity-article-<%= activity.target.class.icon_name %>'> |
5 | 5 | <p class='profile-activity-text'><%= link_to activity.user.name, activity.user.url %></p> |
6 | 6 | <div class='profile-activity-lead'> |
7 | - <b><%= activity.params['name'] %></b> | |
7 | + <b><%= link_to(activity.params['name'], activity.params['url']) %></b> | |
8 | 8 | <span title='<%= activity.target.class.short_description %>' class='profile-activity-icon icon-new icon-new<%= activity.target.class.icon_name %>'></span><br /> |
9 | 9 | <%= image_tag(activity.params['first_image']) unless activity.params['first_image'].blank? %><%= strip_tags(activity.params['lead']).gsub(/(\xA0|\xC2|\s)+/, ' ').gsub(/^\s+/, '') %> <small><%= link_to(_('See more'), activity.params['url']) unless activity.get_lead.blank? %></small></div> |
10 | 10 | <%= content_tag(:p, link_to(_('See complete forum'), activity.get_url), :class => 'see-forum') if activity.target.is_a?(Forum) %> | ... | ... |
app/views/profile/_leave_comment_on_activity.rhtml
app/views/profile/_leave_scrap.rhtml
app/views/profile/_leave_scrap_to_self.rhtml
app/views/profile/_profile.rhtml
1 | -<tr> | |
2 | - <td colspan='2'> | |
1 | +NÃO DEVE APARECER | |
3 | 2 | |
4 | - <% plugins_tabs = @plugins.dispatch(:profile_tabs). | |
5 | - map { |tab| {:title => tab[:title], :id => tab[:id], :content => instance_eval(&tab[:content]), :start => tab[:title]} }%> | |
6 | - | |
7 | - <% tabs = plugins_tabs.select { |tab| tab[:start] } %> | |
8 | - | |
9 | - <% if @profile.organization? %> | |
10 | - <% tabs << {:title => _('Profile'), :id => 'organization-profile', :content => (render :partial => 'organization_profile')} %> | |
11 | - <% if logged_in? && current_person.follows?(@profile) %> | |
12 | - <% tabs << {:title => _('Wall'), :id => 'profile-wall', :content => (render :partial => 'profile_wall')} %> | |
13 | - <% end %> | |
14 | - <% tabs << {:title => _('What\'s new'), :id => 'profile-network', :content => (render :partial => 'profile_network')} %> | |
15 | - <% elsif @profile.person? %> | |
16 | - <% tabs << {:title => _('Profile'), :id => 'person-profile', :content => (render :partial => 'person_profile')} %> | |
17 | - <% if logged_in? && current_person.follows?(@profile) %> | |
18 | - <% tabs << {:title => _('Wall'), :id => 'profile-wall', :content => (render :partial => 'profile_wall')} %> | |
19 | - <% tabs << {:title => _('Network'), :id => 'profile-network', :content => (render :partial => 'profile_network')} %> | |
20 | - <% end %> | |
21 | - <% end %> | |
22 | - | |
23 | - <% tabs += plugins_tabs.select { |tab| !tab[:start] } %> | |
24 | - | |
25 | - <%= render_tabs(tabs) %> | |
26 | - | |
27 | - </td> | |
28 | -</tr> | ... | ... |
app/views/profile/_profile_activities_list.rhtml
1 | -<%= @message %> | |
2 | -<% unless @activities.nil? %> | |
3 | - <%= render :partial => 'profile_activities_scraps', :locals => {:activities => @activities} %> | |
1 | +<% unless activities.nil? %> | |
2 | + <% activities.each do |a| %> | |
3 | + <% activity = a.klass.constantize.find(a.id) %> | |
4 | + <% if activity.kind_of?(ActionTracker::Record) %> | |
5 | + <%= render :partial => 'profile_activity', :locals => {:activity => activity} if activity.visible? %> | |
6 | + <% else %> | |
7 | + <%= render :partial => 'profile_scrap', :locals => {:scrap => activity } %> | |
8 | + <% end %> | |
9 | + <% end %> | |
4 | 10 | <% end %> | ... | ... |
app/views/profile/_profile_activities_scraps.rhtml
1 | -<% activities.each do |a| %> | |
2 | - <% activity = a.klass.constantize.find(a.id) %> | |
3 | - <% if activity.kind_of?(ActionTracker::Record) %> | |
4 | - <%= render :partial => 'profile_activity', :locals => {:activity => activity} if activity.visible? %> | |
5 | - <% else %> | |
6 | - <%= render :partial => 'profile_scrap', :locals => {:scrap => activity } %> | |
7 | - <% end %> | |
8 | -<% end %> | |
1 | +NÂO DEVE APARECER!! | |
2 | + | ... | ... |
app/views/profile/_profile_wall.rhtml
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | </div> |
9 | 9 | <div id='leave_scrap_response'></div> |
10 | 10 | <ul id='profile_activities'> |
11 | - <%= render :partial => 'profile_activities_scraps', :locals => {:activities => @activities} %> | |
11 | + <%= render :partial => 'profile_activities_list', :locals => {:activities => @activities} %> | |
12 | 12 | </ul> |
13 | 13 | |
14 | 14 | <% if @activities.current_page < @activities.total_pages %> | ... | ... |
app/views/profile/index.rhtml
... | ... | @@ -17,6 +17,31 @@ |
17 | 17 | |
18 | 18 | <% if @profile.public? || (logged_in? && current_person.follows?(@profile)) %> |
19 | 19 | <table class='profile'> |
20 | - <%= render :partial => 'profile' %> | |
20 | + <tr> | |
21 | + <td colspan='2'> | |
22 | + <% plugins_tabs = @plugins.dispatch(:profile_tabs). | |
23 | + map { |tab| {:title => tab[:title], :id => tab[:id], :content => instance_eval(&tab[:content]), :start => tab[:title]} }%> | |
24 | + | |
25 | + <% tabs = plugins_tabs.select { |tab| tab[:start] } %> | |
26 | + | |
27 | + <% if @profile.organization? %> | |
28 | + <% tabs << {:title => _('Profile'), :id => 'organization-profile', :content => (render :partial => 'organization_profile')} %> | |
29 | + <% if logged_in? && current_person.follows?(@profile) %> | |
30 | + <% tabs << {:title => _('Wall'), :id => 'profile-wall', :content => (render :partial => 'profile_wall')} %> | |
31 | + <% end %> | |
32 | + <% tabs << {:title => _('What\'s new'), :id => 'profile-network', :content => (render :partial => 'profile_network')} %> | |
33 | + <% elsif @profile.person? %> | |
34 | + <% tabs << {:title => _('Profile'), :id => 'person-profile', :content => (render :partial => 'person_profile')} %> | |
35 | + <% if logged_in? && current_person.follows?(@profile) %> | |
36 | + <% tabs << {:title => _('Wall'), :id => 'profile-wall', :content => (render :partial => 'profile_wall')} %> | |
37 | + <% tabs << {:title => _('Network'), :id => 'profile-network', :content => (render :partial => 'profile_network')} %> | |
38 | + <% end %> | |
39 | + <% end %> | |
40 | + | |
41 | + <% tabs += plugins_tabs.select { |tab| !tab[:start] } %> | |
42 | + | |
43 | + <%= render_tabs(tabs) %> | |
44 | + </td> | |
45 | + </tr> | |
21 | 46 | </table> |
22 | 47 | <% end %> | ... | ... |
config/initializers/action_tracker.rb
... | ... | @@ -23,7 +23,7 @@ ActionTrackerConfig.verbs = { |
23 | 23 | }, |
24 | 24 | |
25 | 25 | :upload_image => { |
26 | - :description => lambda { n_('uploaded 1 image: %{details}<br />%{thumbnails}<br style="clear: both;" />', 'uploaded %{num} images: %{details}<br />%{thumbnails}<br style="clear: both;" />', get_view_url.size) % { :num => get_view_url.size, :thumbnails => '{{ta.collect_group_with_index(:thumbnail_path){ |t,i| content_tag(:span, image_tag(t) + link_to(nil, ta.get_view_url[i]))}.last(3).join}}', :details => '{{unique_with_count(ta.collect_group_with_index(:parent_name){ |n,i| link_to(n, ta.get_parent_url[i])}, "%s").join(", ")}}' % _("in the gallery") } }, | |
26 | + :description => lambda { n_('uploaded 1 image<br />%{thumbnails}<br style="clear: both;" />', 'uploaded %{num} images<br />%{thumbnails}<br style="clear: both;" />', get_view_url.size) % { :num => get_view_url.size, :thumbnails => '{{ta.collect_group_with_index(:thumbnail_path){ |t,i| content_tag(:span, image_tag(t) + link_to(nil, ta.get_view_url[i]))}.last(3).join}}' } }, | |
27 | 27 | :type => :groupable |
28 | 28 | }, |
29 | 29 | ... | ... |
features/profile_activities.feature
... | ... | @@ -1,88 +0,0 @@ |
1 | -Feature: list activities of a profile | |
2 | - As a visitor | |
3 | - I want to see the activities of a profile | |
4 | - | |
5 | - Background: | |
6 | - Given the following users | |
7 | - | login | name | | |
8 | - | joaosilva | Joao Silva | | |
9 | - And the following articles | |
10 | - | owner | name | body | | |
11 | - | joaosilva | article to comment | first paragraph | | |
12 | - And the following comments | |
13 | - | article | author | title | body | | |
14 | - | article to comment | joaosilva | hi | how are you? | | |
15 | - | |
16 | - Scenario: see the activity of a profile | |
17 | - Given I am logged in as "joaosilva" | |
18 | - When I go to Joao Silva's homepage | |
19 | -#Não tá rodando o delayed job :( | |
20 | -Then I should see "dkjfhv" | |
21 | - Then I should see "first paragraph" within ".profile-activity-item" | |
22 | - And I should see "how are you?" within ".profile-wall-activities-comments" | |
23 | - | |
24 | - @selenium | |
25 | - Scenario: post a comment while not authenticated | |
26 | - Given I am on /booking/article-to-comment | |
27 | - And I fill in "Name" with "Joey Ramone" | |
28 | - And I fill in "e-mail" with "joey@ramones.com" | |
29 | - And I fill in "Title" with "Hey ho, let's go!" | |
30 | - And I fill in "Enter your comment" with "Hey ho, let's go!" | |
31 | - When I press "Post comment" | |
32 | - Then I should see "Hey ho, let's go" | |
33 | - | |
34 | - @selenium | |
35 | - Scenario: post comment while authenticated | |
36 | - Given I am logged in as "booking" | |
37 | - And I am on /booking/article-to-comment | |
38 | - And I fill in "Title" with "Hey ho, let's go!" | |
39 | - And I fill in "Enter your comment" with "Hey ho, let's go!" | |
40 | - When I press "Post comment" | |
41 | - Then I should see "Hey ho, let's go" | |
42 | - | |
43 | - @selenium | |
44 | - Scenario: redirect to right place after comment a picture | |
45 | - Given the following files | |
46 | - | owner | file | mime | | |
47 | - | booking | rails.png | image/png | | |
48 | - Given I am logged in as "booking" | |
49 | - And I am on /booking/rails.png?view=true | |
50 | - And I fill in "Title" with "Hey ho, let's go!" | |
51 | - And I fill in "Enter your comment" with "Hey ho, let's go!" | |
52 | - When I press "Post comment" | |
53 | - Then I should be exactly on /booking/rails.png?view=true | |
54 | - | |
55 | - @selenium | |
56 | - Scenario: show error messages when make a blank comment | |
57 | - Given I am logged in as "booking" | |
58 | - And I am on /booking/article-to-comment | |
59 | - When I press "Post comment" | |
60 | - Then I should see "Title can't be blank" | |
61 | - And I should see "Body can't be blank" | |
62 | - | |
63 | - @selenium | |
64 | - Scenario: disable post comment button | |
65 | - Given I am on /booking/article-to-comment | |
66 | - And I fill in "Name" with "Joey Ramone" | |
67 | - And I fill in "e-mail" with "joey@ramones.com" | |
68 | - And I fill in "Title" with "Hey ho, let's go!" | |
69 | - And I fill in "Enter your comment" with "Hey ho, let's go!" | |
70 | - When I press "Post comment" | |
71 | - Then the "value.Post comment" button should not be enabled | |
72 | - And I should see "Hey ho, let's go" | |
73 | - | |
74 | - @selenium | |
75 | - Scenario: render comment form and go to bottom | |
76 | - Given I am on /booking/article-with-comment | |
77 | - When I follow "Post a comment" within ".post-comment-button" | |
78 | - Then I should see "Enter your comment" within "div#page-comment-form div.post_comment_box.opened" | |
79 | - And I should be exactly on /booking/article-with-comment | |
80 | - And I should be moved to anchor "comment_form" | |
81 | - | |
82 | - @selenium | |
83 | - Scenario: keep comments field filled while trying to do a comment | |
84 | - Given I am on /booking/article-with-comment | |
85 | - And I fill in "Name" with "Joey Ramone" | |
86 | - When I press "Post comment" | |
87 | - Then the "Name" field should contain "Joey Ramone" | |
88 | - And I should see "errors prohibited" |
public/stylesheets/application.css
... | ... | @@ -1434,7 +1434,8 @@ a.comment-picture { |
1434 | 1434 | border-radius: 5px; |
1435 | 1435 | } |
1436 | 1436 | |
1437 | -.comment-replies .article-comment-inner { | |
1437 | +.comment-replies .article-comment-inner, | |
1438 | +.scrap-replies { | |
1438 | 1439 | border: 1px solid #fff; |
1439 | 1440 | padding: 0; |
1440 | 1441 | -moz-border-radius: 4px; |
... | ... | @@ -5895,6 +5896,9 @@ h1#agenda-title { |
5895 | 5896 | position: relative; |
5896 | 5897 | } |
5897 | 5898 | |
5899 | +#profile-activity li, #profile-network li, #profile-wall li { | |
5900 | +} | |
5901 | + | |
5898 | 5902 | .profile-activity-lead img { |
5899 | 5903 | width: 124px; |
5900 | 5904 | float: left; |
... | ... | @@ -5954,12 +5958,12 @@ h1#agenda-title { |
5954 | 5958 | } |
5955 | 5959 | |
5956 | 5960 | #profile-wall li.profile-activity-item.upload_image span, |
5957 | -#profile-wall li.profile-activity-item.upload_image span img, | |
5961 | +#Xprofile-wall li.profile-activity-item.upload_image span img, | |
5958 | 5962 | #profile-wall li.profile-activity-item.upload_image span a, |
5959 | 5963 | #profile-network li.profile-activity-item.upload_image span, |
5960 | -#profile-network li.profile-activity-item.upload_image span img, | |
5964 | +#Xprofile-network li.profile-activity-item.upload_image span img, | |
5961 | 5965 | #profile-network li.profile-activity-item.upload_image span a { |
5962 | - width: 124px; | |
5966 | + width: 120px; | |
5963 | 5967 | height: 100px; |
5964 | 5968 | display: block; |
5965 | 5969 | overflow: hidden; |
... | ... | @@ -5967,13 +5971,16 @@ h1#agenda-title { |
5967 | 5971 | } |
5968 | 5972 | |
5969 | 5973 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span, |
5970 | -#profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span img, | |
5971 | 5974 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a, |
5972 | 5975 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span, |
5973 | -#profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span img, | |
5974 | 5976 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a { |
5975 | 5977 | width: 383px; |
5976 | - height: 177px; | |
5978 | + height: auto; | |
5979 | +} | |
5980 | + | |
5981 | +#profile-wall li.profile-activity-item.upload_image span img, | |
5982 | +#profile-network li.profile-activity-item.upload_image span img { | |
5983 | + display: block; | |
5977 | 5984 | } |
5978 | 5985 | |
5979 | 5986 | #profile-wall li.profile-activity-item.upload_image span, |
... | ... | @@ -5992,6 +5999,7 @@ h1#agenda-title { |
5992 | 5999 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a, |
5993 | 6000 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a { |
5994 | 6001 | background-image: url(/images/gallery-image-activity-border-big.png); |
6002 | + position: relative; | |
5995 | 6003 | } |
5996 | 6004 | |
5997 | 6005 | #profile-wall li.profile-activity-item.upload_image .article-comment span, |
... | ... | @@ -6555,6 +6563,10 @@ h1#agenda-title { |
6555 | 6563 | padding: 0 5px; |
6556 | 6564 | } |
6557 | 6565 | |
6566 | +.scrap-replies .profile-wall-reply-form { | |
6567 | + margin-left: 0px; | |
6568 | +} | |
6569 | + | |
6558 | 6570 | .profile-wall-scrap-replies { |
6559 | 6571 | float: right; |
6560 | 6572 | margin-right: 2px; |
... | ... | @@ -6584,11 +6596,6 @@ h1#agenda-title { |
6584 | 6596 | word-wrap: break-word; |
6585 | 6597 | } |
6586 | 6598 | |
6587 | -#profile-wall .profile-wall-scrap-replies textarea, | |
6588 | -#profile-network textarea, #profile-wall textarea { | |
6589 | - width: 98%; | |
6590 | -} | |
6591 | - | |
6592 | 6599 | #profile-wall textarea { |
6593 | 6600 | width: 375px; |
6594 | 6601 | } |
... | ... | @@ -6597,6 +6604,12 @@ h1#agenda-title { |
6597 | 6604 | width: 388px; |
6598 | 6605 | } |
6599 | 6606 | |
6607 | +#profile-wall .profile-wall-scrap-replies textarea, | |
6608 | +#profile-network textarea, #profile-wall textarea, | |
6609 | +#profile-wall li .profile-wall-reply-form textarea { | |
6610 | + width: 98%; | |
6611 | +} | |
6612 | + | |
6600 | 6613 | #profile-wall #leave_scrap textarea { |
6601 | 6614 | width: 442px; |
6602 | 6615 | } | ... | ... |
test/factories.rb
... | ... | @@ -370,7 +370,7 @@ module Noosfero::Factory |
370 | 370 | ############################################### |
371 | 371 | |
372 | 372 | def defaults_for_scrap(params = {}) |
373 | - { :content => 'soment content ', :sender_id => 1, :receiver_id => 1, :created_at => DateTime.now }.merge(params) | |
373 | + { :content => 'some content ', :sender_id => 1, :receiver_id => 1, :created_at => DateTime.now }.merge(params) | |
374 | 374 | end |
375 | 375 | |
376 | 376 | ############################################### | ... | ... |
test/functional/profile_controller_test.rb
... | ... | @@ -714,22 +714,15 @@ class ProfileControllerTest < ActionController::TestCase |
714 | 714 | assert_no_tag :tag => 'p', :content => 'A scrap' |
715 | 715 | end |
716 | 716 | |
717 | - should 'see only actions of the current profile when he is not followed by the viewer' do | |
718 | - p1= Person.first | |
717 | + should 'not display activities of the current profile when he is not followed by the viewer' do | |
718 | + p1= fast_create(Person) | |
719 | 719 | p2= fast_create(Person) |
720 | - p3= fast_create(Person) | |
721 | 720 | |
722 | -# UserStampSweeper.any_instance.stubs(:current_user).returns(p1) | |
723 | - ActionTracker::Record.destroy_all | |
724 | - scrap1 = Scrap.create!(defaults_for_scrap(:sender => p1, :receiver => p1)) | |
725 | - | |
726 | -# UserStampSweeper.any_instance.stubs(:current_user).returns(p2) | |
727 | - scrap2 = Scrap.create!(defaults_for_scrap(:sender => p2, :receiver => p3)) | |
728 | -# a2 = ActionTracker::Record.last | |
721 | + UserStampSweeper.any_instance.stubs(:current_user).returns(p1) | |
722 | + scrap1 = Scrap.create!(defaults_for_scrap(:sender => p1, :receiver => p2)) | |
729 | 723 | |
730 | -# UserStampSweeper.any_instance.stubs(:current_user).returns(p3) | |
731 | - scrap3 = Scrap.create!(defaults_for_scrap(:sender => p3, :receiver => p1)) | |
732 | -# a3 = ActionTracker::Record.last | |
724 | + UserStampSweeper.any_instance.stubs(:current_user).returns(p2) | |
725 | + scrap2 = Scrap.create!(defaults_for_scrap(:sender => p2, :receiver => p1)) | |
733 | 726 | |
734 | 727 | UserStampSweeper.any_instance.stubs(:current_user).returns(p1) |
735 | 728 | TinyMceArticle.create!(:profile => p1, :name => 'An article about free software') |
... | ... | @@ -737,8 +730,7 @@ class ProfileControllerTest < ActionController::TestCase |
737 | 730 | |
738 | 731 | login_as(profile.identifier) |
739 | 732 | get :index, :profile => p1.identifier |
740 | - assert_not_nil assigns(:activities) | |
741 | - assert_equal [a1], assigns(:activities) | |
733 | + assert_nil assigns(:activities) | |
742 | 734 | end |
743 | 735 | |
744 | 736 | should 'see the activities_items paginated' do |
... | ... | @@ -750,31 +742,27 @@ class ProfileControllerTest < ActionController::TestCase |
750 | 742 | assert_equal 30, assigns(:activities).count |
751 | 743 | end |
752 | 744 | |
753 | - should 'not see the friends actions and scraps in the current profile activity' do | |
754 | - p1= Person.first | |
745 | + should 'not see the friends activities in the current profile' do | |
755 | 746 | p2= fast_create(Person) |
756 | - assert !p1.is_a_friend?(p2) | |
747 | + assert !profile.is_a_friend?(p2) | |
757 | 748 | p3= fast_create(Person) |
758 | - p1.add_friend(p3) | |
759 | - assert p1.is_a_friend?(p3) | |
749 | + p3.add_friend(profile) | |
750 | + assert p3.is_a_friend?(profile) | |
760 | 751 | ActionTracker::Record.destroy_all |
761 | 752 | |
762 | - scrap1 = Scrap.create!(defaults_for_scrap(:sender => p1, :receiver => p1)) | |
763 | - scrap2 = Scrap.create!(defaults_for_scrap(:sender => p2, :receiver => p3)) | |
764 | - scrap3 = Scrap.create!(defaults_for_scrap(:sender => p3, :receiver => p1)) | |
753 | + scrap1 = Scrap.create!(defaults_for_scrap(:sender => p2, :receiver => p3)) | |
754 | + scrap2 = Scrap.create!(defaults_for_scrap(:sender => p2, :receiver => profile)) | |
765 | 755 | |
766 | 756 | UserStampSweeper.any_instance.stubs(:current_user).returns(p3) |
767 | - TinyMceArticle.create!(:profile => p3, :name => 'An article about free software') | |
768 | - a1 = ActionTracker::Record.last | |
757 | + article1 = TinyMceArticle.create!(:profile => p3, :name => 'An article about free software') | |
769 | 758 | |
770 | - UserStampSweeper.any_instance.stubs(:current_user).returns(p1) | |
771 | - TinyMceArticle.create!(:profile => p1, :name => 'Another article about free software') | |
772 | - a2 = ActionTracker::Record.last | |
759 | + UserStampSweeper.any_instance.stubs(:current_user).returns(p2) | |
760 | + article2 = TinyMceArticle.create!(:profile => p2, :name => 'Another article about free software') | |
773 | 761 | |
774 | 762 | login_as(profile.identifier) |
775 | - get :index, :profile => p1.identifier | |
763 | + get :index, :profile => p3.identifier | |
776 | 764 | assert_not_nil assigns(:activities) |
777 | - assert_equal [a2], assigns(:activities) | |
765 | + assert_equivalent [scrap1, article1.activity], assigns(:activities).map { |a| a.klass.constantize.find(a.id) } | |
778 | 766 | end |
779 | 767 | |
780 | 768 | should 'see all the activities in the current profile network' do |
... | ... | @@ -942,13 +930,29 @@ class ProfileControllerTest < ActionController::TestCase |
942 | 930 | assert_template 'index' |
943 | 931 | end |
944 | 932 | |
945 | - should 'have wall_itens defined' do | |
946 | - p1= ActionTracker::Record.current_user_from_model | |
933 | + should 'not have activities defined if not logged in' do | |
934 | + p1= fast_create(Person) | |
947 | 935 | get :index, :profile => p1.identifier |
948 | - assert_equal [], assigns(:wall_items) | |
936 | + assert_nil assigns(:actvities) | |
949 | 937 | end |
950 | 938 | |
951 | - should 'the wall_itens be the received scraps in people profile' do | |
939 | + should 'not have activities defined if logged in but is not following profile' do | |
940 | + login_as(profile.identifier) | |
941 | + p1= fast_create(Person) | |
942 | + get :index, :profile => p1.identifier | |
943 | + assert_nil assigns(:activities) | |
944 | + end | |
945 | + | |
946 | + should 'have activities defined if logged in and is following profile' do | |
947 | + login_as(profile.identifier) | |
948 | + p1= fast_create(Person) | |
949 | + p1.add_friend(profile) | |
950 | + ActionTracker::Record.destroy_all | |
951 | + get :index, :profile => p1.identifier | |
952 | + assert_equal [], assigns(:activities) | |
953 | + end | |
954 | + | |
955 | + should 'the activities be the received scraps in people profile' do | |
952 | 956 | p1 = ActionTracker::Record.current_user_from_model |
953 | 957 | p2 = fast_create(Person) |
954 | 958 | p3 = fast_create(Person) |
... | ... | @@ -963,10 +967,10 @@ class ProfileControllerTest < ActionController::TestCase |
963 | 967 | @controller.stubs(:current_user).returns(user) |
964 | 968 | Person.any_instance.stubs(:follows?).returns(true) |
965 | 969 | get :index, :profile => p1.identifier |
966 | - assert_equal [s2,s3], assigns(:wall_items) | |
970 | + assert_equal [s2,s3], assigns(:activities) | |
967 | 971 | end |
968 | 972 | |
969 | - should 'the wall_itens be the received scraps in community profile' do | |
973 | + should 'the activities be the received scraps in community profile' do | |
970 | 974 | c = fast_create(Community) |
971 | 975 | p1 = fast_create(Person) |
972 | 976 | p2 = fast_create(Person) |
... | ... | @@ -982,10 +986,10 @@ class ProfileControllerTest < ActionController::TestCase |
982 | 986 | @controller.stubs(:current_user).returns(user) |
983 | 987 | Person.any_instance.stubs(:follows?).returns(true) |
984 | 988 | get :index, :profile => c.identifier |
985 | - assert_equal [s2,s3], assigns(:wall_items) | |
989 | + assert_equal [s2,s3], assigns(:activities) | |
986 | 990 | end |
987 | 991 | |
988 | - should 'the wall_itens be paginated in people profiles' do | |
992 | + should 'the activities be paginated in people profiles' do | |
989 | 993 | p1 = Person.first |
990 | 994 | 40.times{fast_create(Scrap, :sender_id => p1.id, :created_at => Time.now)} |
991 | 995 | |
... | ... | @@ -997,10 +1001,10 @@ class ProfileControllerTest < ActionController::TestCase |
997 | 1001 | Person.any_instance.stubs(:follows?).returns(true) |
998 | 1002 | assert_equal 40, p1.scraps_received.not_replies.count |
999 | 1003 | get :index, :profile => p1.identifier |
1000 | - assert_equal 30, assigns(:wall_items).count | |
1004 | + assert_equal 30, assigns(:activities).count | |
1001 | 1005 | end |
1002 | 1006 | |
1003 | - should 'the wall_itens be paginated in community profiles' do | |
1007 | + should 'the activities be paginated in community profiles' do | |
1004 | 1008 | p1 = Person.first |
1005 | 1009 | c = fast_create(Community) |
1006 | 1010 | 40.times{fast_create(Scrap, :receiver_id => c.id)} |
... | ... | @@ -1013,7 +1017,7 @@ class ProfileControllerTest < ActionController::TestCase |
1013 | 1017 | Person.any_instance.stubs(:follows?).returns(true) |
1014 | 1018 | assert_equal 40, c.scraps_received.not_replies.count |
1015 | 1019 | get :index, :profile => c.identifier |
1016 | - assert_equal 30, assigns(:wall_items).count | |
1020 | + assert_equal 30, assigns(:activities).count | |
1017 | 1021 | end |
1018 | 1022 | |
1019 | 1023 | should "the owner of activity could remove it" do |
... | ... | @@ -1083,17 +1087,17 @@ class ProfileControllerTest < ActionController::TestCase |
1083 | 1087 | end |
1084 | 1088 | end |
1085 | 1089 | |
1086 | - should "not show the scrap button on network activity if the user don't follow the user" do | |
1090 | + should "not show the network activity if the viewer don't follow the profile" do | |
1087 | 1091 | login_as(profile.identifier) |
1088 | 1092 | person = fast_create(Person) |
1089 | 1093 | at = fast_create(ActionTracker::Record, :user_id => person.id) |
1090 | 1094 | atn = fast_create(ActionTrackerNotification, :profile_id => profile.id, :action_tracker_id => at.id) |
1091 | - get :index, :profile => profile.identifier | |
1092 | - assert_no_tag :tag => 'p', :attributes => {:class => 'profile-network-send-message'} | |
1095 | + get :index, :profile => person.identifier | |
1096 | + assert_no_tag :tag => 'div', :attributes => {:id => 'profile-network'} | |
1093 | 1097 | |
1094 | 1098 | person.add_friend(profile) |
1095 | - get :index, :profile => profile.identifier | |
1096 | - assert_tag :tag => 'p', :attributes => {:class => 'profile-network-send-message'} | |
1099 | + get :index, :profile => person.identifier | |
1100 | + assert_tag :tag => 'div', :attributes => {:id => 'profile-network'} | |
1097 | 1101 | end |
1098 | 1102 | |
1099 | 1103 | should "not show the scrap button on network activity if the user is himself" do |
... | ... | @@ -1104,16 +1108,16 @@ class ProfileControllerTest < ActionController::TestCase |
1104 | 1108 | assert_no_tag :tag => 'p', :attributes => {:class => 'profile-network-send-message'} |
1105 | 1109 | end |
1106 | 1110 | |
1107 | - should "not show the scrap button on wall activity if the user don't follow the user" do | |
1111 | + should "not show the scrap area on wall if the user don't follow the user" do | |
1108 | 1112 | login_as(profile.identifier) |
1109 | 1113 | person = fast_create(Person) |
1110 | 1114 | scrap = fast_create(Scrap, :sender_id => person.id, :receiver_id => profile.id) |
1111 | - get :index, :profile => profile.identifier | |
1112 | - assert_no_tag :tag => 'p', :attributes => {:class => 'profile-wall-send-message'} | |
1115 | + get :index, :profile => person.identifier | |
1116 | + assert_no_tag :tag => 'div', :attributes => {:id => 'leave_scrap'}, :descendant => { :tag => 'input', :attributes => {:value => 'Share'} } | |
1113 | 1117 | |
1114 | 1118 | person.add_friend(profile) |
1115 | - get :index, :profile => profile.identifier | |
1116 | - assert_tag :tag => 'p', :attributes => {:class => 'profile-wall-send-message'} | |
1119 | + get :index, :profile => person.identifier | |
1120 | + assert_tag :tag => 'div', :attributes => {:id => 'leave_scrap'}, :descendant => { :tag => 'input', :attributes => {:value => 'Share'} } | |
1117 | 1121 | end |
1118 | 1122 | |
1119 | 1123 | should "not show the scrap button on wall activity if the user is himself" do |
... | ... | @@ -1169,7 +1173,7 @@ class ProfileControllerTest < ActionController::TestCase |
1169 | 1173 | assert_equal 40, profile.tracked_actions.count |
1170 | 1174 | get :view_more_activities, :profile => profile.identifier, :page => 2 |
1171 | 1175 | assert_response :success |
1172 | - assert_template '_profile_activities_scraps' | |
1176 | + assert_template '_profile_activities_list' | |
1173 | 1177 | assert_equal 10, assigns(:activities).count |
1174 | 1178 | end |
1175 | 1179 | |
... | ... | @@ -1270,8 +1274,8 @@ class ProfileControllerTest < ActionController::TestCase |
1270 | 1274 | login_as(profile.identifier) |
1271 | 1275 | get :index, :profile => profile.identifier |
1272 | 1276 | |
1273 | - assert_tag :tag => 'div', :attributes => { :id => 'profile-wall' }, :descendant => { :tag => 'p', :content => 'A scrap' } | |
1274 | - assert_tag :tag => 'div', :attributes => { :id => 'profile-wall' }, :descendant => { :tag => 'a', :content => 'An article about free software' } | |
1277 | + assert_tag :tag => 'p', :content => 'A scrap', :attributes => { :class => 'profile-activity-text'} | |
1278 | + assert_tag :tag => 'div', :attributes => { :class => 'profile-activity-lead' }, :descendant => { :tag => 'a', :content => 'An article about free software' } | |
1275 | 1279 | end |
1276 | 1280 | |
1277 | 1281 | should 'have scraps and activities on activities' do |
... | ... | @@ -1307,7 +1311,7 @@ class ProfileControllerTest < ActionController::TestCase |
1307 | 1311 | |
1308 | 1312 | assert_equal 0, count |
1309 | 1313 | post :leave_comment_on_activity, :profile => profile.identifier, :comment => {:body => 'something'}, :source_id => activity.id |
1310 | - assert_equal count + 1, activity.comments.count | |
1314 | + assert_equal count + 1, ActionTracker::Record.find(activity.id).comments_count | |
1311 | 1315 | assert_response :success |
1312 | 1316 | assert_equal "Comment successfully added.", assigns(:message) |
1313 | 1317 | end |
... | ... | @@ -1318,10 +1322,9 @@ class ProfileControllerTest < ActionController::TestCase |
1318 | 1322 | TinyMceArticle.create!(:profile => another_person, :name => 'An article about free software') |
1319 | 1323 | activity = ActionTracker::Record.last |
1320 | 1324 | count = activity.comments.count |
1321 | -puts activity.inspect | |
1322 | 1325 | assert_equal 0, count |
1323 | 1326 | post :leave_comment_on_activity, :profile => another_person.identifier, :comment => {:body => 'something'}, :source_id => activity.id |
1324 | - assert_equal count + 1, activity.comments.count | |
1327 | + assert_equal count + 1, ActionTracker::Record.find(activity.id).comments_count | |
1325 | 1328 | assert_response :success |
1326 | 1329 | assert_equal "Comment successfully added.", assigns(:message) |
1327 | 1330 | end | ... | ... |
test/unit/article_test.rb
... | ... | @@ -323,11 +323,13 @@ class ArticleTest < ActiveSupport::TestCase |
323 | 323 | (1..4).each do |n| |
324 | 324 | create(TextileArticle, :name => "art #{n}", :profile_id => profile.id) |
325 | 325 | end |
326 | - 2.times { profile.articles.first.comments.build(:title => 'test', :body => 'asdsad', :author => profile).save! } | |
327 | - 4.times { profile.articles.last.comments.build(:title => 'test', :body => 'asdsad', :author => profile).save! } | |
328 | -assert_equal 'bla', profile.articles.map(&:comments_count) | |
326 | + first_article = profile.articles.first | |
327 | + 2.times { Comment.create(:title => 'test', :body => 'asdsad', :author => profile, :source => first_article).save! } | |
328 | + | |
329 | + last_article = profile.articles.last | |
330 | + 4.times { Comment.create(:title => 'test', :body => 'asdsad', :author => profile, :source => last_article).save! } | |
329 | 331 | # should respect the order (more commented comes first) |
330 | - assert_equal [profile.articles.first], profile.articles.most_commented(2) | |
332 | + assert_equal [last_article, first_article], profile.articles.most_commented(2) | |
331 | 333 | end |
332 | 334 | |
333 | 335 | should 'identify itself as a non-folder' do |
... | ... | @@ -361,16 +363,16 @@ assert_equal 'bla', profile.articles.map(&:comments_count) |
361 | 363 | |
362 | 364 | should 'index comments title together with article' do |
363 | 365 | owner = create_user('testuser').person |
364 | - art = owner.articles.build(:name => 'ytest'); art.save! | |
365 | - c1 = art.comments.build(:title => 'a nice comment', :body => 'anything', :author => owner); c1.save! | |
366 | + art = fast_create(TinyMceArticle, :profile_id => owner.id, :name => 'ytest') | |
367 | + c1 = Comment.create(:title => 'a nice comment', :body => 'anything', :author => owner, :source => art ); c1.save! | |
366 | 368 | |
367 | 369 | assert_includes Article.find_by_contents('nice'), art |
368 | 370 | end |
369 | 371 | |
370 | 372 | should 'index comments body together with article' do |
371 | 373 | owner = create_user('testuser').person |
372 | - art = owner.articles.build(:name => 'ytest'); art.save! | |
373 | - c1 = art.comments.build(:title => 'test comment', :body => 'anything', :author => owner); c1.save! | |
374 | + art = fast_create(TinyMceArticle, :profile_id => owner.id, :name => 'ytest') | |
375 | + c1 = Comment.create(:title => 'test comment', :body => 'anything', :author => owner, :source => art); c1.save! | |
374 | 376 | |
375 | 377 | assert_includes Article.find_by_contents('anything'), art |
376 | 378 | end | ... | ... |
test/unit/category_finder_test.rb
... | ... | @@ -188,17 +188,20 @@ class CategoryFinderTest < ActiveSupport::TestCase |
188 | 188 | end |
189 | 189 | |
190 | 190 | should 'return most commented articles' do |
191 | + person = create_user('testuser').person | |
191 | 192 | Article.delete_all |
192 | 193 | |
193 | - person = create_user('testuser').person | |
194 | - articles = (1..4).map {|n| a = person.articles.build(:name => "art #{n}", :category_ids => [@category.id]); a.save!; a } | |
194 | + (1..4).map {|n| create(TextileArticle, :profile_id => person.id, :name => "art #{n}", :category_ids => [@category.id]) } | |
195 | + | |
196 | + first_article = person.articles.first | |
197 | + 2.times { Comment.create(:title => 'test', :body => 'asdsad', :author => person, :source => first_article) } | |
195 | 198 | |
196 | - 2.times { articles[0].comments.build(:title => 'test', :body => 'asdsad', :author => person).save! } | |
197 | - 4.times { articles[1].comments.build(:title => 'test', :body => 'asdsad', :author => person).save! } | |
199 | + last_article = person.articles.last | |
200 | + 4.times { Comment.create(:title => 'test', :body => 'asdsad', :author => person, :source => last_article) } | |
198 | 201 | |
199 | 202 | result = @finder.most_commented_articles(2) |
200 | 203 | # should respect the order (more commented comes first) |
201 | - assert_equal [articles[1], articles[0]], result | |
204 | + assert_equal [last_article, first_article], result | |
202 | 205 | assert_respond_to result, :total_entries |
203 | 206 | end |
204 | 207 | ... | ... |
test/unit/category_test.rb
... | ... | @@ -260,13 +260,14 @@ class CategoryTest < ActiveSupport::TestCase |
260 | 260 | a2 = person.articles.build(:name => 'art2', :category_ids => [c.id]); a2.save! |
261 | 261 | a3 = person.articles.build(:name => 'art3', :category_ids => [c.id]); a3.save! |
262 | 262 | |
263 | - a1.comments.build(:title => 'test', :body => 'asdsa', :author => person).save! | |
264 | - 5.times { a2.comments.build(:title => 'test', :body => 'asdsa', :author => person).save! } | |
263 | + Comment.create(:title => 'test', :body => 'asdsa', :author => person, :source => a1) | |
264 | + 5.times { Comment.create(:title => 'test', :body => 'asdsa', :author => person, :source => a2) } | |
265 | 265 | |
266 | - 10.times { a3.comments.build(:title => 'test', :body => 'kajsdsa', :author => person).save! } | |
266 | + 10.times { Comment.create(:title => 'test', :body => 'kajsdsa', :author => person, :source => a3) } | |
267 | 267 | |
268 | 268 | assert_equal [a3, a2], c.most_commented_articles(2) |
269 | 269 | end |
270 | + | |
270 | 271 | should 'have comments' do |
271 | 272 | c = @env.categories.build(:name => 'my category'); c.save! |
272 | 273 | person = create_user('testuser').person | ... | ... |
test/unit/comment_notifier_test.rb
... | ... | @@ -12,26 +12,26 @@ class CommentNotifierTest < ActiveSupport::TestCase |
12 | 12 | @article = fast_create(Article, :name => 'Article test', :profile_id => @profile.id, :notify_comments => true) |
13 | 13 | end |
14 | 14 | |
15 | - should 'deliver mail after make aarticle commment' do | |
15 | + should 'deliver mail after make an article comment' do | |
16 | 16 | assert_difference ActionMailer::Base.deliveries, :size do |
17 | - @article.comments << Comment.new(:author => @profile, :title => 'test comment', :body => 'you suck!') | |
17 | + Comment.create(:author => @profile, :title => 'test comment', :body => 'you suck!', :source => @article ) | |
18 | 18 | end |
19 | 19 | end |
20 | 20 | |
21 | 21 | should 'deliver mail to owner of article' do |
22 | - @article.comments << Comment.new(:author => @profile, :title => 'test comment', :body => 'you suck!') | |
22 | + Comment.create(:author => @profile, :title => 'test comment', :body => 'you suck!', :source => @article ) | |
23 | 23 | sent = ActionMailer::Base.deliveries.first |
24 | 24 | assert_equal [@profile.email], sent.to |
25 | 25 | end |
26 | 26 | |
27 | 27 | should 'display author name in delivered mail' do |
28 | - @article.comments << Comment.new(:author => @profile, :title => 'test comment', :body => 'you suck!') | |
28 | + Comment.create(:author => @profile, :title => 'test comment', :body => 'you suck!', :source => @article) | |
29 | 29 | sent = ActionMailer::Base.deliveries.first |
30 | 30 | assert_match /user_comment_test/, sent.body |
31 | 31 | end |
32 | 32 | |
33 | 33 | should 'display unauthenticated author name and email in delivered mail' do |
34 | - @article.comments << Comment.new(:name => 'flatline', :email => 'flatline@invalid.com', :title => 'test comment', :body => 'you suck!') | |
34 | + Comment.create(:name => 'flatline', :email => 'flatline@invalid.com', :title => 'test comment', :body => 'you suck!', :source => @article ) | |
35 | 35 | sent = ActionMailer::Base.deliveries.first |
36 | 36 | assert_match /flatline/, sent.body |
37 | 37 | assert_match /flatline@invalid.com/, sent.body |
... | ... | @@ -45,13 +45,13 @@ class CommentNotifierTest < ActiveSupport::TestCase |
45 | 45 | end |
46 | 46 | |
47 | 47 | should 'include comment title in the e-mail' do |
48 | - @article.comments << Comment.new(:author => @profile, :title => 'comment title', :body => 'comment title') | |
48 | + Comment.create(:author => @profile, :title => 'comment title', :body => 'comment body', :source => @article) | |
49 | 49 | sent = ActionMailer::Base.deliveries.first |
50 | 50 | assert_match /comment title/, sent.body |
51 | 51 | end |
52 | 52 | |
53 | 53 | should 'include comment text in the e-mail' do |
54 | - @article.comments << Comment.new(:author => @profile, :title => 'comment title', :body => 'comment body') | |
54 | + Comment.create(:author => @profile, :title => 'comment title', :body => 'comment body', :source => @article) | |
55 | 55 | sent = ActionMailer::Base.deliveries.first |
56 | 56 | assert_match /comment body/, sent.body |
57 | 57 | end | ... | ... |
test/unit/comment_test.rb
... | ... | @@ -339,8 +339,6 @@ class CommentTest < ActiveSupport::TestCase |
339 | 339 | assert c.rejected? |
340 | 340 | end |
341 | 341 | |
342 | - should 'update activity when add a comment' | |
343 | - | |
344 | 342 | should 'update article activity when add a comment' do |
345 | 343 | profile = create_user('testuser').person |
346 | 344 | article = create(TinyMceArticle, :profile => profile) | ... | ... |
test/unit/enterprise_test.rb
... | ... | @@ -451,5 +451,36 @@ class EnterpriseTest < ActiveSupport::TestCase |
451 | 451 | assert_respond_to e, :production_costs |
452 | 452 | end |
453 | 453 | |
454 | - should 'return tracked_actions and scraps as activities' | |
454 | + should 'return scraps as activities' do | |
455 | + person = fast_create(Person) | |
456 | + enterprise = fast_create(Enterprise) | |
457 | + | |
458 | + | |
459 | + activity = ActionTracker::Record.last | |
460 | + scrap = Scrap.create!(defaults_for_scrap(:sender => person, :receiver => enterprise, :content => 'A scrap')) | |
461 | + | |
462 | + assert_equal [scrap], enterprise.activities.map { |a| a.klass.constantize.find(a.id) } | |
463 | + end | |
464 | + | |
465 | + should 'return tracked_actions of community as activities' do | |
466 | + person = fast_create(Person) | |
467 | + enterprise = fast_create(Enterprise) | |
468 | + | |
469 | + UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once | |
470 | + article = create(TinyMceArticle, :profile => enterprise, :name => 'An article about free software') | |
471 | + | |
472 | + assert_equal [article.activity], enterprise.activities.map { |a| a.klass.constantize.find(a.id) } | |
473 | + end | |
474 | + | |
475 | + should 'not return tracked_actions of other community as activities' do | |
476 | + person = fast_create(Person) | |
477 | + enterprise = fast_create(Enterprise) | |
478 | + enterprise2 = fast_create(Enterprise) | |
479 | + | |
480 | + UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once | |
481 | + article = create(TinyMceArticle, :profile => enterprise2, :name => 'Another article about free software') | |
482 | + | |
483 | + assert_not_includes enterprise.activities.map { |a| a.klass.constantize.find(a.id) }, article.activity | |
484 | + end | |
485 | + | |
455 | 486 | end | ... | ... |
test/unit/forum_helper_test.rb
... | ... | @@ -63,7 +63,7 @@ class ForumHelperTest < ActiveSupport::TestCase |
63 | 63 | some_post.comments << Comment.new(:name => 'John', :email => 'lenon@example.com', :title => 'test', :body => 'test') |
64 | 64 | c = Comment.last |
65 | 65 | out = last_topic_update(some_post) |
66 | - assert_match "#{c.created_at.to_s} ago by John", out | |
66 | + assert_match "#{c.created_at.to_s} by John", out | |
67 | 67 | assert_match 'John', out |
68 | 68 | end |
69 | 69 | ... | ... |
test/unit/textile_article_test.rb
... | ... | @@ -47,7 +47,7 @@ class TextileArticleTest < ActiveSupport::TestCase |
47 | 47 | assert_equal 3, ActionTracker::Record.count |
48 | 48 | end |
49 | 49 | |
50 | - should 'update activity on update of an article' do | |
50 | + should 'not update activity on update of an article' do | |
51 | 51 | ActionTracker::Record.delete_all |
52 | 52 | profile = fast_create(Profile) |
53 | 53 | article = create(TextileArticle, :profile_id => profile.id) |
... | ... | @@ -57,7 +57,7 @@ class TextileArticleTest < ActiveSupport::TestCase |
57 | 57 | article.name = 'foo' |
58 | 58 | article.save! |
59 | 59 | end |
60 | - assert_equal time + 1.day, article.activity.updated_at | |
60 | + assert_equal time, article.activity.updated_at | |
61 | 61 | end |
62 | 62 | |
63 | 63 | should 'not create trackers activity when updating articles' do | ... | ... |
test/unit/tiny_mce_article_test.rb
... | ... | @@ -144,7 +144,7 @@ class TinyMceArticleTest < ActiveSupport::TestCase |
144 | 144 | assert_equal 3, ActionTracker::Record.count |
145 | 145 | end |
146 | 146 | |
147 | - should 'update activity on update of an article' do | |
147 | + should 'not update activity on update of an article' do | |
148 | 148 | ActionTracker::Record.delete_all |
149 | 149 | profile = fast_create(Profile) |
150 | 150 | article = create(TinyMceArticle, :profile_id => profile.id) |
... | ... | @@ -154,7 +154,7 @@ class TinyMceArticleTest < ActiveSupport::TestCase |
154 | 154 | article.name = 'foo' |
155 | 155 | article.save! |
156 | 156 | end |
157 | - assert_equal time + 1.day, article.activity.updated_at | |
157 | + assert_equal time, article.activity.updated_at | |
158 | 158 | end |
159 | 159 | |
160 | 160 | should 'not create trackers activity when updating articles' do | ... | ... |
test/unit/uploaded_file_test.rb
... | ... | @@ -231,10 +231,10 @@ class UploadedFileTest < ActiveSupport::TestCase |
231 | 231 | should 'return a thumbnail for images' do |
232 | 232 | f = UploadedFile.new |
233 | 233 | f.expects(:image?).returns(true) |
234 | - f.expects(:full_filename).with(:thumb).returns(File.join(RAILS_ROOT, 'public', 'images', '0000', '0005', 'x.png')) | |
234 | + f.expects(:full_filename).with(:display).returns(File.join(RAILS_ROOT, 'public', 'images', '0000', '0005', 'x.png')) | |
235 | 235 | assert_equal '/images/0000/0005/x.png', f.thumbnail_path |
236 | 236 | f = UploadedFile.new |
237 | - f.stubs(:full_filename).with(:thumb).returns(File.join(RAILS_ROOT, 'public', 'images', '0000', '0005', 'x.png')) | |
237 | + f.stubs(:full_filename).with(:display).returns(File.join(RAILS_ROOT, 'public', 'images', '0000', '0005', 'x.png')) | |
238 | 238 | f.expects(:image?).returns(false) |
239 | 239 | assert_nil f.thumbnail_path |
240 | 240 | end |
... | ... | @@ -330,11 +330,11 @@ class UploadedFileTest < ActiveSupport::TestCase |
330 | 330 | assert_equal 'hello_world.php.txt', file.filename |
331 | 331 | end |
332 | 332 | |
333 | - should 'use the gallery as the parent for action tracker' do | |
333 | + should 'use itself as target for action tracker' do | |
334 | 334 | p = fast_create(Gallery, :profile_id => @profile.id) |
335 | 335 | f = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => p, :profile => @profile) |
336 | - ta = ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) | |
337 | - assert_equal f.parent, ta.target | |
336 | + ta = f.activity | |
337 | + assert_equal f, ta.target | |
338 | 338 | end |
339 | 339 | |
340 | 340 | end | ... | ... |