Commit d5b832ece8857d381a158a17525f72efe3c2f32a

Authored by AntonioTerceiro
1 parent f7932a0d

ActionItem153: fixing the association of new users to profiles


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1275 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/models/person.rb
... ... @@ -65,4 +65,7 @@ class Person < Profile
65 65 true
66 66 end
67 67  
  68 + # FIXME this is *weird*, because this class is not inheriting the callback
  69 + before_create :set_default_environment
  70 +
68 71 end
... ...
app/models/profile.rb
... ... @@ -73,12 +73,12 @@ class Profile < ActiveRecord::Base
73 73 validates_exclusion_of :identifier, :in => RESERVED_IDENTIFIERS
74 74 validates_uniqueness_of :identifier
75 75  
76   - # creates a new Profile. By default, it is attached to the default
77   - # Environment (see Environment#default), unless you tell it
78   - # otherwise
79   - def initialize(*args)
80   - super(*args)
81   - self.environment ||= Environment.default
  76 + before_create :set_default_environment
  77 + def set_default_environment
  78 + if self.environment.nil?
  79 + self.environment = Environment.default
  80 + end
  81 + true
82 82 end
83 83  
84 84 # registar callback for creating boxes after the object is created.
... ...
test/test_helper.rb
... ... @@ -28,6 +28,8 @@ class Test::Unit::TestCase
28 28 # Add more helper methods to be used by all tests here...
29 29  
30 30 include AuthenticatedTestHelper
  31 +
  32 + fixtures :environments
31 33  
32 34 def self.all_fixtures
33 35 Dir.glob(File.join(RAILS_ROOT, 'test', 'fixtures', '*.yml')).each do |item|
... ...
test/unit/enterprise_test.rb
... ... @@ -35,8 +35,7 @@ class EnterpriseTest < Test::Unit::TestCase
35 35 end
36 36  
37 37 def test_belongs_to_environment_and_has_default
38   - p = Enterprise.new
39   - assert_kind_of Environment, p.environment
  38 + assert_equal Environment.default, Enterprise.create!(:name => 'my test environment', :identifier => 'mytestenvironment').environment
40 39 end
41 40  
42 41 def test_cannot_rename
... ...
test/unit/profile_test.rb
... ... @@ -34,9 +34,29 @@ class ProfileTest < Test::Unit::TestCase
34 34 assert_kind_of Array, p.domains
35 35 end
36 36  
37   - def test_belongs_to_environment_and_has_default
38   - p = Profile.new
39   - assert_kind_of Environment, p.environment
  37 + should 'be assigned to default environment if no environment is informed' do
  38 + assert_equal Environment.default, Profile.create!(:name => 'my test profile', :identifier => 'mytestprofile').environment
  39 + end
  40 +
  41 + should 'not override environment informed before creation' do
  42 + env = Environment.create!(:name => 'My test environment')
  43 + p = Profile.create!(:identifier => 'mytestprofile', :name => 'My test profile', :environment_id => env.id)
  44 +
  45 + assert_equal env, p.environment
  46 + end
  47 +
  48 + should 'be able to set environment after instantiation and before creating' do
  49 + env = Environment.create!(:name => 'My test environment')
  50 + p = Profile.new(:identifier => 'mytestprofile', :name => 'My test profile')
  51 + p.environment = env
  52 + p.save!
  53 +
  54 + p.reload
  55 + assert_equal env, p.environment
  56 + end
  57 +
  58 + should 'set default environment for users created' do
  59 + assert_equal Environment.default, create_user('mytestuser').person.environment
40 60 end
41 61  
42 62 def test_cannot_rename
... ...