Commit f8a595c3c3cd91049e28b548bf7d10a863b08064

Authored by Victor Costa
2 parents f36214f4 82270a3f

Merge branch 'master' into production

Conflicts:
	app/views/content_viewer/_article_toolbar.html.erb
app/controllers/my_profile/cms_controller.rb
@@ -136,6 +136,7 @@ class CmsController < MyProfileController @@ -136,6 +136,7 @@ class CmsController < MyProfileController
136 klass = @type.constantize 136 klass = @type.constantize
137 article_data = environment.enabled?('articles_dont_accept_comments_by_default') ? { :accept_comments => false } : {} 137 article_data = environment.enabled?('articles_dont_accept_comments_by_default') ? { :accept_comments => false } : {}
138 article_data.merge!(params[:article]) if params[:article] 138 article_data.merge!(params[:article]) if params[:article]
  139 + article_data.merge!(:profile => profile) if profile
139 @article = klass.new(article_data) 140 @article = klass.new(article_data)
140 141
141 parent = check_parent(params[:parent_id]) 142 parent = check_parent(params[:parent_id])
@@ -213,7 +214,7 @@ class CmsController < MyProfileController @@ -213,7 +214,7 @@ class CmsController < MyProfileController
213 if @errors.any? 214 if @errors.any?
214 render :action => 'upload_files', :parent_id => @parent_id 215 render :action => 'upload_files', :parent_id => @parent_id
215 else 216 else
216 - session[:notice] = _('File(s) successfully uploaded') 217 + session[:notice] = _('File(s) successfully uploaded')
217 if @back_to 218 if @back_to
218 redirect_to @back_to 219 redirect_to @back_to
219 elsif @parent 220 elsif @parent
app/controllers/public/content_viewer_controller.rb
@@ -17,7 +17,7 @@ class ContentViewerController < ApplicationController @@ -17,7 +17,7 @@ class ContentViewerController < ApplicationController
17 @version = params[:version].to_i 17 @version = params[:version].to_i
18 18
19 if path.blank? 19 if path.blank?
20 - @page = profile.home_page 20 + @page = profile.home_page
21 return if redirected_to_profile_index 21 return if redirected_to_profile_index
22 else 22 else
23 @page = profile.articles.find_by_path(path) 23 @page = profile.articles.find_by_path(path)
@@ -125,21 +125,23 @@ class ContentViewerController < ApplicationController @@ -125,21 +125,23 @@ class ContentViewerController < ApplicationController
125 helper_method :pass_without_comment_captcha? 125 helper_method :pass_without_comment_captcha?
126 126
127 def allow_access_to_page(path) 127 def allow_access_to_page(path)
128 - allowed = true  
129 if @page.nil? # page not found, give error 128 if @page.nil? # page not found, give error
130 render_not_found(path) 129 render_not_found(path)
131 - allowed = false  
132 - elsif !@page.display_to?(user)  
133 - if !profile.public? 130 + return false
  131 + end
  132 +
  133 + unless @page.display_to?(user)
  134 + if !profile.visible? || profile.secret? || (user && user.follows?(profile))
  135 + render_access_denied
  136 + else #!profile.public?
134 private_profile_partial_parameters 137 private_profile_partial_parameters
135 render :template => 'profile/_private_profile', :status => 403, :formats => [:html] 138 render :template => 'profile/_private_profile', :status => 403, :formats => [:html]
136 - allowed = false  
137 - else #if !profile.visible?  
138 - render_access_denied  
139 - allowed = false  
140 end 139 end
  140 +
  141 + return false
141 end 142 end
142 - allowed 143 +
  144 + return true
143 end 145 end
144 146
145 def user_is_a_bot? 147 def user_is_a_bot?
@@ -184,7 +186,7 @@ class ContentViewerController < ApplicationController @@ -184,7 +186,7 @@ class ContentViewerController < ApplicationController
184 if @page.forum? && @page.has_terms_of_use && terms_accepted == "true" 186 if @page.forum? && @page.has_terms_of_use && terms_accepted == "true"
185 @page.add_agreed_user(user) 187 @page.add_agreed_user(user)
186 end 188 end
187 - end 189 + end
188 190
189 def is_a_forum_topic? (page) 191 def is_a_forum_topic? (page)
190 return (!@page.parent.nil? && @page.parent.forum?) 192 return (!@page.parent.nil? && @page.parent.forum?)
app/controllers/public_controller.rb
@@ -3,7 +3,7 @@ class PublicController < ApplicationController @@ -3,7 +3,7 @@ class PublicController < ApplicationController
3 3
4 def allow_access_to_page 4 def allow_access_to_page
5 unless profile.display_info_to?(user) 5 unless profile.display_info_to?(user)
6 - if profile.visible? 6 + if profile.visible? && !profile.secret
7 private_profile 7 private_profile
8 else 8 else
9 invisible_profile 9 invisible_profile
app/helpers/tinymce_helper.rb
@@ -20,7 +20,7 @@ module TinymceHelper @@ -20,7 +20,7 @@ module TinymceHelper
20 :image_advtab => true, 20 :image_advtab => true,
21 :language => tinymce_language 21 :language => tinymce_language
22 22
23 - options[:toolbar1] = "insertfile undo redo | copy paste | bold italic underline | styleselect fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image" 23 + options[:toolbar1] = "fullscreen | insertfile undo redo | copy paste | bold italic underline | styleselect fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
24 if options[:mode] == 'simple' 24 if options[:mode] == 'simple'
25 options[:menubar] = false 25 options[:menubar] = false
26 else 26 else
app/mailers/task_mailer.rb
@@ -5,7 +5,7 @@ class TaskMailer < ActionMailer::Base @@ -5,7 +5,7 @@ class TaskMailer < ActionMailer::Base
5 @target = task.target.name 5 @target = task.target.name
6 @environment = task.environment.name 6 @environment = task.environment.name
7 @url = generate_environment_url(task, :controller => 'home') 7 @url = generate_environment_url(task, :controller => 'home')
8 - url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.tasks_url) 8 + url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.tasks_url.merge(:script_name => Noosfero.root('/')))
9 @tasks_url = url_for_tasks_list 9 @tasks_url = url_for_tasks_list
10 10
11 mail( 11 mail(
@@ -56,7 +56,7 @@ class TaskMailer < ActionMailer::Base @@ -56,7 +56,7 @@ class TaskMailer < ActionMailer::Base
56 end 56 end
57 57
58 def generate_environment_url(task, url = {}) 58 def generate_environment_url(task, url = {})
59 - url_for(Noosfero.url_options.merge(:host => task.environment.default_hostname).merge(url)) 59 + url_for(Noosfero.url_options.merge(:host => task.environment.default_hostname).merge(url).merge(:script_name => Noosfero.root('/')))
60 end 60 end
61 61
62 end 62 end
app/models/article.rb
@@ -25,6 +25,16 @@ class Article < ActiveRecord::Base @@ -25,6 +25,16 @@ class Article < ActiveRecord::Base
25 :display => %w[full] 25 :display => %w[full]
26 } 26 }
27 27
  28 + def initialize(*params)
  29 + super
  30 +
  31 + if !params.blank? && params.first.has_key?(:profile)
  32 + profile = params.first[:profile]
  33 + self.published = false unless profile.public?
  34 + end
  35 +
  36 + end
  37 +
