Commit 6387c1cbaa4c6d21dd6664cf880c41dfb5924032

Authored by Leandro Santos
1 parent 22cae98b
Exists in master

refactoring email article plugin to adapt for article_extra_toolbar_buttons refactoring

controllers/email_article_plugin_myprofile_controller.rb
... ... @@ -3,18 +3,6 @@ class EmailArticlePluginMyprofileController < MyProfileController
3 3  
4 4 needs_profile
5 5  
6   -
7   - # def send_email
8   - # if user.is_admin?(profile)
9   - # article = profile.articles.find(params[:id])
10   - # #EmailArticlePluginMyprofileController::Sender.content(article).deliver
11   - # Sender.content(article)
12   - # render :text => "Email sent to queue"
13   - # else
14   - # render :status => :forbidden, :text => "Forbidden user"
15   - # end
16   - # end
17   -
18 6 def send_email
19 7 unless user.is_admin?(profile)
20 8 render :status => :forbidden, :text => "Forbidden user"
... ... @@ -36,398 +24,4 @@ class EmailArticlePluginMyprofileController < MyProfileController
36 24 # end
37 25 end
38 26  
39   - # before_filter :check_access_to_profile, :except => [:join, :join_not_logged, :index, :add]
40   - # before_filter :store_location, :only => [:join, :join_not_logged, :report_abuse, :send_mail]
41   - # before_filter :login_required, :only => [:add, :join, :leave, :unblock, :leave_scrap, :remove_scrap, :remove_activity, :view_more_activities, :view_more_network_activities, :report_abuse, :register_report, :leave_comment_on_activity, :send_mail]
42   - #
43   - # helper TagsHelper
44   - #
45   - # protect 'send_mail_to_members', :profile, :only => [:send_mail]
46   - #
47   - # def index
48   - # @network_activities = !@profile.is_a?(Person) ? @profile.tracked_notifications.visible.paginate(:per_page => 15, :page => params[:page]) : []
49   - # if logged_in? && current_person.follows?(@profile)
50   - # @network_activities = @profile.tracked_notifications.visible.paginate(:per_page => 15, :page => params[:page]) if @network_activities.empty?
51   - # @activities = @profile.activities.paginate(:per_page => 15, :page => params[:page])
52   - # end
53   - # @tags = profile.article_tags
54   - # allow_access_to_page
55   - # end
56   - #
57   - # def tags
58   - # @tags_cache_key = "tags_profile_#{profile.id.to_s}"
59   - # if is_cache_expired?(@tags_cache_key)
60   - # @tags = profile.article_tags
61   - # end
62   - # end
63   - #
64   - # def content_tagged
65   - # @tag = params[:id]
66   - # @tag_cache_key = "tag_#{CGI.escape(@tag.to_s)}_#{profile.id.to_s}_page_#{params[:npage]}"
67   - # if is_cache_expired?(@tag_cache_key)
68   - # @tagged = profile.tagged_with(@tag).paginate(:per_page => 20, :page => params[:npage])
69   - # end
70   - # end
71   - #
72   - # def tag_feed
73   - # @tag = params[:id]
74   - # tagged = profile.articles.paginate(:per_page => 20, :page => 1, :order => 'published_at DESC', :include => :tags, :conditions => ['tags.name LIKE ?', @tag])
75   - # feed_writer = FeedWriter.new
76   - # data = feed_writer.write(
77   - # tagged,
78   - # :title => _("%s's contents tagged with \"%s\"") % [profile.name, @tag],
79   - # :description => _("%s's contents tagged with \"%s\"") % [profile.name, @tag],
80   - # :link => url_for(profile.url)
81   - # )
82   - # render :text => data, :content_type => "text/xml"
83   - # end
84   - #
85   - # def communities
86   - # if is_cache_expired?(profile.communities_cache_key(params))
87   - # @communities = profile.communities.includes(relations_to_include).paginate(:per_page => per_page, :page => params[:npage], :total_entries => profile.communities.count)
88   - # end
89   - # end
90   - #
91   - # def enterprises
92   - # @enterprises = profile.enterprises.includes(relations_to_include)
93   - # end
94   - #
95   - # def friends
96   - # if is_cache_expired?(profile.friends_cache_key(params))
97   - # @friends = profile.friends.includes(relations_to_include).paginate(:per_page => per_page, :page => params[:npage], :total_entries => profile.friends.count)
98   - # end
99   - # end
100   - #
101   - # def members
102   - # if is_cache_expired?(profile.members_cache_key(params))
103   - # @members = profile.members_by_name.includes(relations_to_include).paginate(:per_page => members_per_page, :page => params[:npage], :total_entries => profile.members.count)
104   - # end
105   - # end
106   - #
107   - # def fans
108   - # @fans = profile.fans.includes(relations_to_include)
109   - # end
110   - #
111   - # def favorite_enterprises
112   - # @favorite_enterprises = profile.favorite_enterprises.includes(relations_to_include)
113   - # end
114   - #
115   - # def sitemap
116   - # @articles = profile.top_level_articles.includes([:profile, :parent])
117   - # end
118   - #
119   - # def join
120   - # if !user.memberships.include?(profile)
121   - # profile.add_member(user)
122   - # if !profile.members.include?(user)
123   - # render :text => {:message => _('%s administrator still needs to accept you as member.') % profile.name}.to_json
124   - # else
125   - # render :text => {:message => _('You just became a member of %s.') % profile.name}.to_json
126   - # end
127   - # else
128   - # render :text => {:message => _('You are already a member of %s.') % profile.name}.to_json
129   - # end
130   - # end
131   - #
132   - # def join_not_logged
133   - # session[:join] = profile.identifier
134   - #
135   - # if user
136   - # redirect_to :controller => 'profile', :action => 'join'
137   - # else
138   - # redirect_to :controller => '/account', :action => 'login'
139   - # end
140   - # end
141   - #
142   - # def leave
143   - # if current_person.memberships.include?(profile)
144   - # if current_person.is_last_admin?(profile)
145   - # render :text => {:redirect_to => url_for({:controller => 'profile_members', :action => 'last_admin', :person => current_person.id})}.to_json
146   - # else
147   - # render :text => current_person.leave(profile, params[:reload])
148   - # end
149   - # else
150   - # render :text => {:message => _('You are not a member of %s.') % profile.name}.to_json
151   - # end
152   - # end
153   - #
154   - # def check_membership
155   - # unless logged_in?
156   - # render :text => ''
157   - # return
158   - # end
159   - # if user.memberships.include?(profile)
160   - # render :text => 'true'
161   - # else
162   - # render :text => 'false'
163   - # end
164   - # end
165   - #
166   - # def add
167   - # # FIXME this shouldn't be in Person model?
168   - # if !user.memberships.include?(profile)
169   - # AddFriend.create!(:person => user, :friend => profile)
170   - # render :text => _('%s still needs to accept being your friend.') % profile.name
171   - # else
172   - # render :text => _('You are already a friend of %s.') % profile.name
173   - # end
174   - # end
175   - #
176   - # def check_friendship
177   - # unless logged_in?
178   - # render :text => ''
179   - # return
180   - # end
181   - # if user == profile || user.already_request_friendship?(profile) || user.is_a_friend?(profile)
182   - # render :text => 'true'
183   - # else
184   - # render :text => 'false'
185   - # end
186   - # end
187   - #
188   - # def unblock
189   - # if current_user.person.is_admin?(profile.environment)
190   - # profile.unblock
191   - # session[:notice] = _("You have unblocked %s successfully. ") % profile.name
192   - # redirect_to :controller => 'profile', :action => 'index'
193   - # else
194   - # message = _('You are not allowed to unblock enterprises in this environment.')
195   - # render_access_denied(message)
196   - # end
197   - # end
198   - #
199   - # def leave_scrap
200   - # sender = params[:sender_id].nil? ? current_user.person : Person.find(params[:sender_id])
201   - # receiver = params[:receiver_id].nil? ? @profile : Person.find(params[:receiver_id])
202   - # @scrap = Scrap.new(params[:scrap])
203   - # @scrap.sender= sender
204   - # @scrap.receiver= receiver
205   - # @tab_action = params[:tab_action]
206   - # @message = @scrap.save ? _("Message successfully sent.") : _("You can't leave an empty message.")
207   - # activities = @profile.activities.paginate(:per_page => 15, :page => params[:page]) if params[:not_load_scraps].nil?
208   - # render :partial => 'profile_activities_list', :locals => {:activities => activities}
209   - # end
210   - #
211   - # def leave_comment_on_activity
212   - # @comment = Comment.new(params[:comment])
213   - # @comment.author = user
214   - # @activity = ActionTracker::Record.find(params[:source_id])
215   - # @comment.source_type, @comment.source_id = (@activity.target_type == 'Article' ? ['Article', @activity.target_id] : [@activity.class.to_s, @activity.id])
216   - # @tab_action = params[:tab_action]
217   - # @message = @comment.save ? _("Comment successfully added.") : _("You can't leave an empty comment.")
218   - # if @tab_action == 'wall'
219   - # activities = @profile.activities.paginate(:per_page => 15, :page => params[:page]) if params[:not_load_scraps].nil?
220   - # render :partial => 'profile_activities_list', :locals => {:activities => activities}
221   - # else
222   - # network_activities = @profile.tracked_notifications.visible.paginate(:per_page => 15, :page => params[:page])
223   - # render :partial => 'profile_network_activities', :locals => {:network_activities => network_activities}
224   - # end
225   - # end
226   - #
227   - # def view_more_activities
228   - # @activities = @profile.activities.paginate(:per_page => 10, :page => params[:page])
229   - # render :partial => 'profile_activities_list', :locals => {:activities => @activities}
230   - # end
231   - #
232   - # def view_more_network_activities
233   - # @activities = @profile.tracked_notifications.paginate(:per_page => 10, :page => params[:page])
234   - # render :partial => 'profile_network_activities', :locals => {:network_activities => @activities}
235   - # end
236   - #
237   - # def more_comments
238   - # profile_filter = @profile.person? ? {:user_id => @profile} : {:target_id => @profile}
239   - # activity = ActionTracker::Record.find(:first, :conditions => {:id => params[:activity]}.merge(profile_filter))
240   - # comments_count = activity.comments.count
241   - # comment_page = (params[:comment_page] || 1).to_i
242   - # comments_per_page = 5
243   - # no_more_pages = comments_count <= comment_page * comments_per_page
244   - #
245   - # render :update do |page|
246   - # page.insert_html :bottom, 'profile-wall-activities-comments-'+params[:activity],
247   - # :partial => 'comment', :collection => activity.comments.flatten.paginate(:per_page => comments_per_page, :page => comment_page)
248   - #
249   - # if no_more_pages
250   - # page.remove 'profile-wall-activities-comments-more-'+params[:activity]
251   - # else
252   - # page.replace_html 'profile-wall-activities-comments-more-'+params[:activity],
253   - # :partial => 'more_comments', :locals => {:activity => activity, :comment_page => comment_page}
254   - # end
255   - # end
256   - # end
257   - #
258   - # def more_replies
259   - # activity = Scrap.find(:first, :conditions => {:id => params[:activity], :receiver_id => @profile, :scrap_id => nil})
260   - # comments_count = activity.replies.count
261   - # comment_page = (params[:comment_page] || 1).to_i
262   - # comments_per_page = 5
263   - # no_more_pages = comments_count <= comment_page * comments_per_page
264   - #
265   - # render :update do |page|
266   - # page.insert_html :bottom, 'profile-wall-activities-comments-'+params[:activity],
267   - # :partial => 'profile_scrap', :collection => activity.replies.paginate(:per_page => comments_per_page, :page => comment_page), :as => :scrap
268   - #
269   - # if no_more_pages
270   - # page.remove 'profile-wall-activities-comments-more-'+params[:activity]
271   - # else
272   - # page.replace_html 'profile-wall-activities-comments-more-'+params[:activity],
273   - # :partial => 'more_replies', :locals => {:activity => activity, :comment_page => comment_page}
274   - # end
275   - # end
276   - # end
277   - #
278   - # def remove_scrap
279   - # begin
280   - # scrap = current_user.person.scraps(params[:scrap_id])
281   - # scrap.destroy
282   - # finish_successful_removal 'Scrap successfully removed.'
283   - # rescue
284   - # finish_unsuccessful_removal 'You could not remove this scrap.'
285   - # end
286   - # end
287   - #
288   - # def remove_activity
289   - # begin
290   - # raise if !can_edit_profile
291   - # activity = ActionTracker::Record.find(params[:activity_id])
292   - # if params[:only_hide]
293   - # activity.update_attribute(:visible, false)
294   - # else
295   - # activity.destroy
296   - # end
297   - # finish_successful_removal 'Activity successfully removed.'
298   - # rescue
299   - # finish_unsuccessful_removal 'You could not remove this activity.'
300   - # end
301   - # end
302   - #
303   - # def remove_notification
304   - # begin
305   - # raise if !can_edit_profile
306   - # notification = ActionTrackerNotification.find(:first, :conditions => {:profile_id => profile.id, :action_tracker_id => params[:activity_id]})
307   - # notification.destroy
308   - # render :text => _('Notification successfully removed.')
309   - # rescue
310   - # render :text => _('You could not remove this notification.')
311   - # end
312   - # end
313   - #
314   - # def finish_successful_removal(msg)
315   - # if request.xhr?
316   - # render :text => {'ok' => true}.to_json, :content_type => 'application/json'
317   - # else
318   - # session[:notice] = _(msg)
319   - # redirect_to :action => :index
320   - # end
321   - # end
322   - #
323   - # def finish_unsuccessful_removal(msg)
324   - # session[:notice] = _(msg)
325   - # if request.xhr?
326   - # render :text => {'redirect' => url_for(:action => :index)}.to_json, :content_type => 'application/json'
327   - # else
328   - # redirect_to :action => :index
329   - # end
330   - # end
331   - #
332   - # def report_abuse
333   - # @abuse_report = AbuseReport.new
334   - # render :layout => false
335   - # end
336   - #
337   - # def register_report
338   - # unless user.is_admin? || verify_recaptcha
339   - # render :text => {
340   - # :ok => false,
341   - # :error => {
342   - # :code => 1,
343   - # :message => _('You could not answer the captcha.')
344   - # }
345   - # }.to_json
346   - # else
347   - # begin
348   - # abuse_report = AbuseReport.new(params[:abuse_report])
349   - # if !params[:content_type].blank?
350   - # article = params[:content_type].constantize.find(params[:content_id])
351   - # abuse_report.content = article_reported_version(article)
352   - # end
353   - #
354   - # user.register_report(abuse_report, profile)
355   - #
356   - # if !params[:content_type].blank?
357   - # abuse_report = AbuseReport.find_by_reporter_id_and_abuse_complaint_id(user.id, profile.opened_abuse_complaint.id)
358   - # Delayed::Job.enqueue DownloadReportedImagesJob.new(abuse_report, article)
359   - # end
360   - #
361   - # render :text => {
362   - # :ok => true,
363   - # :message => _('Your abuse report was registered. The administrators are reviewing your report.'),
364   - # }.to_json
365   - # rescue Exception => exception
366   - # logger.error(exception.to_s)
367   - # render :text => {
368   - # :ok => false,
369   - # :error => {
370   - # :code => 2,
371   - # :message => _('Your report couldn\'t be saved due to some problem. Please contact the administrator.')
372   - # }
373   - # }.to_json
374   - # end
375   - # end
376   - # end
377   - #
378   - # def remove_comment
379   - # #FIXME Check whether these permissions are enough
380   - # @comment = Comment.find(params[:comment_id])
381   - # if (user == @comment.author || user == profile || user.has_permission?(:moderate_comments, profile))
382   - # @comment.destroy
383   - # finish_successful_removal 'Comment successfully removed.'
384   - # else
385   - # finish_unsuccessful_removal 'You could not remove this comment.'
386   - # end
387   - # end
388   -
389   -
390   -
391   -
392   - # protected
393   - #
394   - # def check_access_to_profile
395   - # unless profile.display_info_to?(user)
396   - # redirect_to :action => 'index'
397   - # end
398   - # end
399   - #
400   - # def store_location
401   - # if session[:previous_location].nil?
402   - # session[:previous_location] = request.referer
403   - # end
404   - # end
405   - #
406   - # def redirect_to_previous_location
407   - # back = session[:previous_location]
408   - # if back
409   - # session[:previous_location] = nil
410   - # redirect_to back
411   - # else
412   - # redirect_to profile.url
413   - # end
414   - # end
415   - #
416   - # def per_page
417   - # Noosfero::Constants::PROFILE_PER_PAGE
418   - # end
419   - #
420   - # def members_per_page
421   - # 20
422   - # end
423   - #
424   - # def can_edit_profile
425   - # @can_edit_profile ||= user && user.has_permission?('edit_profile', profile)
426   - # end
427   - # helper_method :can_edit_profile
428   - #
429   - # def relations_to_include
430   - # [:image, :domains, :preferred_domain, :environment]
431   - # end
432   -
433 27 end
... ...
controllers/email_article_plugin_myprofile_controller_old.rb
... ... @@ -1,80 +0,0 @@
1   -require 'nokogiri'
2   -
3   -class EmailArticlePluginMyprofileController < MyProfileController
4   -
5   - needs_profile
6   -
7   - def send_email
8   - if user.is_admin?(profile)
9   - article = profile.articles.find(params[:id])
10   - #EmailArticlePluginMyprofileController::Sender.content(article).deliver
11   - Sender.content(article)
12   - render :text => "Email sent to queue"
13   - else
14   - render :status => :forbidden, :text => "Forbidden user"
15   - end
16   - end
17   -
18   - class Sender
19   - def self.content(article)
20   - source = article.author.user.person
21   - mail = Mailing.new
22   - mail.
23   - # mailing = create(Mailing, :source => article.author.user.person, :subject => 'Hello', :body => 'We have some news', :person => article.author.user.person)
24   - end
25   -
26   - def absolute_url? url
27   - url.start_with?('http') || url.start_with?('ftp')
28   - end
29   - end
30   -
31   -
32   - class Sender < ActionMailer::Base
33   - def content(article)
34   - doc = Nokogiri::HTML(article.body)
35   - doc.css("a").each do |link|
36   - if !link.attribute("href").nil? and !absolute_url?(link.attribute("href").value)
37   - relative_path = link.attribute("href").value
38   - if relative_path.starts_with?('/')
39   - relative_path[0]=''
40   - end
41   - link.attribute("href").value = "http://#{article.environment.default_hostname}/#{relative_path}"
42   - end
43   - end
44   -
45   - doc.css("img").each do |link|
46   - unless link.attribute("src").nil? and absolute_url?(link.attribute("src").value)
47   - relative_path = link.attribute("src").value
48   - link.attribute("src").value = "http://#{article.environment.default_hostname}/#{relative_path}"
49   - end
50   - end
51   -
52   -# link.attributes["href"].value = "http://myproxy.com/?url=#{CGI.escape link.attributes["href"].value}"
53   -# http://#{environment.default_hostname}/#{relative_path[1]}
54   -
55   -
56   - body = doc.to_html
57   - sender = Person.find(article.author_id)
58   - members = article.profile.members
59   - emails = []
60   - members.each{ |m|
61   - emails.push(m.user.email)
62   - }
63   -
64   - # mailing = create(Mailing, :source => article.author.user.person, :subject => 'Hello', :body => 'We have some news', :person => article.author.user.person)
65   -
66   - mail(
67   - content_type: 'text/html',
68   - to: emails,
69   - from: "#{article.author_name} <#{sender.contact_email}>",
70   - reply_to: article.author.user.email,
71   - subject: "[Artigo] " + article.title,
72   - body: body
73   -# body: set_absolute_path(article.body, article.environment)
74   - )
75   - end
76   -end
77   -
78   -
79   -
80   -end
lib/email_article_plugin.rb
... ... @@ -8,25 +8,13 @@ class EmailArticlePlugin &lt; Noosfero::Plugin
8 8 _("A plugin that emails an article to the members of the community")
9 9 end
10 10  
11   - def article_toolbar_extra_buttons
12   - label = _("Send article to members")
13   - htmlclass = _("button with-text icon-menu-mail")
14   - title = _("Email article to all community members")
15   - proc do
16   - if !profile.blank? and !user.blank? and user.is_admin?(profile) and @page.kind_of?(TextArticle)
17   - link_to_remote(
18   - label,
19   - {
20   - :url => { :profile => profile.identifier, :controller => 'email_article_plugin_myprofile', :action => "send_email", :id => @page},
21   - :method => :get,
22   - :success => "display_notice('" + _("Messages are being sent") + "')",
23   - :failure => "display_notice('" + _("Error sending emails") + "')",
24   - :confirm => _("Are you sure you want to email this article to all community members?"),
25   - },
26   - :class => htmlclass,
27   - :title => title
28   - )
29   - end
30   - end
  11 + def article_extra_toolbar_buttons(article)
  12 +#raise current_person.identifier.inspect + " " + profile.identifier.inspect + ' ' + current_person.is_admin?.inspect + " " + article.kind_of?(TextArticle).inspect + " " + profile.admins.include?(current_person).inspect
  13 + return [] if !(profile.admins.include?(current_person) || current_person.is_admin?) || !article.kind_of?(TextArticle)
  14 + {
  15 + :icon => 'icon-menu-mail',
  16 + :url => { :profile => profile.identifier, :controller => 'email_article_plugin_myprofile', :action => "send_email", :id => article},
  17 + :title => _("Send article to members")
  18 + }
