Commit b1526ae1ae8e90e6b2af5e5b733d4a8c2b3fe88f

Authored by Marcos Pereira
1 parent bbd28eeb

fix signup with custom_fields

Signed-off-by: Joenio Costa <joenio@colivre.coop.br>
Signed-off-by: Marcos Ramos <ms.ramos@outlook.com>
Signed-off-by: Marcos Ronaldo <marcos.rpj2@gmail.com>
app/controllers/my_profile/memberships_controller.rb
... ... @@ -18,12 +18,14 @@ class MembershipsController &lt; MyProfileController
18 18  
19 19 def new_community
20 20 @community = Community.new(params[:community])
  21 + custom_values = params[:profile_data][:custom_values] if (params[:profile_data] && params[:profile_data][:custom_values])
  22 + @community.custom_values = custom_values
21 23 @community.environment = environment
22 24 @back_to = params[:back_to] || url_for(:action => 'index')
23 25 if request.post? && @community.valid?
24 26 begin
25 27 # Community was created
26   - @community = Community.create_after_moderation(user, params[:community].merge({:environment => environment}))
  28 + @community = Community.create_after_moderation(user, params[:community].merge({:environment => environment, :custom_values => custom_values}))
27 29 @community.reload
28 30 redirect_to :action => 'welcome', :community_id => @community.id, :back_to => @back_to
29 31 rescue ActiveRecord::RecordNotFound
... ...
app/models/community.rb
... ... @@ -33,7 +33,7 @@ class Community &lt; Organization
33 33 community = Community.new(attributes)
34 34 community.environment = environment
35 35 if community.environment.enabled?('admin_must_approve_new_communities')
36   - CreateCommunity.create!(attributes.merge(:requestor => requestor, :environment => environment))
  36 + CreateCommunity.create!(attributes.merge(:requestor => requestor, :environment => environment).except(:custom_values))
37 37 else
38 38 community.save!
39 39 community.add_admin(requestor)
... ...
lib/acts_as_customizable.rb
... ... @@ -90,7 +90,7 @@ module Customizable
90 90 custom_values.each_pair do |key, value|
91 91 custom_field = environment.custom_fields.detect{|cf|cf.name==key}
92 92 next if custom_field.blank?
93   - custom_field_value = self.custom_field_values.detect{|cv| cv.custom_field.name==key}
  93 + custom_field_value = self.custom_field_values(true).detect{|cv| cv.custom_field.name==key}
94 94  
95 95 if custom_field_value.nil?
96 96 custom_field_value = CustomFieldValue.new
... ...
test/functional/account_controller_test.rb
... ... @@ -108,6 +108,15 @@ class AccountControllerTest &lt; ActionController::TestCase
108 108 end
109 109 end
110 110  
  111 + def test_shoud_save_with_custom_field_on_signup
  112 + assert_difference 'User.count' do
  113 + assert_difference 'CustomFieldValue.count' do
  114 + CustomField.create!(:name => "zombies", :format=>"String", :default_value => "awrrr", :customized_type=>"Profile", :active => true, :required => true, :signup => true, :environment => Environment.default)
  115 + new_user({},{"profile_data"=> {"custom_values"=>{"zombies"=>{"value"=>"BRAINSSS"}}}})
  116 + end
  117 + end
  118 + end
  119 +
111 120 def test_should_logout
112 121 login_as :johndoe
113 122 get :logout
... ...
test/functional/memberships_controller_test.rb
... ... @@ -36,6 +36,17 @@ class MembershipsControllerTest &lt; ActionController::TestCase
36 36 end
37 37 end
38 38  
  39 + should 'be able to create a new community with custom field' do
  40 + assert_difference 'Community.count' do
  41 + assert_difference 'CustomFieldValue.count' do
  42 + CustomField.create!(:name => "zombies", :format=>"String", :default_value => "awrrr", :customized_type=>"Community", :active => true, :required => true, :signup => true, :environment => Environment.default)
  43 + post :new_community, :profile => profile.identifier, :community => { :name => 'My shiny new community', :description => 'This is a community devoted to anything interesting we find in the internet '}, "profile_data"=>{"custom_values"=>{"zombies"=>{"value"=>"BRAINSSS"}}}
  44 + assert_response :redirect
  45 + assert Community.find_by_identifier('my-shiny-new-community').members.include?(profile), "Creator user should be added as member of the community just created"
  46 + end
  47 + end
  48 + end
  49 +
39 50 should 'link to new community creation in index' do
40 51 get :index, :profile => profile.identifier
41 52 assert_tag :tag => 'a', :attributes => { :href => "/myprofile/#{profile.identifier}/memberships/new_community" }
... ...