Commit 4c67982418a4546b98bc599c573e2777f354dcf5
Committed by
Joenio Costa
1 parent
ca8b44f6
Exists in
master
and in
29 other branches
Add the possibility to create an enterprise by interface
(ActionItem1542)
Showing
8 changed files
with
54 additions
and
4 deletions
Show diff stats
app/controllers/public/enterprise_registration_controller.rb
@@ -15,14 +15,16 @@ class EnterpriseRegistrationController < ApplicationController | @@ -15,14 +15,16 @@ class EnterpriseRegistrationController < ApplicationController | ||
15 | if params[:create_enterprise] && params[:create_enterprise][:target_id] | 15 | if params[:create_enterprise] && params[:create_enterprise][:target_id] |
16 | @create_enterprise.target = Profile.find(params[:create_enterprise][:target_id]) | 16 | @create_enterprise.target = Profile.find(params[:create_enterprise][:target_id]) |
17 | end | 17 | end |
18 | - elsif @validation == :admin | 18 | + elsif @validation == :admin || @validation == :none |
19 | @create_enterprise.target = @create_enterprise.environment | 19 | @create_enterprise.target = @create_enterprise.environment |
20 | end | 20 | end |
21 | @create_enterprise.requestor = current_user.person | 21 | @create_enterprise.requestor = current_user.person |
22 | the_action = | 22 | the_action = |
23 | if request.post? | 23 | if request.post? |
24 | if @create_enterprise.valid_before_selecting_target? | 24 | if @create_enterprise.valid_before_selecting_target? |
25 | - if @create_enterprise.valid? || @validation == :admin | 25 | + if @create_enterprise.valid? && @validation == :none |
26 | + :creation | ||
27 | + elsif @create_enterprise.valid? || @validation == :admin | ||
26 | :confirmation | 28 | :confirmation |
27 | else | 29 | else |
28 | :select_validator | 30 | :select_validator |
@@ -63,4 +65,11 @@ class EnterpriseRegistrationController < ApplicationController | @@ -63,4 +65,11 @@ class EnterpriseRegistrationController < ApplicationController | ||
63 | @create_enterprise.save! | 65 | @create_enterprise.save! |
64 | end | 66 | end |
65 | 67 | ||
68 | + # Records the enterprise and presents a confirmation message | ||
69 | + # saying to the user that the enterprise was created. | ||
70 | + def creation | ||
71 | + @create_enterprise.perform | ||
72 | + @enterprise = @create_enterprise.target.profiles.find_by_identifier(@create_enterprise.identifier) | ||
73 | + end | ||
74 | + | ||
66 | end | 75 | end |
app/helpers/features_helper.rb
@@ -3,6 +3,7 @@ module FeaturesHelper | @@ -3,6 +3,7 @@ module FeaturesHelper | ||
3 | choices = [ | 3 | choices = [ |
4 | [ _('Administrator must approve all new organizations'), 'admin'], | 4 | [ _('Administrator must approve all new organizations'), 'admin'], |
5 | [ _('Administrator assigns validator organizations per region.'), 'region'], | 5 | [ _('Administrator assigns validator organizations per region.'), 'region'], |
6 | + [ _('All new organizations are approve by default'), 'none'], | ||
6 | ] | 7 | ] |
7 | value = instance_variable_get("@#{object}").send(method).to_s | 8 | value = instance_variable_get("@#{object}").send(method).to_s |
8 | select_tag("#{object}[#{method}]", options_for_select(choices, value)) | 9 | select_tag("#{object}[#{method}]", options_for_select(choices, value)) |
app/models/environment.rb
@@ -275,6 +275,7 @@ class Environment < ActiveRecord::Base | @@ -275,6 +275,7 @@ class Environment < ActiveRecord::Base | ||
275 | # * <tt>:region</tt>: organization registering must be approved by some other | 275 | # * <tt>:region</tt>: organization registering must be approved by some other |
276 | # organization asssigned as validator to the Region the new organization | 276 | # organization asssigned as validator to the Region the new organization |
277 | # belongs to. | 277 | # belongs to. |
278 | + # * <tt>:none</tt>: organization registration is approved by default. | ||
278 | # | 279 | # |
279 | # Trying to set organization_approval_method to any other value will raise an | 280 | # Trying to set organization_approval_method to any other value will raise an |
280 | # ArgumentError. | 281 | # ArgumentError. |
@@ -287,6 +288,7 @@ class Environment < ActiveRecord::Base | @@ -287,6 +288,7 @@ class Environment < ActiveRecord::Base | ||
287 | accepted_values = %w[ | 288 | accepted_values = %w[ |
288 | admin | 289 | admin |
289 | region | 290 | region |
291 | + none | ||
290 | ].map(&:to_sym) | 292 | ].map(&:to_sym) |
291 | raise ArgumentError unless accepted_values.include?(actual_value) | 293 | raise ArgumentError unless accepted_values.include?(actual_value) |
292 | 294 |
app/views/search/enterprises.rhtml
@@ -15,6 +15,12 @@ | @@ -15,6 +15,12 @@ | ||
15 | 15 | ||
16 | <%= render :partial => 'search_form', :locals => { :form_title => _("Refine your search"), :simple_search => true } %> | 16 | <%= render :partial => 'search_form', :locals => { :form_title => _("Refine your search"), :simple_search => true } %> |
17 | 17 | ||
18 | +<% if logged_in? && environment.enabled?('enterprise_registration') %> | ||
19 | + <% button_bar do %> | ||
20 | + <%= button(:add, __('New enterprise'), {:controller => 'enterprise_registration'}) %> | ||
21 | + <% end %> | ||
22 | +<% end %> | ||
23 | + | ||
18 | <% if @categories_menu %> | 24 | <% if @categories_menu %> |
19 | <div class="has_cat_list"> | 25 | <div class="has_cat_list"> |
20 | <% end %> | 26 | <% end %> |
features/register_enterprise.feature
@@ -192,3 +192,12 @@ Feature: register enterprise | @@ -192,3 +192,12 @@ Feature: register enterprise | ||
192 | And I am on Joao Silva's control panel | 192 | And I am on Joao Silva's control panel |
193 | When I follow "Manage my groups" | 193 | When I follow "Manage my groups" |
194 | Then I should not see "My Enterprise" | 194 | Then I should not see "My Enterprise" |
195 | + | ||
196 | + Scenario: a user can see button to register new enterprise | ||
197 | + When I am on /assets/enterprises | ||
198 | + Then I should see "New enterprise" link | ||
199 | + | ||
200 | + Scenario: a user cant see button to register new enterprise if enterprise_registration disabled | ||
201 | + Given feature "enterprise_registration" is disabled on environment | ||
202 | + When I am on /assets/enterprises | ||
203 | + Then I should not see "New enterprise" link |
test/functional/enterprise_registration_controller_test.rb
@@ -49,6 +49,19 @@ all_fixtures | @@ -49,6 +49,19 @@ all_fixtures | ||
49 | assert_template 'confirmation' | 49 | assert_template 'confirmation' |
50 | end | 50 | end |
51 | 51 | ||
52 | + should 'skip prompt for selection validator if approval method is none' do | ||
53 | + env = Environment.default | ||
54 | + env.organization_approval_method = :none | ||
55 | + env.save | ||
56 | + region = fast_create(Region) | ||
57 | + | ||
58 | + data = { :name => 'My new enterprise', :identifier => 'mynew', :region => region } | ||
59 | + create_enterprise = CreateEnterprise.new(data) | ||
60 | + | ||
61 | + post :index, :create_enterprise => data | ||
62 | + assert_template 'creation' | ||
63 | + end | ||
64 | + | ||
52 | should 'prompt for selecting validator if approval method is region' do | 65 | should 'prompt for selecting validator if approval method is region' do |
53 | env = Environment.default | 66 | env = Environment.default |
54 | env.organization_approval_method = :region | 67 | env.organization_approval_method = :region |
@@ -77,7 +90,7 @@ all_fixtures | @@ -77,7 +90,7 @@ all_fixtures | ||
77 | 90 | ||
78 | # all data but validator selected | 91 | # all data but validator selected |
79 | create_enterprise.expects(:valid_before_selecting_target?).returns(true) | 92 | create_enterprise.expects(:valid_before_selecting_target?).returns(true) |
80 | - create_enterprise.expects(:valid?).returns(false) | 93 | + create_enterprise.stubs(:valid?).returns(false) |
81 | 94 | ||
82 | post :index, :create_enterprise => data | 95 | post :index, :create_enterprise => data |
83 | assert_template 'select_validator' | 96 | assert_template 'select_validator' |
@@ -93,7 +106,7 @@ all_fixtures | @@ -93,7 +106,7 @@ all_fixtures | ||
93 | validator = mock() | 106 | validator = mock() |
94 | validator.stubs(:name).returns("lalala") | 107 | validator.stubs(:name).returns("lalala") |
95 | create_enterprise.expects(:valid_before_selecting_target?).returns(true) | 108 | create_enterprise.expects(:valid_before_selecting_target?).returns(true) |
96 | - create_enterprise.expects(:valid?).returns(true) # validator already selected | 109 | + create_enterprise.stubs(:valid?).returns(true) # validator already selected |
97 | create_enterprise.expects(:save!) | 110 | create_enterprise.expects(:save!) |
98 | create_enterprise.expects(:target).returns(validator) | 111 | create_enterprise.expects(:target).returns(validator) |
99 | 112 |
test/unit/environment_test.rb
@@ -241,6 +241,7 @@ class EnvironmentTest < Test::Unit::TestCase | @@ -241,6 +241,7 @@ class EnvironmentTest < Test::Unit::TestCase | ||
241 | valid = %w[ | 241 | valid = %w[ |
242 | admin | 242 | admin |
243 | region | 243 | region |
244 | + none | ||
244 | ].each do |item| | 245 | ].each do |item| |
245 | env.organization_approval_method = item | 246 | env.organization_approval_method = item |
246 | env.organization_approval_method = item.to_sym | 247 | env.organization_approval_method = item.to_sym |