31 19 end
32 20 end
... ...
test/functional/email_article_plugin_myprofile_controller_test.rb
... ... @@ -32,7 +32,7 @@ class EmailArticlePluginMyprofileControllerTest &lt; ActionController::TestCase
32 32 assert_response 403
33 33 end
34 34  
35   - should 'show button at article_toolbar_extra_buttons' do
  35 + should 'show button at article_extra_toolbar_buttons' do
36 36 @profile = Community.create!(:name => 'Another community', :identifier => 'another-community')
37 37 @user = create_user('user-out-of-the-community')
38 38 login_as(@user.login)
... ... @@ -43,7 +43,7 @@ class EmailArticlePluginMyprofileControllerTest &lt; ActionController::TestCase
43 43 @article.save
44 44 @plugin = EmailArticlePlugin.new
45 45 @plugin.stubs(:link_to_remote).returns(true)
46   - send_mail_button = @plugin.article_toolbar_extra_buttons
  46 + send_mail_button = @plugin.article_extra_toolbar_buttons(@article)
47 47 self.stubs(:profile).returns(@profile)
48 48 self.stubs(:user).returns(@user)
49 49 # self.stubs(:page).returns(@article)
... ...
test/unit/email_article_plugin_test.rb
... ... @@ -3,9 +3,17 @@ require File.dirname(__FILE__) + &#39;/../test_helper&#39;
3 3 class EmailArticlePluginTest < ActiveSupport::TestCase
4 4  
5 5 def setup
6   - @plugin = EmailArticlePlugin.new
  6 + @environment = Environment.default
  7 + @user = create_user('testuser').person
  8 + @profile = fast_create(Profile)
  9 + context = mock()
  10 + context.stubs(:current_person).returns(@user)
  11 + context.stubs(:profile).returns(@profile)
  12 + @plugin = EmailArticlePlugin.new(context)
