173 lines
4.6 KiB
Ruby
173 lines
4.6 KiB
Ruby
|
require 'spec_helper'
|
||
|
|
||
|
describe 'Bushido support' do
|
||
|
|
||
|
before(:each) do
|
||
|
::Bushido::App.stubs(:subdomain_available?).returns(true)
|
||
|
end
|
||
|
|
||
|
context '#loaded' do
|
||
|
|
||
|
it 'has method to enable bushido' do
|
||
|
Locomotive.respond_to?(:enable_bushido).should be_true
|
||
|
end
|
||
|
|
||
|
it 'tells bushido is disabled' do
|
||
|
Locomotive.bushido?.should be_false
|
||
|
end
|
||
|
|
||
|
it 'does not add instance methods to Site' do
|
||
|
Site.instance_methods.include?('add_bushido_domains').should be_false
|
||
|
Site.instance_methods.include?('remove_bushido_domains').should be_false
|
||
|
Site.methods.include?('create_first_one_with_bushido').should be_false
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
context '#disabled' do
|
||
|
|
||
|
before(:each) do
|
||
|
Locomotive.configure do |config|
|
||
|
config.hosting = :none
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it 'tells bushido is disabled' do
|
||
|
Locomotive.bushido?.should be_false
|
||
|
end
|
||
|
|
||
|
it 'does not add methods to Site' do
|
||
|
Site.instance_methods.include?('add_bushido_domains').should be_false
|
||
|
Site.instance_methods.include?('remove_bushido_domains').should be_false
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
context '#enabled' do
|
||
|
|
||
|
it 'tells bushido is enabled from ENV' do
|
||
|
ENV['HOSTING_PLATFORM'] = 'bushido'
|
||
|
Locomotive.config.hosting = :auto
|
||
|
Locomotive.bushido?.should be_true
|
||
|
end
|
||
|
|
||
|
it 'adds a method to automatically create a site with Bushido settings' do
|
||
|
configure_locomotive_with_bushido
|
||
|
Site.methods.include?('create_first_one_with_bushido').should be_true
|
||
|
end
|
||
|
|
||
|
it 'tells bushido is enabled when forcing it' do
|
||
|
configure_locomotive_with_bushido
|
||
|
Locomotive.bushido?.should be_true
|
||
|
end
|
||
|
|
||
|
context 'enhancing site' do
|
||
|
|
||
|
before(:each) do
|
||
|
configure_locomotive_with_bushido
|
||
|
(@site = Factory.build(:site)).stubs(:valid?).returns(true)
|
||
|
end
|
||
|
|
||
|
it 'calls add_bushido_domains after saving a site' do
|
||
|
@site.expects(:add_bushido_domains)
|
||
|
@site.save
|
||
|
end
|
||
|
|
||
|
it 'calls remove_bushido_domains after saving a site' do
|
||
|
@site.expects(:remove_bushido_domains)
|
||
|
@site.destroy
|
||
|
end
|
||
|
|
||
|
context 'adding domain' do
|
||
|
|
||
|
it 'does not add new domain if no delta' do
|
||
|
::Bushido::App.expects(:add_domain).never
|
||
|
@site.save
|
||
|
end
|
||
|
|
||
|
it 'adds a new domain if new one' do
|
||
|
@site.domains = ['www.acme.fr']
|
||
|
::Bushido::App.expects(:add_domain).with('www.acme.fr')
|
||
|
@site.save
|
||
|
Locomotive.bushido_domains.should include('www.acme.fr')
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'changing subdomain' do
|
||
|
|
||
|
it 'does not change it if not modified' do
|
||
|
::Bushido::App.expects(:set_subdomain).never
|
||
|
@site.save
|
||
|
end
|
||
|
|
||
|
it 'does not change it if Locomotive is launched with multi sites' do
|
||
|
@site.save
|
||
|
@site.subdomain = 'rope'
|
||
|
::Bushido::App.expects(:set_subdomain).never
|
||
|
@site.save
|
||
|
end
|
||
|
|
||
|
it 'changes the bushido name' do
|
||
|
configure_locomotive_with_bushido do |config|
|
||
|
config.multi_sites = false
|
||
|
end
|
||
|
@site.save
|
||
|
@site.subdomain = 'rope'
|
||
|
::Bushido::App.expects(:set_subdomain).with('rope')
|
||
|
@site.save
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
context 'removing domain' do
|
||
|
|
||
|
it 'does not remove domain if no delta' do
|
||
|
::Bushido::App.expects(:remove_domain).never
|
||
|
@site.destroy
|
||
|
end
|
||
|
|
||
|
it 'removes domains if we destroy a site' do
|
||
|
@site.stubs(:domains_without_subdomain).returns(['www.acme.com'])
|
||
|
::Bushido::App.expects(:remove_domain).with('www.acme.com')
|
||
|
@site.destroy
|
||
|
Locomotive.bushido_domains.should_not include('www.acme.com')
|
||
|
end
|
||
|
|
||
|
it 'removes domain if removed' do
|
||
|
::Bushido::App.stubs(:add_domain)
|
||
|
@site.domains = ['www.acme.fr']; @site.save
|
||
|
@site.domains = ['www.acme.com']
|
||
|
::Bushido::App.expects(:remove_domain).with('www.acme.fr')
|
||
|
@site.save
|
||
|
Locomotive.bushido_domains.should_not include('www.acme.fr')
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
def configure_locomotive_with_bushido(&block)
|
||
|
::Bushido::App.stubs(:subdomain).returns('locomotive')
|
||
|
::Bushido::App.stubs(:domains).returns(['www.acme.com', 'example.com', 'www.example.com'])
|
||
|
|
||
|
Locomotive.configure do |config|
|
||
|
config.hosting = :bushido
|
||
|
|
||
|
block.call(config) if block_given?
|
||
|
|
||
|
Locomotive.define_subdomain_and_domains_options
|
||
|
|
||
|
Object.send(:remove_const, 'Site') if Object.const_defined?('Site')
|
||
|
load 'site.rb'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
after(:all) do
|
||
|
ENV['HOSTING_PLATFORM'] = ENV['APP_TLD'] = nil
|
||
|
Locomotive.configure_for_test(true)
|
||
|
end
|
||
|
|
||
|
end
|