Clone
require File.expand_path('../../test_helper', File.dirname(__FILE__))
class CmsSiteTest < ActiveSupport::TestCase
def test_fixtures_validity
Cms::Site.all.each do |site|
assert site.valid?, site.errors.full_messages.to_s
end
end
def test_validation
site = Cms::Site.new
assert site.invalid?
assert_has_errors_on site, [:identifier, :label, :hostname]
site = Cms::Site.new(:identifier => 'test', :hostname => 'http://site.host')
assert site.invalid?
assert_has_errors_on site, :hostname
site = Cms::Site.new(:identifier => cms_sites(:default).identifier, :hostname => 'site.host')
assert site.invalid?
assert_has_errors_on site, :identifier
site = Cms::Site.new(:identifier => 'test', :hostname => 'site.host')
assert site.valid?, site.errors.to_yaml
end
def test_validation_path_uniqueness
s1 = cms_sites(:default)
s2 = Cms::Site.new(
:identifier => 'test',
:hostname => s1.hostname,
:path => s1.path
)
assert s2.invalid?
assert_has_errors_on s2, :hostname
s2 = Cms::Site.new(
:identifier => 'test',
:hostname => s1.hostname,
:path => '/en'
)
assert s2.valid?
end
def test_identifier_assignment
site = Cms::Site.new(:hostname => 'my-site.host')
assert site.valid?
assert_equal 'my_site_host', site.identifier
end
def test_label_assignment
site = Cms::Site.new(:identifier => 'test', :hostname => 'my-site.host')
assert site.valid?
assert_equal 'Test', site.label
end
def test_clean_path
site = Cms::Site.create!(:identifier => 'test_a', :hostname => 'test.host', :path => '/en///test//')
assert_equal '/en/test', site.path
site = Cms::Site.create!(:identifier => 'test_b', :hostname => 'my-site.host', :path => '/')
assert_equal '', site.path
end
def test_creation
assert_difference 'Cms::Site.count' do
Cms::Site.create!(
:identifier => 'test',
:label => 'Test Site',
:hostname => 'test.test'
)
end
end
def test_cascading_destroy
assert_difference 'Cms::Site.count', -1 do
assert_difference 'Cms::Layout.count', -3 do
assert_difference 'Cms::Page.count', -2 do
assert_difference 'Cms::Snippet.count', -1 do
assert_difference 'Cms::Category.count', -1 do
cms_sites(:default).destroy
end
end
end
end
end
end
def test_scope_mirrored
site = cms_sites(:default)
assert !site.is_mirrored
assert_equal 0, Cms::Site.mirrored.count
site.update_attribute(:is_mirrored, true)
assert_equal 1, Cms::Site.mirrored.count
end
def test_find_site
site_a = cms_sites(:default)
assert_equal 'test.host', site_a.hostname
assert_equal nil, site_a.path
assert_equal site_a, Cms::Site.find_site('test.host')
assert_equal site_a, Cms::Site.find_site('test.host', '/some/path')
assert_equal site_a, Cms::Site.find_site('test99.host', '/some/path')
site_b = Cms::Site.create!(:identifier => 'test_a', :hostname => 'test2.host', :path => 'en')
site_c = Cms::Site.create!(:identifier => 'test_b', :hostname => 'test2.host', :path => 'fr')
assert_equal site_a, Cms::Site.find_site('test.host')
assert_equal site_a, Cms::Site.find_site('test.host', '/some/path')
assert_equal nil, Cms::Site.find_site('test99.host', '/some/path')
assert_equal nil, Cms::Site.find_site('test2.host')
assert_equal nil, Cms::Site.find_site('test2.host', '/some/path')
assert_equal site_b, Cms::Site.find_site('test2.host', '/en')
assert_equal site_b, Cms::Site.find_site('test2.host', '/en/some/path')
assert_equal nil, Cms::Site.find_site('test2.host', '/english/some/path')
assert_equal site_c, Cms::Site.find_site('test2.host', '/fr')
assert_equal site_c, Cms::Site.find_site('test2.host', '/fr/some/path')
end
def test_find_site_with_site_alias
site_a = cms_sites(:default)
site_b = Cms::Site.create!(:identifier => 'site_b', :hostname => 'test2.host')
ComfortableMexicanSofa.config.hostname_aliases = {
'test.host' => 'alias_a.host',
'test2.host' => %w(alias_b.host alias_c.host)
}
assert_equal site_a, Cms::Site.find_site('alias_a.host')
assert_equal site_b, Cms::Site.find_site('alias_b.host')
assert_equal site_b, Cms::Site.find_site('alias_c.host')
end
end