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 419 if self.domains(true).empty?
420 420 'localhost'
421 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 423 email_hostname ? domain : (force_www ? ('www.' + domain) : domain)
424 424 end
425 425 end
... ...
test/unit/environment_test.rb
... ... @@ -163,7 +163,7 @@ class EnvironmentTest < Test::Unit::TestCase
163 163  
164 164 should 'provide a default hostname' do
165 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 167 assert_equal 'example.com', env.default_hostname
168 168 end
169 169  
... ... @@ -174,16 +174,30 @@ class EnvironmentTest &lt; Test::Unit::TestCase
174 174  
175 175 should 'add www when told to force www' do
176 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 178 assert_equal 'www.example.com', env.default_hostname
179 179 end
180 180  
181 181 should 'not add www when requesting domain for email address' do
182 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 184 assert_equal 'example.com', env.default_hostname(true)
185 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 201 should 'provide default top URL' do
188 202 env = Environment.new
189 203 env.expects(:default_hostname).returns('www.lalala.net')
... ...