28 def self.default_search_display 38 def self.default_search_display
29 'full' 39 'full'
30 end 40 end
@@ -501,11 +511,11 @@ class Article < ActiveRecord::Base @@ -501,11 +511,11 @@ class Article < ActiveRecord::Base
501 return [] if user.nil? || (profile && !profile.public? && !user.follows?(profile)) 511 return [] if user.nil? || (profile && !profile.public? && !user.follows?(profile))
502 where( 512 where(
503 [ 513 [
504 - "published = ? OR last_changed_by_id = ? OR profile_id = ? OR ?  
505 - OR (show_to_followers = ? AND ?)", true, user.id, user.id, 514 + "published = ? OR last_changed_by_id = ? OR profile_id = ? OR ?
  515 + OR (show_to_followers = ? AND ? AND profile_id = ?)", true, user.id, user.id,
506 profile.nil? ? false : user.has_permission?(:view_private_content, profile), 516 profile.nil? ? false : user.has_permission?(:view_private_content, profile),
507 - true, user.follows?(profile)  
508 - ] 517 + true, user.follows?(profile), (profile.nil? ? nil : profile.id)
  518 + ]
509 ) 519 )
510 } 520 }
511 521
@@ -519,7 +529,7 @@ class Article < ActiveRecord::Base @@ -519,7 +529,7 @@ class Article < ActiveRecord::Base
519 529
520 def display_to?(user = nil) 530 def display_to?(user = nil)
521 if published? 531 if published?
522 - profile.display_info_to?(user) 532 + (profile.secret? || !profile.visible?) ? profile.display_info_to?(user) : true
523 else 533 else
524 if !user 534 if !user
525 false 535 false
app/models/environment.rb
@@ -339,6 +339,16 @@ class Environment < ActiveRecord::Base @@ -339,6 +339,16 @@ class Environment < ActiveRecord::Base
339 self.save! 339 self.save!
340 end 340 end
341 341
  342 + def enable_all_plugins
  343 + Noosfero::Plugin.available_plugin_names.each do |plugin|
  344 + plugin_name = plugin.to_s + "Plugin"
  345 + unless self.enabled_plugins.include?(plugin_name)
  346 + self.enabled_plugins += [plugin_name]
  347 + end
  348 + end
  349 + self.save!
  350 + end
  351 +
342 # Disables a feature identified by its name 352 # Disables a feature identified by its name
343 def disable(feature, must_save=true) 353 def disable(feature, must_save=true)
344 self.settings["#{feature}_enabled".to_sym] = false 354 self.settings["#{feature}_enabled".to_sym] = false
app/views/cms/_forum.html.erb
@@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
2 2
3 <h1><%= _('My Forum') %></h1> 3 <h1><%= _('My Forum') %></h1>
4 4
  5 +<%= required_fields_message %>
  6 +
5 <%= render :file => 'shared/tiny_mce' %> 7 <%= render :file => 'shared/tiny_mce' %>
6 8
7 <%= required f.text_field(:name, :size => '64', :maxlength => 150, :onchange => "updateUrlField(this, 'article_slug')") %> 9 <%= required f.text_field(:name, :size => '64', :maxlength => 150, :onchange => "updateUrlField(this, 'article_slug')") %>
app/views/content_viewer/_article_toolbar.html.erb
1 <div<%= user && " class='logged-in'" %>> 1 <div<%= user && " class='logged-in'" %>>
2 <div id="article-actions"> 2 <div id="article-actions">
  3 +
3 <%= fullscreen_buttons('#article') %> 4 <%= fullscreen_buttons('#article') %>
  5 +
4 <% if @page.allow_edit?(user) && !remove_content_button(:edit, @page) %> 6 <% if @page.allow_edit?(user) && !remove_content_button(:edit, @page) %>
5 <% content = content_tag('span', label_for_edit_article(@page)) %> 7 <% content = content_tag('span', label_for_edit_article(@page)) %>
6 <% url = profile.admin_url.merge({ :controller => 'cms', :action => 'edit', :id => @page.id }) %> 8 <% url = profile.admin_url.merge({ :controller => 'cms', :action => 'edit', :id => @page.id }) %>
7 <%= expirable_button @page, :edit, content, url %> 9 <%= expirable_button @page, :edit, content, url %>
8 <% end %> 10 <% end %>
9 - 11 +
10 <% if @page != profile.home_page && !@page.has_posts? && @page.allow_delete?(user) && !remove_content_button(:delete, @page)%> 12 <% if @page != profile.home_page && !@page.has_posts? && @page.allow_delete?(user) && !remove_content_button(:delete, @page)%>
11 <% content = content_tag( 'span', _('Delete') ) %> 13 <% content = content_tag( 'span', _('Delete') ) %>
12 <% url = profile.admin_url.merge({ :controller => 'cms', :action => 'destroy', :id => @page.id}) %> 14 <% url = profile.admin_url.merge({ :controller => 'cms', :action => 'destroy', :id => @page.id}) %>
@@ -50,6 +52,7 @@ @@ -50,6 +52,7 @@
50 <% end %> 52 <% end %>
51 53
52 <%= report_abuse(profile, :link, @page) %> 54 <%= report_abuse(profile, :link, @page) %>
  55 +
