diff --git a/app/models/person.rb b/app/models/person.rb index ac7558b..89a62f9 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -65,4 +65,7 @@ class Person < Profile true end + # FIXME this is *weird*, because this class is not inheriting the callback + before_create :set_default_environment + end diff --git a/app/models/profile.rb b/app/models/profile.rb index 48cb783..27ce483 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -73,12 +73,12 @@ class Profile < ActiveRecord::Base validates_exclusion_of :identifier, :in => RESERVED_IDENTIFIERS validates_uniqueness_of :identifier - # creates a new Profile. By default, it is attached to the default - # Environment (see Environment#default), unless you tell it - # otherwise - def initialize(*args) - super(*args) - self.environment ||= Environment.default + before_create :set_default_environment + def set_default_environment + if self.environment.nil? + self.environment = Environment.default + end + true end # registar callback for creating boxes after the object is created. diff --git a/test/test_helper.rb b/test/test_helper.rb index 35ea43d..7561036 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -28,6 +28,8 @@ class Test::Unit::TestCase # Add more helper methods to be used by all tests here... include AuthenticatedTestHelper + + fixtures :environments def self.all_fixtures Dir.glob(File.join(RAILS_ROOT, 'test', 'fixtures', '*.yml')).each do |item| diff --git a/test/unit/enterprise_test.rb b/test/unit/enterprise_test.rb index be7b4b3..f886d41 100644 --- a/test/unit/enterprise_test.rb +++ b/test/unit/enterprise_test.rb @@ -35,8 +35,7 @@ class EnterpriseTest < Test::Unit::TestCase end def test_belongs_to_environment_and_has_default - p = Enterprise.new - assert_kind_of Environment, p.environment + assert_equal Environment.default, Enterprise.create!(:name => 'my test environment', :identifier => 'mytestenvironment').environment end def test_cannot_rename diff --git a/test/unit/profile_test.rb b/test/unit/profile_test.rb index 4285eee..e66088e 100644 --- a/test/unit/profile_test.rb +++ b/test/unit/profile_test.rb @@ -34,9 +34,29 @@ class ProfileTest < Test::Unit::TestCase assert_kind_of Array, p.domains end - def test_belongs_to_environment_and_has_default - p = Profile.new - assert_kind_of Environment, p.environment + should 'be assigned to default environment if no environment is informed' do + assert_equal Environment.default, Profile.create!(:name => 'my test profile', :identifier => 'mytestprofile').environment + end + + should 'not override environment informed before creation' do + env = Environment.create!(:name => 'My test environment') + p = Profile.create!(:identifier => 'mytestprofile', :name => 'My test profile', :environment_id => env.id) + + assert_equal env, p.environment + end + + should 'be able to set environment after instantiation and before creating' do + env = Environment.create!(:name => 'My test environment') + p = Profile.new(:identifier => 'mytestprofile', :name => 'My test profile') + p.environment = env + p.save! + + p.reload + assert_equal env, p.environment + end + + should 'set default environment for users created' do + assert_equal Environment.default, create_user('mytestuser').person.environment end def test_cannot_rename -- libgit2 0.21.2