Commit e83b4b8c194574ca004350802b873c63a8fd3cc0

Authored by Victor Costa
2 parents 4dbb7f2b f0ec4fa4

Merge branch 'master' into staging

app/controllers/my_profile/memberships_controller.rb
... ... @@ -18,12 +18,14 @@ class MembershipsController < 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 < 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)
... ...
app/models/suggest_article.rb
... ... @@ -23,6 +23,10 @@ class SuggestArticle < Task
23 23 requestor ? "#{requestor.name}" : "#{name} (#{email})"
24 24 end
25 25  
  26 + def author_name
  27 + sender
  28 + end
  29 +
26 30 def article_object
27 31 if @article_object.nil?
28 32 @article_object = article_type.new(article.merge(target.present? ? {:profile => target} : {}).except(:type))
... ... @@ -41,7 +45,6 @@ class SuggestArticle < Task
41 45 return type if type < Article
42 46 end
43 47 TinyMceArticle
44   - (article[:type] || 'TinyMceArticle').constantize
45 48 end
46 49  
47 50 def perform
... ...
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" }
... ...
test/functional/tasks_controller_test.rb
... ... @@ -360,6 +360,19 @@ class TasksControllerTest &lt; ActionController::TestCase
360 360 assert_select "#tasks_#{t.id}_task_name"
361 361 end
362 362  
  363 + should "not crash when article suggestion task fails" do
  364 + TinyMceArticle.destroy_all
  365 + c = fast_create(Community)
  366 + c.affiliate(profile, Profile::Roles.all_roles(profile.environment.id))
  367 + @controller.stubs(:profile).returns(c)
  368 + t = SuggestArticle.create!(:article => {:name => 'test name', :abstract => 'test abstract', :body => 'test body'}, :name => 'some name', :email => 'test@localhost.com', :target => c)
  369 +
  370 + SuggestArticle.any_instance.stubs(:perform).raises('erro')
  371 + assert_nothing_raised do
  372 + post :close, :tasks => {t.id => { :task => {}, :decision => "finish"}}
  373 + end
  374 + end
  375 +
363 376 should "append hidden tag with type value from article suggestion" do
364 377 Task.destroy_all
365 378 c = fast_create(Community)
... ...
test/unit/suggest_article_test.rb
... ... @@ -242,4 +242,9 @@ class SuggestArticleTest &lt; ActiveSupport::TestCase
242 242 t.article_type == TinyMceArticle
243 243 end
244 244  
  245 + should 'fallback to tinymce when type parameter is blank' do
  246 + t = SuggestArticle.new
  247 + t.article = {:name => 'name', :body => 'body', :type => ''}
  248 + t.article_type == TinyMceArticle
  249 + end
245 250 end
... ...