Commit a54592c43855cf983d85c1720c5853151889f031

Authored by AntonioTerceiro
1 parent 0f3f61b4

ActionItem103: implementing organization_approval_method setting



git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@653 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/models/environment.rb
... ... @@ -86,6 +86,38 @@ class Environment < ActiveRecord::Base
86 86 def has_terms_of_use?
87 87 ! self.settings['terms_of_use'].nil?
88 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 123 # Validations
... ...
test/unit/environment_test.rb
... ... @@ -145,4 +145,28 @@ class EnvironmentTest &lt; Test::Unit::TestCase
145 145 assert_equal 'localhost.localdomain', env.default_hostname
146 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 172 end
... ...