Commit b4c10bc6c9162b1fa7f06af7044a79436d8a0632

Authored by Evandro Jr
2 parents 77faaabf 41834a8e

Merge branch 'stable' of gitlab.com:participa/noosfero into stable

app/models/community.rb
@@ -50,16 +50,6 @@ class Community < Organization @@ -50,16 +50,6 @@ class Community < Organization
50 super + FIELDS 50 super + FIELDS
51 end 51 end
52 52
53 - validate :presence_of_required_fieds  
54 -  
55 - def presence_of_required_fieds  
56 - self.required_fields.each do |field|  
57 - if self.send(field).blank?  
58 - self.errors.add_on_blank(field)  
59 - end  
60 - end  
61 - end  
62 -  
63 def active_fields 53 def active_fields
64 environment ? environment.active_community_fields : [] 54 environment ? environment.active_community_fields : []
65 end 55 end
app/models/enterprise.rb
@@ -59,16 +59,6 @@ class Enterprise < Organization @@ -59,16 +59,6 @@ class Enterprise < Organization
59 super + FIELDS 59 super + FIELDS
60 end 60 end
61 61
62 - validate :presence_of_required_fieds  
63 -  
64 - def presence_of_required_fieds  
65 - self.required_fields.each do |field|  
66 - if self.send(field).blank?  
67 - self.errors.add_on_blank(field)  
68 - end  
69 - end  
70 - end  
71 -  
72 def active_fields 62 def active_fields
73 environment ? environment.active_enterprise_fields : [] 63 environment ? environment.active_enterprise_fields : []
74 end 64 end
app/models/organization.rb
@@ -30,6 +30,16 @@ class Organization < Profile @@ -30,6 +30,16 @@ class Organization < Profile
30 30
31 scope :more_popular, :order => 'members_count DESC' 31 scope :more_popular, :order => 'members_count DESC'
32 32
  33 + validate :presence_of_required_fieds, :unless => :is_template
  34 +
  35 + def presence_of_required_fieds
  36 + self.required_fields.each do |field|
  37 + if self.send(field).blank?
  38 + self.errors.add_on_blank(field)
  39 + end
  40 + end
  41 + end
  42 +
33 def validation_methodology 43 def validation_methodology
34 self.validation_info ? self.validation_info.validation_methodology : nil 44 self.validation_info ? self.validation_info.validation_methodology : nil
35 end 45 end
app/models/person.rb
@@ -161,7 +161,7 @@ class Person < Profile @@ -161,7 +161,7 @@ class Person < Profile
161 FIELDS 161 FIELDS
162 end 162 end
163 163
164 - validate :presence_of_required_fields 164 + validate :presence_of_required_fields, :unless => :is_template
165 165
166 def presence_of_required_fields 166 def presence_of_required_fields
167 self.required_fields.each do |field| 167 self.required_fields.each do |field|
plugins/proposals_discussion/controllers/public/proposals_discussion_plugin_public_controller.rb
@@ -2,13 +2,14 @@ class ProposalsDiscussionPluginPublicController < ApplicationController @@ -2,13 +2,14 @@ class ProposalsDiscussionPluginPublicController < ApplicationController
2 2
3 needs_profile 3 needs_profile
4 4
  5 + before_filter :check_permission
  6 +
5 def load_proposals 7 def load_proposals
6 - @holder = profile.articles.find(params[:holder_id])  
7 page = (params[:page] || 1).to_i 8 page = (params[:page] || 1).to_i
8 set_rand_cookie if page == 1 9 set_rand_cookie if page == 1
9 order = params[:order] 10 order = params[:order]
10 11
11 - @proposals = order_proposals(@holder.proposals.public, order) 12 + @proposals = order_proposals(@holder.proposals.published, order)
12 @proposals = @proposals.page(page).per_page(4) 13 @proposals = @proposals.page(page).per_page(4)
13 14
14 render :partial => 'content_viewer/proposals_list_content', :locals => {:proposals => @proposals, :holder => @holder, :page => page+1, :order => order} 15 render :partial => 'content_viewer/proposals_list_content', :locals => {:proposals => @proposals, :holder => @holder, :page => page+1, :order => order}
@@ -16,6 +17,11 @@ class ProposalsDiscussionPluginPublicController < ApplicationController @@ -16,6 +17,11 @@ class ProposalsDiscussionPluginPublicController < ApplicationController
16 17
17 private 18 private
18 19
  20 + def check_permission
  21 + @holder = profile.articles.find(params[:holder_id])
  22 + render_access_denied unless @holder.display_to?(user)
  23 + end
  24 +