7 13 end
8 14  
  15 + attr_accessor :plugin, :profile, :user, :environment
  16 +
9 17 should 'be a noosfero plugin' do
10 18 assert_kind_of Noosfero::Plugin, @plugin
11 19 end
... ... @@ -18,4 +26,70 @@ class EmailArticlePluginTest &lt; ActiveSupport::TestCase
18 26 assert_equal _("A plugin that emails an article to the members of the community"), EmailArticlePlugin.plugin_description
19 27 end
20 28  
  29 + should 'display button to send email for all members of a community if the user is a community admin' do
  30 + profile.add_admin(user)
  31 + article = fast_create(TextArticle, :profile_id => profile.id)
  32 + assert_not_equal [], plugin.article_extra_toolbar_buttons(article)
  33 + end
  34 +
  35 + should 'display button to send email for all members of a community if the user is an environment administrator' do
  36 +# profile.add_admin(user)
  37 + environment.add_admin(user)
  38 + article = fast_create(TextArticle, :profile_id => profile.id)
  39 + assert_not_equal [], plugin.article_extra_toolbar_buttons(article)
  40 + end
  41 +
  42 + should 'the title be Send article to members' do
  43 + profile.add_admin(user)
  44 + article = fast_create(TextArticle, :profile_id => profile.id)
  45 + assert_equal 'Send article to members', plugin.article_extra_toolbar_buttons(article)[:title]
  46 + end
  47 +
  48 + should 'the icon be icon-menu-mail' do
  49 + profile.add_admin(user)
  50 + article = fast_create(TextArticle, :profile_id => profile.id)
  51 + assert_equal 'icon-menu-mail', plugin.article_extra_toolbar_buttons(article)[:icon]
  52 + end
  53 +
  54 + should 'not display button to send email for members if the user is not a community admin' do
  55 + article = fast_create(TextArticle, :profile_id => profile.id)
  56 + assert_equal [], plugin.article_extra_toolbar_buttons(article)
  57 + end
  58 +
  59 + should 'not display button to send email for members if the article is a Blog' do
  60 + profile.add_admin(user)
  61 + article = fast_create(Blog, :profile_id => profile.id)
  62 + assert_equal [], plugin.article_extra_toolbar_buttons(article)
  63 + end
  64 +
  65 + should 'not display button to send email for members if the article is a Folder' do
  66 + profile.add_admin(user)
  67 + article = fast_create(Folder, :profile_id => profile.id)
  68 + assert_equal [], plugin.article_extra_toolbar_buttons(article)
  69 + end
  70 +
  71 + should 'not display button to send email for members if the article is a UploadedFile' do
  72 + profile.add_admin(user)
  73 + article = fast_create(UploadedFile, :profile_id => profile.id)
  74 + assert_equal [], plugin.article_extra_toolbar_buttons(article)
  75 + end
  76 +
  77 + should 'display button to send email for members if the article is a TextArticle' do
  78 + profile.add_admin(user)
  79 + article = fast_create(TextArticle, :profile_id => profile.id)
  80 + assert_not_equal [], plugin.article_extra_toolbar_buttons(article)
  81 + end
  82 +
  83 + should 'display button to send email for members if the article is a TextileArticle' do
  84 + profile.add_admin(user)
  85 + article = fast_create(TextileArticle, :profile_id => profile.id)
  86 + assert_not_equal [], plugin.article_extra_toolbar_buttons(article)
  87 + end
  88 +
  89 + should 'display button to send email for members if the article is a TinyMceArticle' do
  90 + profile.add_admin(user)
  91 + article = fast_create(TinyMceArticle, :profile_id => profile.id)
  92 + assert_not_equal [], plugin.article_extra_toolbar_buttons(article)
  93 + end
  94 +
