spec/sprockets-helpers_spec.rb in sprockets-helpers-0.6.1 vs spec/sprockets-helpers_spec.rb in sprockets-helpers-0.7.0
- old
+ new
@@ -3,11 +3,11 @@
describe Sprockets::Helpers do
describe '.configure' do
it 'sets global configuration' do
within_construct do |c|
c.file 'assets/main.css'
-
+
context.asset_path('main.css').should == '/assets/main.css'
Sprockets::Helpers.configure do |config|
config.digest = true
config.prefix = '/themes'
end
@@ -15,132 +15,132 @@
Sprockets::Helpers.digest = nil
Sprockets::Helpers.prefix = nil
end
end
end
-
+
describe '.digest' do
it 'globally configures digest paths' do
within_construct do |c|
c.file 'assets/main.js'
-
+
context.asset_path('main', :ext => 'js').should == '/assets/main.js'
Sprockets::Helpers.digest = true
context.asset_path('main', :ext => 'js').should =~ %r(/assets/main-[0-9a-f]+.js)
Sprockets::Helpers.digest = nil
end
end
end
-
+
describe '.environment' do
it 'sets a custom assets environment' do
within_construct do |c|
c.file 'themes/main.css'
-
+
custom_env = Sprockets::Environment.new
custom_env.append_path 'themes'
Sprockets::Helpers.environment = custom_env
context.asset_path('main.css').should == '/assets/main.css'
Sprockets::Helpers.environment = nil
end
end
end
-
+
describe '.asset_host' do
context 'that is a string' do
it 'prepends the asset_host' do
within_construct do |c|
c.file 'assets/main.js'
c.file 'public/logo.jpg'
-
+
Sprockets::Helpers.asset_host = 'assets.example.com'
context.asset_path('main.js').should == 'http://assets.example.com/assets/main.js'
context.asset_path('logo.jpg').should =~ %r(http://assets.example.com/logo.jpg\?\d+)
Sprockets::Helpers.asset_host = nil
end
end
-
+
context 'with a wildcard' do
it 'cycles asset_host between 0-3' do
within_construct do |c|
c.file 'assets/main.css'
c.file 'public/logo.jpg'
-
+
Sprockets::Helpers.asset_host = 'assets%d.example.com'
context.asset_path('main.css').should =~ %r(http://assets[0-3].example.com/assets/main.css)
context.asset_path('logo.jpg').should =~ %r(http://assets[0-3].example.com/logo.jpg\?\d+)
Sprockets::Helpers.asset_host = nil
end
end
end
end
-
+
context 'that is a proc' do
it 'prepends the returned asset_host' do
within_construct do |c|
c.file 'assets/main.js'
c.file 'public/logo.jpg'
-
+
Sprockets::Helpers.asset_host = Proc.new { |source| File.basename(source, File.extname(source)) + '.assets.example.com' }
context.asset_path('main.js').should == 'http://main.assets.example.com/assets/main.js'
context.asset_path('logo.jpg').should =~ %r(http://logo.assets.example.com/logo.jpg\?\d+)
Sprockets::Helpers.asset_host = nil
end
end
end
end
-
+
describe '.prefix' do
it 'sets a custom assets prefix' do
within_construct do |c|
c.file 'assets/logo.jpg'
-
+
context.asset_path('logo.jpg').should == '/assets/logo.jpg'
Sprockets::Helpers.prefix = '/images'
context.asset_path('logo.jpg').should == '/images/logo.jpg'
Sprockets::Helpers.prefix = nil
end
end
end
-
+
describe '.protocol' do
it 'sets the protocol to use with asset_hosts' do
within_construct do |c|
c.file 'assets/main.js'
c.file 'public/logo.jpg'
-
+
Sprockets::Helpers.asset_host = 'assets.example.com'
Sprockets::Helpers.protocol = 'https'
context.asset_path('main.js').should == 'https://assets.example.com/assets/main.js'
context.asset_path('logo.jpg').should =~ %r(https://assets.example.com/logo.jpg\?\d+)
Sprockets::Helpers.asset_host = nil
Sprockets::Helpers.protocol = nil
end
end
-
+
context 'that is :relative' do
it 'sets a relative protocol' do
within_construct do |c|
c.file 'assets/main.js'
c.file 'public/logo.jpg'
-
+
Sprockets::Helpers.asset_host = 'assets.example.com'
Sprockets::Helpers.protocol = :relative
context.asset_path('main.js').should == '//assets.example.com/assets/main.js'
context.asset_path('logo.jpg').should =~ %r(\A//assets.example.com/logo.jpg\?\d+)
Sprockets::Helpers.asset_host = nil
Sprockets::Helpers.protocol = nil
end
end
end
end
-
+
describe '.public_path' do
it 'sets a custom location for the public path' do
within_construct do |c|
c.file 'output/main.js'
-
+
context.asset_path('main.js').should == '/main.js'
Sprockets::Helpers.public_path = './output'
context.asset_path('main.js').should =~ %r(/main.js\?\d+)
Sprockets::Helpers.public_path = nil
end
@@ -156,170 +156,215 @@
'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'
context.asset_path('//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js').should ==
'//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'
end
end
-
+
context 'with regular files' do
it 'returns absolute paths' do
context.asset_path('/path/to/file.js').should == '/path/to/file.js'
context.asset_path('/path/to/file.jpg').should == '/path/to/file.jpg'
context.asset_path('/path/to/file.eot?#iefix').should == '/path/to/file.eot?#iefix'
end
-
+
it 'appends the extension for javascripts and stylesheets' do
context.asset_path('/path/to/file', :ext => 'js').should == '/path/to/file.js'
context.asset_path('/path/to/file', :ext => 'css').should == '/path/to/file.css'
end
-
+
it 'prepends a base dir' do
context.asset_path('main', :dir => 'stylesheets', :ext => 'css').should == '/stylesheets/main.css'
context.asset_path('main', :dir => 'javascripts', :ext => 'js').should == '/javascripts/main.js'
context.asset_path('logo.jpg', :dir => 'images').should == '/images/logo.jpg'
end
-
+
it 'appends a timestamp if the file exists in the output path' do
within_construct do |c|
c.file 'public/main.js'
c.file 'public/favicon.ico'
c.file 'public/font.eot'
c.file 'public/font.svg'
-
+
context.asset_path('main', :ext => 'js').should =~ %r(/main.js\?\d+)
context.asset_path('/favicon.ico').should =~ %r(/favicon.ico\?\d+)
context.asset_path('font.eot?#iefix').should =~ %r(/font.eot\?\d+#iefix)
context.asset_path('font.svg#FontName').should =~ %r(/font.svg\?\d+#FontName)
end
end
end
-
+
context 'with assets' do
it 'returns URLs to the assets' do
within_construct do |c|
c.file 'assets/logo.jpg'
c.file 'assets/main.js'
c.file 'assets/main.css'
-
+
context.asset_path('main', :ext => 'css').should == '/assets/main.css'
context.asset_path('main', :ext => 'js').should == '/assets/main.js'
context.asset_path('logo.jpg').should == '/assets/logo.jpg'
end
end
-
+
it 'prepends the assets prefix' do
within_construct do |c|
c.file 'assets/logo.jpg'
-
+
context.asset_path('logo.jpg').should == '/assets/logo.jpg'
context.asset_path('logo.jpg', :prefix => '/images').should == '/images/logo.jpg'
end
end
-
+
it 'uses the digest path if configured' do
within_construct do |c|
c.file 'assets/main.js'
c.file 'assets/font.eot'
c.file 'assets/font.svg'
-
+
context.asset_path('main', :ext => 'js').should == '/assets/main.js'
context.asset_path('main', :ext => 'js', :digest => true).should =~ %r(/assets/main-[0-9a-f]+.js)
context.asset_path('font.eot?#iefix', :digest => true).should =~ %r(/assets/font-[0-9a-f]+.eot\?#iefix)
context.asset_path('font.svg#FontName', :digest => true).should =~ %r(/assets/font-[0-9a-f]+.svg#FontName)
end
end
-
+
it 'returns a body parameter' do
within_construct do |c|
c.file 'assets/main.js'
c.file 'assets/font.eot'
c.file 'assets/font.svg'
-
+
context.asset_path('main', :ext => 'js', :body => true).should == '/assets/main.js?body=1'
context.asset_path('font.eot?#iefix', :body => true).should == '/assets/font.eot?body=1#iefix'
context.asset_path('font.svg#FontName', :body => true).should == '/assets/font.svg?body=1#FontName'
end
end
end
-
+
+ context 'when debuging' do
+ it 'does not use the digest path' do
+ within_construct do |c|
+ c.file 'assets/main.js'
+
+ Sprockets::Helpers.digest = true
+ context.asset_path('main.js', :debug => true).should == '/assets/main.js'
+ Sprockets::Helpers.digest = nil
+ end
+ end
+
+ it 'does not prepend the asset host' do
+ within_construct do |c|
+ c.file 'assets/main.js'
+
+ Sprockets::Helpers.asset_host = 'assets.example.com'
+ context.asset_path('main.js', :debug => true).should == '/assets/main.js'
+ Sprockets::Helpers.asset_host = nil
+ end
+ end
+ end
+
if defined?(::Sprockets::Manifest)
context 'with a manifest' do
it 'reads path from a manifest file' do
within_construct do |c|
asset_file = c.file 'assets/application.js'
manifest_file = c.join 'manifest.json'
-
+
manifest = Sprockets::Manifest.new(env, manifest_file)
manifest.compile 'application.js'
-
+
Sprockets::Helpers.configure do |config|
config.digest = true
config.prefix = '/assets'
config.manifest = Sprockets::Manifest.new(env, manifest_file)
end
-
+
asset_file.delete
context.asset_path('application.js').should =~ %r(/assets/application-[0-9a-f]+.js)
-
+
Sprockets::Helpers.digest = nil
Sprockets::Helpers.prefix = nil
end
end
+
+ context 'when debuging' do
+ it 'does not read the path from the manifest file' do
+ within_construct do |c|
+ asset_file = c.file 'assets/application.js'
+ manifest_file = c.join 'manifest.json'
+
+ manifest = Sprockets::Manifest.new(env, manifest_file)
+ manifest.compile 'application.js'
+
+ Sprockets::Helpers.configure do |config|
+ config.digest = true
+ config.prefix = '/assets'
+ config.manifest = Sprockets::Manifest.new(env, manifest_file)
+ end
+
+ context.asset_path('application.js', :debug => true).should == '/assets/application.js'
+
+ Sprockets::Helpers.digest = nil
+ Sprockets::Helpers.prefix = nil
+ end
+ end
+ end
end
end
end
-
+
describe '#javascript_path' do
context 'with regular files' do
it 'appends the js extension' do
context.javascript_path('/path/to/file').should == '/path/to/file.js'
context.javascript_path('/path/to/file.min').should == '/path/to/file.min.js'
end
-
+
it 'prepends the javascripts dir' do
context.javascript_path('main').should == '/javascripts/main.js'
context.javascript_path('main.min').should == '/javascripts/main.min.js'
end
end
end
-
+
describe '#stylesheet_path' do
context 'with regular files' do
it 'appends the css extension' do
context.stylesheet_path('/path/to/file').should == '/path/to/file.css'
context.stylesheet_path('/path/to/file.min').should == '/path/to/file.min.css'
end
-
+
it 'prepends the stylesheets dir' do
context.stylesheet_path('main').should == '/stylesheets/main.css'
context.stylesheet_path('main.min').should == '/stylesheets/main.min.css'
end
end
end
-
+
describe '#image_path' do
context 'with regular files' do
it 'prepends the images dir' do
context.image_path('logo.jpg').should == '/images/logo.jpg'
end
end
end
-
+
describe '#font_path' do
context 'with regular files' do
it 'prepends the fonts dir' do
context.font_path('font.ttf').should == '/fonts/font.ttf'
end
end
end
-
+
describe '#video_path' do
context 'with regular files' do
it 'prepends the videos dir' do
context.video_path('video.mp4').should == '/videos/video.mp4'
end
end
end
-
+
describe '#audio_path' do
context 'with regular files' do
it 'prepends the audios dir' do
context.audio_path('audio.mp3').should == '/audios/audio.mp3'
end