Commit a54592c43855cf983d85c1720c5853151889f031
1 parent
0f3f61b4
Exists in
master
and in
22 other branches
ActionItem103: implementing organization_approval_method setting
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@653 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
2 changed files
with
56 additions
and
0 deletions
Show diff stats
app/models/environment.rb
| @@ -86,6 +86,38 @@ class Environment < ActiveRecord::Base | @@ -86,6 +86,38 @@ class Environment < ActiveRecord::Base | ||
| 86 | def has_terms_of_use? | 86 | def has_terms_of_use? |
| 87 | ! self.settings['terms_of_use'].nil? | 87 | ! self.settings['terms_of_use'].nil? |
| 88 | end | 88 | end |
| 89 | + | ||
| 90 | + # returns the approval method used for this environment. Possible values are: | ||
| 91 | + # | ||
| 92 | + # Defaults to <tt>:admim</tt>. | ||
| 93 | + def organization_approval_method | ||
| 94 | + self.settings['organization_approval_method'] || :admin | ||
| 95 | + end | ||
| 96 | + | ||
| 97 | + # Sets the organization_approval_method. Only accepts the following values: | ||
| 98 | + # | ||
| 99 | + # * <tt>:admin</tt>: organization registration must be approved by the | ||
| 100 | + # environment administrator. | ||
| 101 | + # * <tt>:region</tt>: organization registering must be approved by some other | ||
| 102 | + # organization asssigned as validator to the Region the new organization | ||
| 103 | + # belongs to. | ||
| 104 | + # | ||
| 105 | + # Trying to set organization_approval_method to any other value will raise an | ||
| 106 | + # ArgumentError. | ||
| 107 | + # | ||
| 108 | + # The value passed as argument is converted to a Symbol before being actually | ||
| 109 | + # set to this setting. | ||
| 110 | + def organization_approval_method=(value) | ||
| 111 | + actual_value = value.to_sym | ||
| 112 | + | ||
| 113 | + accepted_values = %w[ | ||
| 114 | + admin | ||
| 115 | + region | ||
| 116 | + ].map(&:to_sym) | ||
| 117 | + raise ArgumentError unless accepted_values.include?(actual_value) | ||
| 118 | + | ||
| 119 | + self.settings['organization_approval_method'] = actual_value | ||
| 120 | + end | ||
| 89 | 121 | ||
| 90 | # ################################################# | 122 | # ################################################# |
| 91 | # Validations | 123 | # Validations |
test/unit/environment_test.rb
| @@ -145,4 +145,28 @@ class EnvironmentTest < Test::Unit::TestCase | @@ -145,4 +145,28 @@ class EnvironmentTest < Test::Unit::TestCase | ||
| 145 | assert_equal 'localhost.localdomain', env.default_hostname | 145 | assert_equal 'localhost.localdomain', env.default_hostname |
| 146 | end | 146 | end |
| 147 | 147 | ||
| 148 | + should 'provide an approval_method setting' do | ||
| 149 | + env = Environment.new | ||
| 150 | + | ||
| 151 | + # default value | ||
| 152 | + assert_equal :admin, env.organization_approval_method | ||
| 153 | + | ||
| 154 | + # valid values | ||
| 155 | + assert_nothing_raised do | ||
| 156 | + valid = %w[ | ||
| 157 | + admin | ||
| 158 | + region | ||
| 159 | + ].each do |item| | ||
| 160 | + env.organization_approval_method = item | ||
| 161 | + env.organization_approval_method = item.to_sym | ||
| 162 | + end | ||
| 163 | + end | ||
| 164 | + | ||
| 165 | + # do not allow other values | ||
| 166 | + assert_raise ArgumentError do | ||
| 167 | + env.organization_approval_method = :lalala | ||
| 168 | + end | ||
| 169 | + | ||
| 170 | + end | ||
| 171 | + | ||
| 148 | end | 172 | end |