53 </div> 56 </div>
54 <div id="article-header"> 57 <div id="article-header">
55 <% if @page.blog? and !@page.image.nil? %> 58 <% if @page.blog? and !@page.image.nil? %>
db/migrate/20150319114233_change_default_content_privacy.rb 0 → 100644
@@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
  1 +class ChangeDefaultContentPrivacy < ActiveRecord::Migration
  2 + def up
  3 + update_sql('UPDATE articles SET published = (1>2), show_to_followers = (1=1)
  4 + FROM profiles WHERE articles.profile_id = profiles.id AND
  5 + NOT profiles.public_profile AND articles.published = (1=1)')
  6 +
  7 + Block.select('blocks.*').joins("INNER JOIN boxes ON blocks.box_id = boxes.id
  8 + INNER JOIN profiles ON boxes.owner_id = profiles.id AND boxes.owner_type = 'Profile'").
  9 + where("NOT profiles.public_profile AND blocks.type != 'MainBlock'").find_each do |block|
  10 + block.display_user = 'followers'
  11 + block.save
  12 + end
  13 + change_column :articles, :show_to_followers, :boolean, :default => true
  14 + end
  15 +
  16 + def down
  17 + say "this migration can't be reverted"
  18 + end
  19 +end
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 # 11 #
12 # It's strongly recommended to check this file into your version control system. 12 # It's strongly recommended to check this file into your version control system.
13 13
14 -ActiveRecord::Schema.define(:version => 20150408231524) do 14 +ActiveRecord::Schema.define(:version => 20150423144533) do
15 15
16 create_table "abuse_reports", :force => true do |t| 16 create_table "abuse_reports", :force => true do |t|
17 t.integer "reporter_id" 17 t.integer "reporter_id"
@@ -150,7 +150,7 @@ ActiveRecord::Schema.define(:version =&gt; 20150408231524) do @@ -150,7 +150,7 @@ ActiveRecord::Schema.define(:version =&gt; 20150408231524) do
150 t.integer "spam_comments_count", :default => 0 150 t.integer "spam_comments_count", :default => 0
151 t.integer "author_id" 151 t.integer "author_id"
152 t.integer "created_by_id" 152 t.integer "created_by_id"
153 - t.boolean "show_to_followers", :default => false 153 + t.boolean "show_to_followers", :default => true
154 end 154 end
155 155
156 add_index "articles", ["comments_count"], :name => "index_articles_on_comments_count" 156 add_index "articles", ["comments_count"], :name => "index_articles_on_comments_count"
db/seeds.rb 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +# This file should contain all the record creation needed to seed the database with its default values.
  2 +# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
  3 +#
  4 +# Examples:
  5 +#
  6 +# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
  7 +# Mayor.create(name: 'Emanuel', city: cities.first)
  8 +
  9 +ENV['RAILS_ENV'] ||= 'development'
  10 +
  11 +# This is for plugins that wants to use seeds.rb
  12 +# Check for example on the Foo plugin
  13 +plugin_seed_dirs = Dir.glob(Rails.root.join('{baseplugins,config/plugins}', '*', 'db', 'seeds.rb'))
  14 +plugin_seed_dirs.each { |path| load path }
features/article_versioning.feature
@@ -80,8 +80,8 @@ Feature: article versioning @@ -80,8 +80,8 @@ Feature: article versioning
80 80
81 Scenario: deny access to specific version when disabled, private and not logged 81 Scenario: deny access to specific version when disabled, private and not logged
82 Given the article "Edited Article" is updated with 82 Given the article "Edited Article" is updated with
83 - | display_versions | published |  
84 - | false | false | 83 + | display_versions | published | show_to_followers |
  84 + | false | false | false |
85 And I am not logged in 85 And I am not logged in
86 And I go to /joaosilva/edited-article?version=1 86 And I go to /joaosilva/edited-article?version=1
87 Then I should see "Access denied" 87 Then I should see "Access denied"
features/edit_article.feature
@@ -41,6 +41,7 @@ Feature: edit article @@ -41,6 +41,7 @@ Feature: edit article
41 When I follow "Folder" 41 When I follow "Folder"
42 And I fill in "Title" with "My Folder" 42 And I fill in "Title" with "My Folder"
43 And I choose "article_published_false" 43 And I choose "article_published_false"
  44 + And I uncheck "article_show_to_followers"
44 And I press "Save" 45 And I press "Save"
45 And I log off 46 And I log off
46 And I go to /freesoftware/my-folder 47 And I go to /freesoftware/my-folder
@@ -87,6 +88,7 @@ Feature: edit article @@ -87,6 +88,7 @@ Feature: edit article
87 When I follow "Folder" 88 When I follow "Folder"
88 And I fill in "Title" with "My Folder" 89 And I fill in "Title" with "My Folder"
89 And I choose "article_published_false" 90 And I choose "article_published_false"
  91 + And I uncheck "article_show_to_followers"
90 Then I should see "Fill in the search field to add the exception users to see this content" 92 Then I should see "Fill in the search field to add the exception users to see this content"
91 93
92 @selenium 94 @selenium
features/secret_community.feature
@@ -33,7 +33,7 @@ Feature: Use a secret community @@ -33,7 +33,7 @@ Feature: Use a secret community
33 Scenario: Non members shouldn't see secret communit's content 33 Scenario: Non members shouldn't see secret communit's content
34 Given I am logged in as "maria" 34 Given I am logged in as "maria"
35 And I go to mycommunity's homepage 35 And I go to mycommunity's homepage
36 - And I should see "Access denied" 36 + And I should see "Oops ... you cannot go ahead here"
37 And I follow "Communities" 37 And I follow "Communities"
38 Then I should not see "My Community" 38 Then I should not see "My Community"
39 39
lib/tasks/enable_plugins.rake 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +namespace :noosfero do
  2 + namespace :plugins do
  3 + task :enable_all => :environment do
  4 + Environment.all.each do |env|
  5 + puts "Plugins Activated on #{env.name}" if env.enable_all_plugins
  6 + end
  7 + end
  8 + end
  9 +end
plugins/foo/db/seeds.rb 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +# This file should contain all the record creation needed to seed the database with its default values.
  2 +# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
  3 +#
  4 +# Examples:
  5 +#
  6 +# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
  7 +# Mayor.create(name: 'Emanuel', city: cities.first)
  8 +
  9 +FooPlugin::Bar.create()
public/designs/icons/tango/style.css
@@ -115,6 +115,7 @@ @@ -115,6 +115,7 @@
115 .icon-set-admin-role { background-image: url(mod/16x16/apps/user.png) } 115 .icon-set-admin-role { background-image: url(mod/16x16/apps/user.png) }
116 .icon-reset-admin-role { background-image: url(../../../images/icons-app/person-icon.png) } 116 .icon-reset-admin-role { background-image: url(../../../images/icons-app/person-icon.png) }
117 .icon-clock { background-image: url(Tango/16x16/actions/appointment.png) } 117 .icon-clock { background-image: url(Tango/16x16/actions/appointment.png) }
  118 +.icon-fullscreen { background-image: url(Tango/16x16/actions/view-fullscreen.png) }
118 119
119 /******************LARGE ICONS********************/ 120 /******************LARGE ICONS********************/
120 .image-gallery-item .folder { background-image: url(mod/96x96/places/folder.png) } 121 .image-gallery-item .folder { background-image: url(mod/96x96/places/folder.png) }
public/javascripts/application.js
@@ -1217,3 +1217,35 @@ function add_new_file_fields() { @@ -1217,3 +1217,35 @@ function add_new_file_fields() {
1217 } 1217 }
1218 1218
1219 window.isHidden = function isHidden() { return (typeof(document.hidden) != 'undefined') ? document.hidden : !document.hasFocus() }; 1219 window.isHidden = function isHidden() { return (typeof(document.hidden) != 'undefined') ? document.hidden : !document.hasFocus() };
  1220 +
  1221 +function $_GET(id){
  1222 + var a = new RegExp(id+"=([^&#=]*)");
  1223 + return decodeURIComponent(a.exec(window.location.search)[1]);
  1224 +}
  1225 +
  1226 +var fullwidth=false;
  1227 +function toggle_fullwidth(itemId){
  1228 + if(fullwidth){
  1229 + jQuery(itemId).removeClass("fullwidth");
  1230 + jQuery("#fullscreen-btn").show()
  1231 + jQuery("#exit-fullscreen-btn").hide()
  1232 + fullwidth = false;
  1233 + }
  1234 + else{
  1235 + jQuery(itemId).addClass("fullwidth");
  1236 + jQuery("#exit-fullscreen-btn").show()
  1237 + jQuery("#fullscreen-btn").hide()
  1238 + fullwidth = true;
  1239 + }
  1240 + jQuery(window).trigger("toggleFullwidth", fullwidth);
  1241 +}
  1242 +
  1243 +function fullscreenPageLoad(itemId){
  1244 + jQuery(document).ready(function(){
  1245 +
  1246 + if ($_GET('fullscreen') == 1){
  1247 + toggle_fullwidth(itemId);
  1248 + }
  1249 + });
  1250 +}
  1251 +
test/functional/contact_controller_test.rb
@@ -131,7 +131,7 @@ class ContactControllerTest &lt; ActionController::TestCase @@ -131,7 +131,7 @@ class ContactControllerTest &lt; ActionController::TestCase
131 post :new, :profile => community.identifier 131 post :new, :profile => community.identifier
132 132
133 assert_response :forbidden 133 assert_response :forbidden
134 - assert_template :private_profile 134 + assert_template "profile/_private_profile"
135 end 135 end
136 136
137 should 'not show send e-mail page to non members of invisible community' do 137 should 'not show send e-mail page to non members of invisible community' do
test/functional/content_viewer_controller_test.rb
@@ -257,22 +257,22 @@ class ContentViewerControllerTest &lt; ActionController::TestCase @@ -257,22 +257,22 @@ class ContentViewerControllerTest &lt; ActionController::TestCase
257 end 257 end
258 258
259 should 'not give access to private articles if logged off' do 259 should 'not give access to private articles if logged off' do
260 - profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') 260 + profile = Community.create!(:name => 'test profile', :identifier => 'test_profile')
261 intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false) 261 intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false)
262 262
263 get :view_page, :profile => 'test_profile', :page => [ 'my-intranet' ] 263 get :view_page, :profile => 'test_profile', :page => [ 'my-intranet' ]
264 264
265 - assert_template 'access_denied' 265 + assert_template "profile/_private_profile"
266 end 266 end
267 267
268 should 'not give access to private articles if logged in but not member' do 268 should 'not give access to private articles if logged in but not member' do
269 login_as('testinguser') 269 login_as('testinguser')
270 - profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') 270 + profile = Community.create!(:name => 'test profile', :identifier => 'test_profile')
271 intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false) 271 intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false)
272 272
273 get :view_page, :profile => 'test_profile', :page => [ 'my-intranet' ] 273 get :view_page, :profile => 'test_profile', :page => [ 'my-intranet' ]
274 274
275 - assert_template 'access_denied' 275 + assert_template "profile/_private_profile"
276 end 276 end
277 277
278 should 'not give access to private articles if logged in and only member' do 278 should 'not give access to private articles if logged in and only member' do
@@ -1428,7 +1428,7 @@ class ContentViewerControllerTest &lt; ActionController::TestCase @@ -1428,7 +1428,7 @@ class ContentViewerControllerTest &lt; ActionController::TestCase
1428 1428
1429 article = TinyMceArticle.create(:name => 'Article to be shared with images', 1429 article = TinyMceArticle.create(:name => 'Article to be shared with images',
1430 :body => 'This article should be shared with all social networks', 1430 :body => 'This article should be shared with all social networks',
1431 - :profile => @profile, 1431 + :profile => community,
1432 :published => false, 1432 :published => false,
1433 :show_to_followers => true) 1433 :show_to_followers => true)
1434 article.parent = blog 1434 article.parent = blog
test/functional/events_controller_test.rb
@@ -60,7 +60,7 @@ class EventsControllerTest &lt; ActionController::TestCase @@ -60,7 +60,7 @@ class EventsControllerTest &lt; ActionController::TestCase
60 post :events, :profile => community.identifier 60 post :events, :profile => community.identifier
61 61
62 assert_response :forbidden 62 assert_response :forbidden
63 - assert_template :private_profile 63 + assert_template "profile/_private_profile"
64 end 64 end
65 65
66 should 'not show events page to non members of invisible community' do 66 should 'not show events page to non members of invisible community' do
test/integration/http_caching_test.rb
@@ -85,7 +85,7 @@ class HttpCachingTest &lt; ActionController::IntegrationTest @@ -85,7 +85,7 @@ class HttpCachingTest &lt; ActionController::IntegrationTest
85 85
86 test 'private community content should not return cache headers' do 86 test 'private community content should not return cache headers' do
87 community = create_private_community('the-community') 87 community = create_private_community('the-community')
88 - create(Article, profile_id: community.id, name: 'Test page') 88 + create(Article, profile_id: community.id, name: 'Test page', published: false)
89 89
90 get "/the-community/test-page" 90 get "/the-community/test-page"
91 assert_response 403 91 assert_response 403
@@ -139,4 +139,3 @@ class HttpCachingTest &lt; ActionController::IntegrationTest @@ -139,4 +139,3 @@ class HttpCachingTest &lt; ActionController::IntegrationTest
139 end 139 end
140 140
141 end 141 end
142 -  
test/unit/application_helper_test.rb
@@ -1002,6 +1002,13 @@ class ApplicationHelperTest &lt; ActionView::TestCase @@ -1002,6 +1002,13 @@ class ApplicationHelperTest &lt; ActionView::TestCase
1002 assert_equal file, from_theme_include('atheme', 'afile')[:file] # exists? = true 1002 assert_equal file, from_theme_include('atheme', 'afile')[:file] # exists? = true
1003 end 1003 end
1004 1004
  1005 + should 'enable fullscreen buttons' do
  1006 + html = fullscreen_buttons("#article")
  1007 + assert html.include?("<script>fullscreenPageLoad('#article')</script>")
  1008 + assert html.include?("class=\"button with-text icon-fullscreen\"")
  1009 + assert html.include?("onClick=\"toggle_fullwidth('#article')\"")
  1010 + end
  1011 +