19 def order_proposals(proposals, order) 25 def order_proposals(proposals, order)
20 case order 26 case order
21 when 'alphabetical' 27 when 'alphabetical'
plugins/proposals_discussion/test/functional/proposals_discussion_plugin_public_controller_test.rb
@@ -76,4 +76,23 @@ class ProposalsDiscussionPluginPublicControllerTest < ActionController::TestCase @@ -76,4 +76,23 @@ class ProposalsDiscussionPluginPublicControllerTest < ActionController::TestCase
76 assert_equal [proposal3, proposal1, proposal2], assigns(:proposals) 76 assert_equal [proposal3, proposal1, proposal2], assigns(:proposals)
77 end 77 end
78 78
  79 + should 'load proposals when profile is private and the user is a member' do
  80 + person = create_user.person
  81 + login_as(person.identifier)
  82 + profile.add_member(person)
  83 + profile.update_attribute(:public_profile, false)
  84 +
  85 + proposals = 3.times.map { fast_create(ProposalsDiscussionPlugin::Proposal, :name => 'proposal title', :abstract => 'proposal abstract', :profile_id => profile.id, :parent_id => topic.id)}
  86 + get :load_proposals, :profile => profile.identifier, :holder_id => topic.id
  87 + assert_equivalent proposals, assigns(:proposals)
  88 + end
  89 +
  90 + should 'not load proposals when profile is private and user is not logged' do
  91 + logout
  92 + profile.update_attribute(:public_profile, false)
  93 + proposals = 3.times.map { fast_create(ProposalsDiscussionPlugin::Proposal, :name => 'proposal title', :abstract => 'proposal abstract', :profile_id => profile.id, :parent_id => topic.id)}
  94 + get :load_proposals, :profile => profile.identifier, :holder_id => topic.id
  95 + assert_equal nil, assigns(:proposals)
  96 + end
  97 +
79 end 98 end
test/unit/community_test.rb
@@ -126,6 +126,18 @@ class CommunityTest < ActiveSupport::TestCase @@ -126,6 +126,18 @@ class CommunityTest < ActiveSupport::TestCase
126 assert ! community.errors[:contact_phone.to_s].present? 126 assert ! community.errors[:contact_phone.to_s].present?
127 end 127 end
128 128
  129 + should 'not require fields if community is a template' do
  130 + e = Environment.default
  131 + e.expects(:required_community_fields).returns(['contact_phone']).at_least_once
  132 + community = build(Community, :name => 'My community', :environment => e)
  133 + assert ! community.valid?
  134 + assert community.errors[:contact_phone.to_s].present?
  135 +
  136 + community.is_template = true
  137 + community.valid?
  138 + assert ! community.errors[:contact_phone.to_s].present?
  139 + end
  140 +
129 should 'return newest text articles as news' do 141 should 'return newest text articles as news' do
130 c = fast_create(Community, :name => 'test_com') 142 c = fast_create(Community, :name => 'test_com')
131 f = fast_create(Folder, :name => 'folder', :profile_id => c.id) 143 f = fast_create(Folder, :name => 'folder', :profile_id => c.id)
test/unit/enterprise_test.rb
@@ -310,6 +310,18 @@ class EnterpriseTest < ActiveSupport::TestCase @@ -310,6 +310,18 @@ class EnterpriseTest < ActiveSupport::TestCase
310 assert ! enterprise.errors[:contact_phone.to_s].present? 310 assert ! enterprise.errors[:contact_phone.to_s].present?
311 end 311 end
312 312
  313 + should 'not require fields if enterprise is a template' do
  314 + e = Environment.default
  315 + e.expects(:required_enterprise_fields).returns(['contact_phone']).at_least_once
  316 + enterprise = build(Enterprise, :environment => e)
  317 + assert ! enterprise.valid?
  318 + assert enterprise.errors[:contact_phone.to_s].present?
  319 +
  320 + enterprise.is_template = true
  321 + enterprise.valid?
  322 + assert ! enterprise.errors[:contact_phone.to_s].present?
  323 + end
  324 +
313 should 'enable contact' do 325 should 'enable contact' do
314 enterprise = build(Enterprise, :enable_contact_us => false) 326 enterprise = build(Enterprise, :enable_contact_us => false)
315 assert !enterprise.enable_contact? 327 assert !enterprise.enable_contact?
test/unit/person_test.rb
@@ -513,6 +513,18 @@ class PersonTest < ActiveSupport::TestCase @@ -513,6 +513,18 @@ class PersonTest < ActiveSupport::TestCase
513 assert ! person.errors[:custom_formation.to_s].present? 513 assert ! person.errors[:custom_formation.to_s].present?
514 end 514 end
515 515
  516 + should 'not require fields if person is a template' do
  517 + e = Environment.default
  518 + e.expects(:required_person_fields).returns(['cell_phone']).at_least_once
  519 + person = build(Person, :environment => e)
  520 + assert ! person.valid?
  521 + assert person.errors[:cell_phone.to_s].present?
  522 +
  523 + person.is_template = true
  524 + person.valid?
  525 + assert ! person.errors[:cell_phone.to_s].present?
  526 + end
  527 +
516 should 'identify when person is a friend' do 528 should 'identify when person is a friend' do
517 p1 = create_user('testuser1').person 529 p1 = create_user('testuser1').person
518 p2 = create_user('testuser2').person 530 p2 = create_user('testuser2').person