21 95 end
... ...
test/unit/test_email_article_article_mailer.rb
... ... @@ -1,21 +0,0 @@
1   -require File.dirname(__FILE__) + '/../test_helper'
2   -
3   -class EmailArticlePluginTest < ActiveSupport::TestCase
4   -
5   - def setup
6   - @plugin = EmailArticlePlugin.new
7   - end
8   -
9   - should 'be a noosfero plugin' do
10   - assert_kind_of Noosfero::Plugin, @plugin
11   - end
12   -
13   - should 'have name' do
14   - assert_equal 'Email Article to Community Members Plugin', EmailArticlePlugin.plugin_name
15   - end
16   -
17   - should 'have description' do
18   - assert_equal _("A plugin that emails an article to the members of the community"), EmailArticlePlugin.plugin_description
19   - end
20   -
21   -end
test/unit/test_email_article_plugin_article_mailer.rb
... ... @@ -69,13 +69,6 @@ class EmailArticlePluginArticleMailerTest &lt; ActiveSupport::TestCase
69 69 assert_equal "#{community.environment.top_url}/#{community.name.to_slug}/", mailing.url
70 70 end
71 71  
72   - should 'deliver mailing to each member after create' do
73   - mailing = create(OrganizationMailing, :source => community, :subject => 'Hello', :body => 'We have some news', :person => person)
74   - community.reload
75   - process_delayed_job_queue
76   - assert_equal 2, ActionMailer::Base.deliveries.count
77   - end
78   -
79 72 should 'deliver mailing when there are many mailings created' do
80 73 50.times { create(OrganizationMailing, :source => community, :subject => 'Hello', :body => 'We have some news', :person => person) }
81 74 community.reload
... ...