1005 protected 1012 protected
1006 include NoosferoTestHelper 1013 include NoosferoTestHelper
1007 1014
test/unit/article_test.rb
@@ -484,7 +484,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -484,7 +484,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
484 484
485 should 'say that member user can not see private article' do 485 should 'say that member user can not see private article' do
486 profile = fast_create(Profile, :name => 'test profile', :identifier => 'test_profile') 486 profile = fast_create(Profile, :name => 'test profile', :identifier => 'test_profile')
487 - article = fast_create(Article, :name => 'test article', :profile_id => profile.id, :published => false) 487 + article = fast_create(Article, :name => 'test article', :profile_id => profile.id, :published => false, :show_to_followers => false)
488 person = create_user('test_user').person 488 person = create_user('test_user').person
489 profile.affiliate(person, Profile::Roles.member(profile.environment.id)) 489 profile.affiliate(person, Profile::Roles.member(profile.environment.id))
490 490
@@ -509,15 +509,15 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -509,15 +509,15 @@ class ArticleTest &lt; ActiveSupport::TestCase
509 assert article.display_to?(person) 509 assert article.display_to?(person)
510 end 510 end
511 511
512 - should 'not show article to non member if article public but profile private' do 512 + should 'show article to non member if article public but profile private' do
513 profile = fast_create(Profile, :name => 'test profile', :identifier => 'test_profile', :public_profile => false) 513 profile = fast_create(Profile, :name => 'test profile', :identifier => 'test_profile', :public_profile => false)
514 article = fast_create(Article, :name => 'test article', :profile_id => profile.id, :published => true) 514 article = fast_create(Article, :name => 'test article', :profile_id => profile.id, :published => true)
515 person1 = create_user('test_user1').person 515 person1 = create_user('test_user1').person
516 profile.affiliate(person1, Profile::Roles.member(profile.environment.id)) 516 profile.affiliate(person1, Profile::Roles.member(profile.environment.id))
517 person2 = create_user('test_user2').person 517 person2 = create_user('test_user2').person
518 518
519 - assert !article.display_to?(nil)  
520 - assert !article.display_to?(person2) 519 + assert article.display_to?(nil)
  520 + assert article.display_to?(person2)
