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,4 +65,7 @@ class Person < Profile
65 true 65 true
66 end 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 end 71 end
app/models/profile.rb
@@ -73,12 +73,12 @@ class Profile < ActiveRecord::Base @@ -73,12 +73,12 @@ class Profile < ActiveRecord::Base
73 validates_exclusion_of :identifier, :in => RESERVED_IDENTIFIERS 73 validates_exclusion_of :identifier, :in => RESERVED_IDENTIFIERS
74 validates_uniqueness_of :identifier 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 end 82 end
83 83
84 # registar callback for creating boxes after the object is created. 84 # registar callback for creating boxes after the object is created.
test/test_helper.rb
@@ -28,6 +28,8 @@ class Test::Unit::TestCase @@ -28,6 +28,8 @@ class Test::Unit::TestCase
28 # Add more helper methods to be used by all tests here... 28 # Add more helper methods to be used by all tests here...
29 29
30 include AuthenticatedTestHelper 30 include AuthenticatedTestHelper
  31 +
  32 + fixtures :environments
31 33
32 def self.all_fixtures 34 def self.all_fixtures
33 Dir.glob(File.join(RAILS_ROOT, 'test', 'fixtures', '*.yml')).each do |item| 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,8 +35,7 @@ class EnterpriseTest < Test::Unit::TestCase
35 end 35 end
36 36
37 def test_belongs_to_environment_and_has_default 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 end 39 end
41 40
42 def test_cannot_rename 41 def test_cannot_rename
test/unit/profile_test.rb
@@ -34,9 +34,29 @@ class ProfileTest < Test::Unit::TestCase @@ -34,9 +34,29 @@ class ProfileTest < Test::Unit::TestCase
34 assert_kind_of Array, p.domains 34 assert_kind_of Array, p.domains
35 end 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 end 60 end
41 61
42 def test_cannot_rename 62 def test_cannot_rename