spec/sprockets-helpers_spec.rb in sprockets-helpers-0.3.0 vs spec/sprockets-helpers_spec.rb in sprockets-helpers-0.4.0

- old
+ new

@@ -1,200 +1,226 @@ -require "spec_helper" +require 'spec_helper' describe Sprockets::Helpers do - describe ".configure" do - it "sets global configuration" do + describe '.configure' do + it 'sets global configuration' do within_construct do |c| - c.file "assets/main.css" + c.file 'assets/main.css' - context.asset_path("main.css").should == "/assets/main.css" + context.asset_path('main.css').should == '/assets/main.css' Sprockets::Helpers.configure do |config| config.digest = true - config.prefix = "/themes" + config.prefix = '/themes' end - context.asset_path("main.css").should =~ %r(/themes/main-[0-9a-f]+.css) + context.asset_path('main.css').should =~ %r(/themes/main-[0-9a-f]+.css) Sprockets::Helpers.digest = nil Sprockets::Helpers.prefix = nil end end end - describe ".digest" do - it "globally configures digest paths" do + describe '.digest' do + it 'globally configures digest paths' do within_construct do |c| - c.file "assets/main.js" + c.file 'assets/main.js' - context.asset_path("main", :ext => "js").should == "/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) + 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 + describe '.environment' do + it 'sets a custom assets environment' do within_construct do |c| - c.file "themes/main.css" + c.file 'themes/main.css' custom_env = Sprockets::Environment.new - custom_env.append_path "themes" + custom_env.append_path 'themes' Sprockets::Helpers.environment = custom_env - context.asset_path("main.css").should == "/assets/main.css" + context.asset_path('main.css').should == '/assets/main.css' Sprockets::Helpers.environment = nil end end end - describe ".prefix" do - context "that is a string" do - it "sets a custom assets prefix" do + describe '.prefix' do + context 'that is a string' do + it 'sets a custom assets prefix' do within_construct do |c| - c.file "assets/logo.jpg" + 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" + 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 - context "that is a proc" do - it "sets a custom assets prefix" do + context 'that is a proc' do + it 'sets a custom assets prefix' do within_construct do |c| - c.file "assets/logo.jpg" + c.file 'assets/logo.jpg' Sprockets::Helpers.prefix = Proc.new { |source| "http://example.com/#{File.basename(source, '.jpg')}" } - context.asset_path("logo.jpg").should == "http://example.com/logo/logo.jpg" + context.asset_path('logo.jpg').should == 'http://example.com/logo/logo.jpg' Sprockets::Helpers.prefix = nil end end end end - describe ".public_path" do - it "sets a custom location for the public path" do + describe '.public_path' do + it 'sets a custom location for the public path' do within_construct do |c| - c.file "output/main.js" + 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+) + 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 end end - - describe "#asset_path" do - context "with URIs" do - it "returns URIs untouched" do - context.asset_path("https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js").should == - "https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" - context.asset_path("http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js").should == - "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" + + describe '#asset_path' do + context 'with URIs' do + it 'returns URIs untouched' do + context.asset_path('https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js').should == + 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js' + context.asset_path('http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js').should == + '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 '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' 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" + 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" + 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 + 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/main.js' + c.file 'public/favicon.ico' - context.asset_path("main", :ext => "js").should =~ %r(/main.js\?\d+) - context.asset_path("/favicon.ico").should =~ %r(/favicon.ico\?\d+) + context.asset_path('main', :ext => 'js').should =~ %r(/main.js\?\d+) + context.asset_path('/favicon.ico').should =~ %r(/favicon.ico\?\d+) end end end - context "with assets" do - it "returns URLs to the assets" do + 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" + 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" + 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 + it 'prepends the assets prefix' do within_construct do |c| - c.file "assets/logo.jpg" + 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" + 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 + it 'uses the digest path if configured' do within_construct do |c| - c.file "assets/main.js" + c.file 'assets/main.js' - 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('main', :ext => 'js').should == '/assets/main.js' + context.asset_path('main', :ext => 'js', :digest => true).should =~ %r(/assets/main-[0-9a-f]+.js) end end - it "returns a body parameter" do + it 'returns a body parameter' do within_construct do |c| - c.file "assets/main.js" + c.file 'assets/main.js' - context.asset_path("main", :ext => "js", :body => true).should == "/assets/main.js?body=1" + context.asset_path('main', :ext => 'js', :body => true).should == '/assets/main.js?body=1' 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 + 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" + 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' end - it "prepends the javascripts dir" do - context.javascript_path("main").should == "/javascripts/main.js" + it 'prepends the javascripts dir' do + context.javascript_path('main').should == '/javascripts/main.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" + 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' end - it "prepends the stylesheets dir" do - context.stylesheet_path("main").should == "/stylesheets/main.css" + it 'prepends the stylesheets dir' do + context.stylesheet_path('main').should == '/stylesheets/main.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" + 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 end