521 assert article.display_to?(person1) 521 assert article.display_to?(person1)
522 end 522 end
523 523
@@ -543,7 +543,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -543,7 +543,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
543 543
544 should 'not allow friends of private person see the article' do 544 should 'not allow friends of private person see the article' do
545 person = create_user('test_user').person 545 person = create_user('test_user').person
546 - article = create(Article, :name => 'test article', :profile => person, :published => false) 546 + article = create(Article, :name => 'test article', :profile => person, :published => false, :show_to_followers => false)
547 friend = create_user('test_friend').person 547 friend = create_user('test_friend').person
548 person.add_friend(friend) 548 person.add_friend(friend)
549 person.save! 549 person.save!
@@ -1686,7 +1686,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1686,7 +1686,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1686 a.allow_members_to_edit = true 1686 a.allow_members_to_edit = true
1687 assert !a.allow_edit?(nil) 1687 assert !a.allow_edit?(nil)
1688 end 1688 end
1689 - 1689 +
1690 should 'allow author to edit topic' do 1690 should 'allow author to edit topic' do
1691 community = fast_create(Community) 1691 community = fast_create(Community)
1692 admin = fast_create(Person) 1692 admin = fast_create(Person)
@@ -1905,7 +1905,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1905,7 +1905,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1905 end 1905 end
1906 1906
1907 should 'display_filter display only public articles if there is no user' do 1907 should 'display_filter display only public articles if there is no user' do
1908 - p = fast_create(Person) 1908 + p = fast_create(Person)
1909 Article.delete_all 1909 Article.delete_all
1910 a = fast_create(Article, :published => true, :profile_id => p.id) 1910 a = fast_create(Article, :published => true, :profile_id => p.id)
1911 fast_create(Article, :published => false, :profile_id => p.id) 1911 fast_create(Article, :published => false, :profile_id => p.id)
@@ -1915,7 +1915,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1915,7 +1915,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1915 1915
1916 should 'display_filter display public articles for users' do 1916 should 'display_filter display public articles for users' do
1917 user = create_user('someuser').person 1917 user = create_user('someuser').person
1918 - p = fast_create(Person) 1918 + p = fast_create(Person)
1919 user.stubs(:has_permission?).with(:view_private_content, p).returns(false) 1919 user.stubs(:has_permission?).with(:view_private_content, p).returns(false)
1920 Article.delete_all 1920 Article.delete_all
1921 a = fast_create(Article, :published => true, :profile_id => p.id) 1921 a = fast_create(Article, :published => true, :profile_id => p.id)
@@ -1926,7 +1926,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1926,7 +1926,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1926 1926
1927 should 'display_filter display private article last changed by user' do 1927 should 'display_filter display private article last changed by user' do
1928 user = create_user('someuser').person 1928 user = create_user('someuser').person
1929 - p = fast_create(Person) 1929 + p = fast_create(Person)
1930 user.stubs(:has_permission?).with(:view_private_content, p).returns(false) 1930 user.stubs(:has_permission?).with(:view_private_content, p).returns(false)
1931 Article.delete_all 1931 Article.delete_all
1932 a = fast_create(Article, :published => false, :last_changed_by_id => user.id, :profile_id => p.id) 1932 a = fast_create(Article, :published => false, :last_changed_by_id => user.id, :profile_id => p.id)
@@ -1938,7 +1938,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1938,7 +1938,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1938 should 'display_filter display user private article of his own profile' do 1938 should 'display_filter display user private article of his own profile' do
1939 user = create_user('someuser').person 1939 user = create_user('someuser').person
1940 user.stubs(:has_permission?).with(:view_private_content, user).returns(false) 1940 user.stubs(:has_permission?).with(:view_private_content, user).returns(false)
1941 - p = fast_create(Person) 1941 + p = fast_create(Person)
1942 Article.delete_all 1942 Article.delete_all
1943 a = fast_create(Article, :published => false, :profile_id => user.id) 1943 a = fast_create(Article, :published => false, :profile_id => user.id)
1944 fast_create(Article, :published => false, :profile_id => p.id) 1944 fast_create(Article, :published => false, :profile_id => p.id)
@@ -1948,7 +1948,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1948,7 +1948,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1948 1948
1949 should 'display_filter show profile private content if the user has view_private_content permission' do 1949 should 'display_filter show profile private content if the user has view_private_content permission' do
1950 user = create_user('someuser').person 1950 user = create_user('someuser').person
1951 - p = fast_create(Person) 1951 + p = fast_create(Person)
1952 Article.delete_all 1952 Article.delete_all
1953 user.stubs(:has_permission?).with(:view_private_content, p).returns(false) 1953 user.stubs(:has_permission?).with(:view_private_content, p).returns(false)
1954 a = fast_create(Article, :published => false, :profile_id => p.id) 1954 a = fast_create(Article, :published => false, :profile_id => p.id)
@@ -1965,8 +1965,8 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1965,8 +1965,8 @@ class ArticleTest &lt; ActiveSupport::TestCase
1965 user.stubs(:has_permission?).with(:view_private_content, p).returns(false) 1965 user.stubs(:has_permission?).with(:view_private_content, p).returns(false)
1966 Article.delete_all 1966 Article.delete_all
1967 a = fast_create(Article, :published => false, :show_to_followers => true, :profile_id => p.id) 1967 a = fast_create(Article, :published => false, :show_to_followers => true, :profile_id => p.id)
1968 - fast_create(Article, :published => false, :profile_id => p.id)  
1969 - fast_create(Article, :published => false, :profile_id => p.id) 1968 + fast_create(Article, :published => false, :show_to_followers => false, :profile_id => p.id)
  1969 + fast_create(Article, :published => false, :show_to_followers => false, :profile_id => p.id)
