Commit bec83af88140bd73813895b4d7e5bd2011ce3481

Authored by Antonio Terceiro
1 parent 00d55339

ActionItem1159: fixing Environment#default_hostname

It must honor the default domain for that given environment.
app/models/environment.rb
@@ -419,7 +419,7 @@ class Environment < ActiveRecord::Base @@ -419,7 +419,7 @@ class Environment < ActiveRecord::Base
419 if self.domains(true).empty? 419 if self.domains(true).empty?
420 'localhost' 420 'localhost'
421 else 421 else
422 - domain = self.domains.find(:first, :order => 'id').name 422 + domain = (self.domains.find_by_is_default(true) || self.domains.find(:first, :order => 'id')).name
423 email_hostname ? domain : (force_www ? ('www.' + domain) : domain) 423 email_hostname ? domain : (force_www ? ('www.' + domain) : domain)
424 end 424 end
425 end 425 end
test/unit/environment_test.rb
@@ -163,7 +163,7 @@ class EnvironmentTest < Test::Unit::TestCase @@ -163,7 +163,7 @@ class EnvironmentTest < Test::Unit::TestCase
163 163
164 should 'provide a default hostname' do 164 should 'provide a default hostname' do
165 env = Environment.create!(:name => 'test environment') 165 env = Environment.create!(:name => 'test environment')
166 - env.domains << Domain.create(:name => 'example.com') 166 + env.domains << Domain.create(:name => 'example.com', :is_default => true)
167 assert_equal 'example.com', env.default_hostname 167 assert_equal 'example.com', env.default_hostname
168 end 168 end
169 169
@@ -174,16 +174,30 @@ class EnvironmentTest &lt; Test::Unit::TestCase @@ -174,16 +174,30 @@ class EnvironmentTest &lt; Test::Unit::TestCase
174 174
175 should 'add www when told to force www' do 175 should 'add www when told to force www' do
176 env = Environment.create!(:name => 'test environment', :force_www => true) 176 env = Environment.create!(:name => 'test environment', :force_www => true)
177 - env.domains << Domain.create(:name => 'example.com') 177 + env.domains << Domain.create(:name => 'example.com', :is_default => true)
178 assert_equal 'www.example.com', env.default_hostname 178 assert_equal 'www.example.com', env.default_hostname
179 end 179 end
180 180
181 should 'not add www when requesting domain for email address' do 181 should 'not add www when requesting domain for email address' do
182 env = Environment.create!(:name => 'test environment', :force_www => true) 182 env = Environment.create!(:name => 'test environment', :force_www => true)
183 - env.domains << Domain.create(:name => 'example.com') 183 + env.domains << Domain.create(:name => 'example.com', :is_default => true)
184 assert_equal 'example.com', env.default_hostname(true) 184 assert_equal 'example.com', env.default_hostname(true)
185 end 185 end
186 186
  187 + should 'use default domain when there is more than one' do
  188 + env = Environment.create!(:name => 'test environment')
  189 + env.domains << Domain.create(:name => 'example.com', :is_default => false)
  190 + env.domains << Domain.create(:name => 'default.com', :is_default => true)
  191 + assert_equal 'default.com', env.default_hostname
  192 + end
  193 +
  194 + should 'use first domain when there is no default' do
  195 + env = Environment.create!(:name => 'test environment')
  196 + env.domains << Domain.create(:name => 'domain1.com', :is_default => false)
  197 + env.domains << Domain.create(:name => 'domain2.com', :is_default => false)
  198 + assert_equal 'domain1.com', env.default_hostname
  199 + end
  200 +
187 should 'provide default top URL' do 201 should 'provide default top URL' do
188 env = Environment.new 202 env = Environment.new
189 env.expects(:default_hostname).returns('www.lalala.net') 203 env.expects(:default_hostname).returns('www.lalala.net')