simple sprockets work
This commit is contained in:
parent
5b8a746e24
commit
e75abdda47
1
.gitignore
vendored
1
.gitignore
vendored
@ -15,3 +15,4 @@ spec/reports
|
|||||||
test/tmp
|
test/tmp
|
||||||
test/version_tmp
|
test/version_tmp
|
||||||
tmp
|
tmp
|
||||||
|
rerun.txt
|
||||||
|
2
Rakefile
2
Rakefile
@ -1,2 +1,4 @@
|
|||||||
#!/usr/bin/env rake
|
#!/usr/bin/env rake
|
||||||
require "bundler/gem_tasks"
|
require "bundler/gem_tasks"
|
||||||
|
|
||||||
|
task :default => [ :rspec, :cucumber ]
|
||||||
|
18
features/process_with_sprockets.feature
Normal file
18
features/process_with_sprockets.feature
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
Feature: Process files with Sprockets
|
||||||
|
Scenario: Simple Sprockets work
|
||||||
|
Given I have the file "dir/file.js" with the content:
|
||||||
|
"""
|
||||||
|
//= require other
|
||||||
|
a file
|
||||||
|
"""
|
||||||
|
And I have the file "dir/other.js" with the content:
|
||||||
|
"""
|
||||||
|
another file
|
||||||
|
"""
|
||||||
|
When I instantiate a Sprockets handler with the following asset directories:
|
||||||
|
| dir |
|
||||||
|
And I work with the Sprockets asset "file"
|
||||||
|
Then the handler should have the following files in order:
|
||||||
|
| dir/other.js |
|
||||||
|
| dir/file.js |
|
||||||
|
|
@ -1,3 +1,5 @@
|
|||||||
Given /^I have the file "([^"]*)" with the content:$/ do |filename, string|
|
Given /^I have the file "([^"]*)" with the content:$/ do |filename, string|
|
||||||
|
FileUtils.mkdir_p File.dirname(filename)
|
||||||
|
|
||||||
File.open(filename, 'wb') { |fh| fh.print(string) }
|
File.open(filename, 'wb') { |fh| fh.print(string) }
|
||||||
end
|
end
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
Then /^the handler should have the following files in order:$/ do |table|
|
||||||
|
table.raw.collect(&:first).each_with_index do |path, index|
|
||||||
|
@sprockets.files[index].should == Pathname(File.expand_path(path))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
When /^I work with the Sprockets asset "([^"]*)"$/ do |asset|
|
||||||
|
@sprockets.add(asset)
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
When /^I instantiate a Sprockets handler with the following asset directories:$/ do |table|
|
||||||
|
@sprockets = Flowerbox::Delivery::SprocketsHandler.new(:asset_paths => table.raw.collect(&:first))
|
||||||
|
end
|
||||||
|
|
@ -5,6 +5,12 @@ require 'fakefs/safe'
|
|||||||
|
|
||||||
World(Mocha::API)
|
World(Mocha::API)
|
||||||
|
|
||||||
|
class FakeFS::File::Stat
|
||||||
|
def file?
|
||||||
|
File.file?(@file)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
Before do
|
Before do
|
||||||
mocha_setup
|
mocha_setup
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ module Flowerbox
|
|||||||
module Delivery
|
module Delivery
|
||||||
autoload :Server, 'flowerbox/delivery/server'
|
autoload :Server, 'flowerbox/delivery/server'
|
||||||
autoload :TemplateRenderer, 'flowerbox/delivery/template_renderer'
|
autoload :TemplateRenderer, 'flowerbox/delivery/template_renderer'
|
||||||
|
autoload :SprocketsHandler, 'flowerbox/delivery/sprockets_handler'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
29
lib/flowerbox/delivery/sprockets_handler.rb
Normal file
29
lib/flowerbox/delivery/sprockets_handler.rb
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
require 'sprockets'
|
||||||
|
|
||||||
|
module Flowerbox::Delivery
|
||||||
|
class SprocketsHandler
|
||||||
|
attr_reader :files, :options
|
||||||
|
|
||||||
|
def initialize(options)
|
||||||
|
@options = options
|
||||||
|
|
||||||
|
@files = []
|
||||||
|
end
|
||||||
|
|
||||||
|
def add(asset)
|
||||||
|
@files += paths_for(asset)
|
||||||
|
end
|
||||||
|
|
||||||
|
def paths_for(asset)
|
||||||
|
environment.find_asset(asset).to_a.collect(&:pathname)
|
||||||
|
end
|
||||||
|
|
||||||
|
def environment
|
||||||
|
return @environment if @environment
|
||||||
|
|
||||||
|
@environment = Sprockets::Environment.new
|
||||||
|
options[:asset_paths].each { |path| @environment.append_path(path) }
|
||||||
|
@environment
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
48
spec/flowerbox/delivery/sprockets_handler_spec.rb
Normal file
48
spec/flowerbox/delivery/sprockets_handler_spec.rb
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Flowerbox::Delivery::SprocketsHandler do
|
||||||
|
let(:sprockets_handler) { described_class.new(options) }
|
||||||
|
let(:options) { { :asset_paths => asset_paths } }
|
||||||
|
let(:asset_paths) { [ File.expand_path('asset path') ] }
|
||||||
|
|
||||||
|
describe '#add' do
|
||||||
|
let(:asset) { 'asset' }
|
||||||
|
let(:paths) { [ 'paths' ] }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sprockets_handler.expects(:paths_for).with(asset).returns(paths)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should add the asset to the list of ones to work with' do
|
||||||
|
sprockets_handler.add(asset)
|
||||||
|
|
||||||
|
sprockets_handler.files.should == paths
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#paths_for' do
|
||||||
|
subject { sprockets_handler.paths_for(asset) }
|
||||||
|
|
||||||
|
let(:asset) { 'asset' }
|
||||||
|
let(:environment) { stub }
|
||||||
|
let(:bundled_asset) { stub(:to_a => [ processed_asset ]) }
|
||||||
|
let(:processed_asset) { stub(:pathname => path) }
|
||||||
|
|
||||||
|
let(:path) { 'path' }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sprockets_handler.stubs(:environment).returns(environment)
|
||||||
|
environment.expects(:find_asset).with(asset).returns(bundled_asset)
|
||||||
|
end
|
||||||
|
|
||||||
|
it { should == [ path ] }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#environment' do
|
||||||
|
subject { sprockets_handler.environment }
|
||||||
|
|
||||||
|
it { should be_a_kind_of(Sprockets::Environment) }
|
||||||
|
its(:paths) { should == asset_paths }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user