1970 assert_equal [a], Article.display_filter(user, p) 1970 assert_equal [a], Article.display_filter(user, p)
1971 end 1971 end
1972 1972
@@ -1977,8 +1977,8 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1977,8 +1977,8 @@ class ArticleTest &lt; ActiveSupport::TestCase
1977 user.stubs(:has_permission?).with(:view_private_content, p).returns(false) 1977 user.stubs(:has_permission?).with(:view_private_content, p).returns(false)
1978 Article.delete_all 1978 Article.delete_all
1979 a = fast_create(Article, :published => false, :show_to_followers => true, :profile_id => p.id) 1979 a = fast_create(Article, :published => false, :show_to_followers => true, :profile_id => p.id)
1980 - fast_create(Article, :published => false, :profile_id => p.id)  
1981 - fast_create(Article, :published => false, :profile_id => p.id) 1980 + fast_create(Article, :published => false, :show_to_followers => false, :profile_id => p.id)
  1981 + fast_create(Article, :published => false, :show_to_followers => false, :profile_id => p.id)
1982 assert_equal [a], Article.display_filter(user, p) 1982 assert_equal [a], Article.display_filter(user, p)
1983 end 1983 end
1984 1984
@@ -2040,6 +2040,17 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -2040,6 +2040,17 @@ class ArticleTest &lt; ActiveSupport::TestCase
2040 assert_equal [], Article.display_filter(user, nil) 2040 assert_equal [], Article.display_filter(user, nil)
2041 end 2041 end
2042 2042
  2043 + should 'display_filter show person public content to non friends passing nil as profile parameter' do
  2044 + user = create_user('someuser').person
  2045 + p = fast_create(Person)
  2046 + assert !p.is_a_friend?(user)
  2047 + assert !user.is_admin?
  2048 + Article.delete_all
  2049 + a1 = fast_create(Article, :profile_id => p.id)
  2050 + a2 = fast_create(Article)
  2051 + assert_equivalent [a1,a2], Article.display_filter(user, nil)
  2052 + end
  2053 +
2043 should 'display_filter do not show community private content to non members passing nil as profile parameter' do 2054 should 'display_filter do not show community private content to non members passing nil as profile parameter' do
2044 user = create_user('someuser').person 2055 user = create_user('someuser').person
2045 p = fast_create(Community) 2056 p = fast_create(Community)
@@ -2049,6 +2060,16 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -2049,6 +2060,16 @@ class ArticleTest &lt; ActiveSupport::TestCase
2049 assert_equal [], Article.display_filter(user, nil) 2060 assert_equal [], Article.display_filter(user, nil)
2050 end 2061 end
2051 2062
  2063 + should 'display_filter show community public content to non members passing nil as profile parameter' do
  2064 + user = create_user('someuser').person
  2065 + p = fast_create(Community)
  2066 + assert !user.is_member_of?(p)
  2067 + Article.delete_all
  2068 + a1 = fast_create(Article, :profile_id => p.id)
  2069 + a2 = fast_create(Article)
  2070 + assert_equivalent [a1,a2], Article.display_filter(user, nil)
  2071 + end
  2072 +
2052 should 'display_filter show community public content of private community for user members' do 2073 should 'display_filter show community public content of private community for user members' do
2053 user = create_user('someuser').person 2074 user = create_user('someuser').person
2054 p = fast_create(Community, :public_profile => false) 2075 p = fast_create(Community, :public_profile => false)
@@ -2057,8 +2078,8 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -2057,8 +2078,8 @@ class ArticleTest &lt; ActiveSupport::TestCase
2057 user.stubs(:has_permission?).with(:view_private_content, p).returns(false) 2078 user.stubs(:has_permission?).with(:view_private_content, p).returns(false)
2058 Article.delete_all 2079 Article.delete_all
2059 a = fast_create(Article, :published => true, :profile_id => p.id) 2080 a = fast_create(Article, :published => true, :profile_id => p.id)
2060 - fast_create(Article, :published => false, :profile_id => p.id)  
2061 - fast_create(Article, :published => false, :profile_id => p.id) 2081 + fast_create(Article, :published => false, :show_to_followers => false, :profile_id => p.id)
  2082 + fast_create(Article, :published => false, :show_to_followers => false, :profile_id => p.id)
2062 assert_equal [a], Article.display_filter(user, p) 2083 assert_equal [a], Article.display_filter(user, p)
2063 end 2084 end
2064 2085
@@ -2088,7 +2109,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -2088,7 +2109,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
2088 a1 = fast_create(Article, :published => true, :profile_id => user.id) 2109 a1 = fast_create(Article, :published => true, :profile_id => user.id)
2089 a2 = fast_create(Article, :published => true, :profile_id => p.id) 2110 a2 = fast_create(Article, :published => true, :profile_id => p.id)
2090 fast_create(Article, :published => false, :profile_id => p.id) 2111 fast_create(Article, :published => false, :profile_id => p.id)
2091 - assert_equivalent [a1,a2], Article.display_filter(user, nil) 2112 + assert_equivalent [a1,a2], Article.display_filter(nil, user)
2092 end 2113 end
2093 2114
2094 should 'display_filter show person public content of private person profile for user friends' do 2115 should 'display_filter show person public content of private person profile for user friends' do
@@ -2099,8 +2120,8 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -2099,8 +2120,8 @@ class ArticleTest &lt; ActiveSupport::TestCase
2099 user.stubs(:has_permission?).with(:view_private_content, p).returns(false) 2120 user.stubs(:has_permission?).with(:view_private_content, p).returns(false)
2100 Article.delete_all 2121 Article.delete_all
2101 a = fast_create(Article, :published => true, :profile_id => p.id) 2122 a = fast_create(Article, :published => true, :profile_id => p.id)
2102 - fast_create(Article, :published => false, :profile_id => p.id)  
2103 - fast_create(Article, :published => false, :profile_id => p.id) 2123 + fast_create(Article, :published => false, :show_to_followers => false, :profile_id => p.id)
  2124 + fast_create(Article, :published => false, :show_to_followers => false, :profile_id => p.id)
2104 assert_equal [a], Article.display_filter(user, p) 2125 assert_equal [a], Article.display_filter(user, p)
2105 end 2126 end
2106 2127
@@ -2130,7 +2151,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -2130,7 +2151,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
2130 a1 = fast_create(Article, :published => true, :profile_id => user.id) 2151 a1 = fast_create(Article, :published => true, :profile_id => user.id)
2131 a2 = fast_create(Article, :published => true, :profile_id => p.id) 2152 a2 = fast_create(Article, :published => true, :profile_id => p.id)
2132 fast_create(Article, :published => false, :profile_id => p.id) 2153 fast_create(Article, :published => false, :profile_id => p.id)
2133 - assert_equivalent [a1,a2], Article.display_filter(user, nil) 2154 + assert_equivalent [a1,a2], Article.display_filter(nil, user)
2134 end 2155 end
2135 2156
2136 should 'update hit attribute of article array' do 2157 should 'update hit attribute of article array' do
test/unit/environment_test.rb
@@ -524,7 +524,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase @@ -524,7 +524,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase
524 p1= fast_create(Person, :is_template => true, :environment_id => e.id) 524 p1= fast_create(Person, :is_template => true, :environment_id => e.id)
525 p2 = fast_create(Person, :environment_id => e.id) 525 p2 = fast_create(Person, :environment_id => e.id)
526 p3 = fast_create(Person, :is_template => true, :environment_id => e.id) 526 p3 = fast_create(Person, :is_template => true, :environment_id => e.id)
527 - assert_equivalent [p1,p3], e.person_templates 527 + assert_equivalent [p1,p3], e.person_templates
528 end 528 end
529 529
530 should 'person_templates return an empty array if there is no templates of person' do 530 should 'person_templates return an empty array if there is no templates of person' do
@@ -532,7 +532,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase @@ -532,7 +532,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase
532 532
533 fast_create(Person, :environment_id => e.id) 533 fast_create(Person, :environment_id => e.id)
534 fast_create(Person, :environment_id => e.id) 534 fast_create(Person, :environment_id => e.id)
535 - assert_equivalent [], e.person_templates 535 + assert_equivalent [], e.person_templates
536 end 536 end
537 537
538 should 'person_default_template return the template defined as default' do 538 should 'person_default_template return the template defined as default' do
@@ -585,7 +585,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase @@ -585,7 +585,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase
585 c1= fast_create(Community, :is_template => true, :environment_id => e.id) 585 c1= fast_create(Community, :is_template => true, :environment_id => e.id)
586 c2 = fast_create(Community, :environment_id => e.id) 586 c2 = fast_create(Community, :environment_id => e.id)
587 c3 = fast_create(Community, :is_template => true, :environment_id => e.id) 587 c3 = fast_create(Community, :is_template => true, :environment_id => e.id)
588 - assert_equivalent [c1,c3], e.community_templates 588 + assert_equivalent [c1,c3], e.community_templates
589 end 589 end
590 590
591 should 'community_templates return an empty array if there is no templates of community' do 591 should 'community_templates return an empty array if there is no templates of community' do
@@ -646,7 +646,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase @@ -646,7 +646,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase
646 e1= fast_create(Enterprise, :is_template => true, :environment_id => env.id) 646 e1= fast_create(Enterprise, :is_template => true, :environment_id => env.id)
647 e2 = fast_create(Enterprise, :environment_id => env.id) 647 e2 = fast_create(Enterprise, :environment_id => env.id)
648 e3 = fast_create(Enterprise, :is_template => true, :environment_id => env.id) 648 e3 = fast_create(Enterprise, :is_template => true, :environment_id => env.id)
649 - assert_equivalent [e1,e3], env.enterprise_templates 649 + assert_equivalent [e1,e3], env.enterprise_templates
650 end 650 end
651 651
652 should 'enterprise_templates return an empty array if there is no templates of enterprise' do 652 should 'enterprise_templates return an empty array if there is no templates of enterprise' do
@@ -654,7 +654,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase @@ -654,7 +654,7 @@ class EnvironmentTest &lt; ActiveSupport::TestCase
654 654
655 fast_create(Enterprise, :environment_id => env.id) 655 fast_create(Enterprise, :environment_id => env.id)
656 fast_create(Enterprise, :environment_id => env.id) 656 fast_create(Enterprise, :environment_id => env.id)
657 - assert_equivalent [], env.enterprise_templates 657 + assert_equivalent [], env.enterprise_templates
658 end 658 end
659 659
660 should 'enterprise_default_template return the template defined as default' do 660 should 'enterprise_default_template return the template defined as default' do
@@ -1428,6 +1428,36 @@ class EnvironmentTest &lt; ActiveSupport::TestCase @@ -1428,6 +1428,36 @@ class EnvironmentTest &lt; ActiveSupport::TestCase
1428 assert !environment.plugin_enabled?(Plugin) 1428 assert !environment.plugin_enabled?(Plugin)
1429 end 1429 end
1430 1430
  1431 + should 'activate on database all available plugins' do
  1432 + plugins_enable = ["Statistics", "Foo", "PeopleBlock"]
  1433 + Noosfero::Plugins.stubs(:available_plugin_names).returns(plugins_enable)
  1434 + env1 = Environment.create(:name => "Test")
  1435 + env2 = Environment.create(:name => "Test 2")
  1436 +
  1437 + env1.enable_all_plugins
  1438 + env2.enable_all_plugins
  1439 +
  1440 + plugins = ["PeopleBlockPlugin", "StatisticsPlugin", "FooPlugin"]
  1441 + plugins.each do |plugin|
  1442 + assert env1.enabled_plugins.include?(plugin)
  1443 + assert env2.enabled_plugins.include?(plugin)
  1444 + end
  1445 + end
  1446 +
  1447 + should 'dont activate plugins that are not available' do
  1448 + env1 = Environment.create(:name => "Test")
  1449 + env2 = Environment.create(:name => "Test 2")
  1450 +
  1451 + env1.enable_all_plugins
  1452 + env2.enable_all_plugins
  1453 +
  1454 + plugins = ["SomePlugin", "OtherPlugin", "ThirdPlugin"]
  1455 + plugins.each do |plugin|
  1456 + assert_equal false, env1.enabled_plugins.include?(plugin)
  1457 + assert_equal false, env2.enabled_plugins.include?(plugin)
  1458 + end
  1459 + end
  1460 +
1431 should 'have production costs' do 1461 should 'have production costs' do
1432 assert_respond_to Environment.default, :production_costs 1462 assert_respond_to Environment.default, :production_costs
1433 end 1463 end
test/unit/folder_helper_test.rb
@@ -68,7 +68,7 @@ class FolderHelperTest &lt; ActionView::TestCase @@ -68,7 +68,7 @@ class FolderHelperTest &lt; ActionView::TestCase
68 profile.public_profile = false 68 profile.public_profile = false
69 profile.save! 69 profile.save!
70 profile2 = create_user('Folder Viwer').person 70 profile2 = create_user('Folder Viwer').person
71 - folder = fast_create(Folder, :profile_id => profile.id) 71 + folder = fast_create(Folder, :profile_id => profile.id, :published => false)
72 article = fast_create(Article, {:parent_id => folder.id, :profile_id => profile.id}) 72 article = fast_create(Article, {:parent_id => folder.id, :profile_id => profile.id})
73 73
74 result = available_articles(folder.children, profile2) 74 result = available_articles(folder.children, profile2)
test/unit/task_mailer_test.rb
@@ -119,7 +119,7 @@ class TaskMailerTest &lt; ActiveSupport::TestCase @@ -119,7 +119,7 @@ class TaskMailerTest &lt; ActiveSupport::TestCase
119 assert_match(/#{task.target_notification_description}/, mail.subject) 119 assert_match(/#{task.target_notification_description}/, mail.subject)
120 120
121 assert_equal "Hello friend name, my name invite you, please follow this link: http://example.com/account/signup?invitation_code=123456", mail.body.to_s 121 assert_equal "Hello friend name, my name invite you, please follow this link: http://example.com/account/signup?invitation_code=123456", mail.body.to_s
122 - 122 +
123 mail.deliver 123 mail.deliver
124 assert !ActionMailer::Base.deliveries.empty? 124 assert !ActionMailer::Base.deliveries.empty?
125 end 125 end
@@ -135,6 +135,36 @@ class TaskMailerTest &lt; ActiveSupport::TestCase @@ -135,6 +135,36 @@ class TaskMailerTest &lt; ActiveSupport::TestCase
135 assert_equal 'My name <email@example.com>', TaskMailer.generate_from(task) 135 assert_equal 'My name <email@example.com>', TaskMailer.generate_from(task)
136 end 136 end
137 137
  138 + should 'return the email with the subdirectory defined' do
  139 + Noosfero.stubs(:root).returns('/subdir')
  140 +
  141 + task = InviteFriend.new
  142 + task.expects(:code).returns('123456')
  143 +
  144 + task.stubs(:message).returns('Hello <friend>, <user> invite you, please follow this link: <url>')
  145 + task.expects(:friend_email).returns('friend@exemple.com')
  146 + task.expects(:friend_name).returns('friend name').at_least_once
  147 +
  148 + requestor = mock()
  149 + requestor.stubs(:name).returns('my name')
  150 + requestor.stubs(:public_profile_url).returns('requestor_path')
  151 +
  152 + environment = mock()
  153 + environment.expects(:noreply_email).returns('sender@example.com')
  154 + environment.expects(:default_hostname).returns('example.com')
  155 + environment.expects(:name).returns('example').at_least_once
  156 +
  157 + task.expects(:requestor).returns(requestor).at_least_once
  158 + task.expects(:person).returns(requestor).at_least_once
  159 + requestor.expects(:environment).returns(environment).at_least_once
  160 + task.expects(:environment).returns(environment).at_least_once
  161 +
  162 + mail = TaskMailer.invitation_notification(task)
  163 +
  164 + url_to_compare = "/subdir/account/signup"
  165 +
  166 + assert_match(/#{url_to_compare}/, mail.body.to_s)
  167 + end
138 168
139 private 169 private
140 def read_fixture(action) 170 def read_fixture(action)