active_assets 0.1.0 → 0.2.0.rc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/README.md +168 -0
- data/Rakefile +6 -0
- data/active_assets.gemspec +11 -6
- data/config.ru +2 -0
- data/lib/active_assets.rb +1 -0
- data/lib/active_assets/active_expansions/railtie.rb +10 -9
- data/lib/active_assets/active_sprites.rb +13 -0
- data/lib/active_assets/active_sprites/railtie.rb +29 -0
- data/lib/active_assets/active_sprites/runner.rb +101 -0
- data/lib/active_assets/active_sprites/sprite.rb +89 -0
- data/lib/active_assets/active_sprites/sprite_piece.rb +63 -0
- data/lib/active_assets/active_sprites/sprite_stylesheet.rb +24 -0
- data/lib/active_assets/active_sprites/sprites.rb +51 -0
- data/lib/active_assets/railtie.rb +2 -0
- data/lib/rails/active_assets.rb +4 -5
- data/lib/rails/active_expansions.rb +11 -0
- data/lib/rails/active_sprites.rb +11 -0
- data/lib/tasks/{cache.rake → active_expansions/cache.rake} +0 -0
- data/lib/tasks/active_sprites/sprites.rake +4 -0
- data/script/console +1 -0
- data/script/server +1 -0
- data/script/test_server +1 -0
- data/test/active_assets/active_expansions/asset_test.rb +18 -1
- data/test/active_assets/active_expansions/expansions_test.rb +16 -2
- data/test/active_assets/active_sprites/runner_test.rb +43 -0
- data/test/active_assets/active_sprites/sprite_piece_test.rb +65 -0
- data/test/active_assets/active_sprites/sprite_test.rb +53 -0
- data/test/active_assets/active_sprites/sprites_test.rb +35 -0
- data/test/fixtures/rails_root/config/application.rb +1 -0
- data/test/fixtures/rails_root/config/environment.rb +2 -0
- data/test/fixtures/rails_root/config/sprites.rb +14 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite3/1.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite3/2.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Argentina.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Australia.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Austria.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Belgium.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Brazil.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Cameroon.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Canada.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Chile.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/China.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Denmark.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Finland.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/France.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Germany.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Greece.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Hong Kong.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Hungary.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Iceland.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/India.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Indonesia.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Ireland.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Israel.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Italy.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Japan.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Malaysia.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Mexico.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/New Zealand.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Norway.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Pakistan.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Palestine.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Peru.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Poland.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Portugal.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Puerto Rico.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Romania.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Russia.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Saudi Arabia.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Singapore.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/South Africa.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/South Korea.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Spain.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Sweden.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Switzerland.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Thailand.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/The Netherlands.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Turkey.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/UK.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/USA.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Ukraine.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Uruguay.gif +0 -0
- data/test/fixtures/rails_root/public/images/sprite_images/sprite4/Venezuela.gif +0 -0
- data/test/fixtures/sinatra_root/active_assets_test_app.rb +12 -0
- data/test/fixtures/sinatra_root/views/layout.erb +7 -0
- data/test/fixtures/sinatra_root/views/sprite.erb +3 -0
- data/test/helper.rb +50 -0
- data/test/support/rails_helper.rb +10 -1
- data/vendor/bin/ng +0 -0
- data/vendor/bin/ng.exe +0 -0
- data/vendor/jruby-complete-1.5.6.jar +0 -0
- metadata +230 -21
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module ActiveAssets
|
|
2
|
+
module ActiveSprites
|
|
3
|
+
class SpritePiece
|
|
4
|
+
class ValidationError < StandardError
|
|
5
|
+
attr_reader :sprite_piece, :missing_fields
|
|
6
|
+
def initialize(sprite_piece, missing_fields)
|
|
7
|
+
@sprite, @missing_fields = sprite_piece, missing_fields
|
|
8
|
+
super("#{"Your sprite piece could not be created. " if @sprite_piece.nil?} Your sprite piece is invalid. It is missing the following fields: #{@missing_fields.join(', ')}")
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class Mapping
|
|
13
|
+
attr_reader :path, :css_selector
|
|
14
|
+
|
|
15
|
+
def initialize(path, css_selector)
|
|
16
|
+
raise ValidationError.new(nil, [:path]) if path.blank?
|
|
17
|
+
@path, @css_selector = path, css_selector
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
GEOMETRY_PROPS = [:x, :y, :width, :height]
|
|
22
|
+
attr_reader(*GEOMETRY_PROPS)
|
|
23
|
+
attr_accessor :details
|
|
24
|
+
delegate :path, :css_selector, :to => :mapping
|
|
25
|
+
|
|
26
|
+
def configure(mapping, options = {}, &blk)
|
|
27
|
+
@mapping = mapping
|
|
28
|
+
options.each {|k,v| send(k, v)}
|
|
29
|
+
instance_eval(&blk) if block_given?
|
|
30
|
+
self
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def to_s
|
|
34
|
+
return '' if details.nil?
|
|
35
|
+
<<-CSS
|
|
36
|
+
#{css_selector}
|
|
37
|
+
{
|
|
38
|
+
width:#{width || details.width};
|
|
39
|
+
height:#{height || details.height};
|
|
40
|
+
background:url('#{details.sprite_path}') no-repeat #{x || details.x} #{y || details.y};
|
|
41
|
+
display:block;
|
|
42
|
+
}
|
|
43
|
+
CSS
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
GEOMETRY_PROPS.each do |prop|
|
|
47
|
+
eval <<-METH
|
|
48
|
+
def #{prop}(*args)
|
|
49
|
+
#{prop}, *_ = args
|
|
50
|
+
@#{prop} = #{prop} if #{prop}
|
|
51
|
+
@#{prop}
|
|
52
|
+
end
|
|
53
|
+
METH
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
def mapping
|
|
58
|
+
@mapping
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
module ActiveAssets
|
|
4
|
+
module ActiveSprites
|
|
5
|
+
class SpriteStylesheet
|
|
6
|
+
def initialize(sprite_path, sprite_pieces)
|
|
7
|
+
@sprite_path, @sprite_pieces = sprite_path, sprite_pieces
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def write(path)
|
|
11
|
+
to_s!
|
|
12
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
13
|
+
File.open(path, 'w+') do |f|
|
|
14
|
+
f.write @as_string
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
def to_s!
|
|
20
|
+
@as_string ||= @sprite_pieces.map(&:to_s).join("\n")
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module ActiveAssets
|
|
2
|
+
module ActiveSprites
|
|
3
|
+
class Sprites
|
|
4
|
+
def initialize
|
|
5
|
+
@sprites = Hash.new do |sprites, name|
|
|
6
|
+
sprites[name] = Sprite.new
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def describe(&blk)
|
|
11
|
+
instance_eval(&blk) if block_given?
|
|
12
|
+
self
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def all
|
|
16
|
+
@sprites.values
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def sprite(*args, &blk)
|
|
20
|
+
sprite_path, stylesheet_path, options, as =
|
|
21
|
+
case args.first
|
|
22
|
+
when Hash
|
|
23
|
+
options = args.shift
|
|
24
|
+
args = *options.find {|k,v| k.is_a?(String) }
|
|
25
|
+
(args << options).tap {|a| a.last.delete(a.first)}
|
|
26
|
+
when Symbol
|
|
27
|
+
# todo make default paths configurable
|
|
28
|
+
["sprites/#{args.first.to_s}.png", "sprites/#{args.first.to_s}.css", args.extract_options!, args.first]
|
|
29
|
+
when String
|
|
30
|
+
path = args.first
|
|
31
|
+
[path, "#{File.dirname(path)}/#{File.basename(path, File.extname(path))}.css", args.extract_options!]
|
|
32
|
+
end
|
|
33
|
+
options.reverse_merge!(:as => as)
|
|
34
|
+
@sprites[options[:as] || sprite_path].configure(sprite_path, stylesheet_path, options, &blk)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def [](name)
|
|
38
|
+
return nil unless @sprites.has_key?(name)
|
|
39
|
+
@sprites[name]
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def clear
|
|
43
|
+
@sprites.clear
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def generate!
|
|
47
|
+
Runner.new(@sprites).generate!
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
data/lib/rails/active_assets.rb
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
require 'rails/active_expansions'
|
|
2
|
+
require 'rails/active_sprites'
|
|
1
3
|
require 'active_assets'
|
|
2
4
|
|
|
3
5
|
module Rails
|
|
4
6
|
module ActiveAssets
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@expansions.instance_eval(&blk) if block_given?
|
|
8
|
-
@expansions
|
|
9
|
-
end
|
|
7
|
+
include ActiveExpansions
|
|
8
|
+
include ActiveSprites
|
|
10
9
|
end
|
|
11
10
|
end
|
|
File without changes
|
data/script/console
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
irb -I./test/fixtures/rails_root -rrubygems -rbundler/setup -rconfig/environment
|
data/script/server
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rackup -I./test/fixtures/sinatra_root -p 3000 -s thin
|
data/script/test_server
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
java -Xms32m -Xmx1024m -cp vendor/jruby-complete-1.5.6.jar com.martiansoftware.nailgun.NGServer
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'helper'
|
|
2
|
+
require 'securerandom'
|
|
2
3
|
|
|
3
4
|
class AssetTest < Test::Unit::TestCase
|
|
4
5
|
def setup
|
|
@@ -35,6 +36,22 @@ class AssetTest < Test::Unit::TestCase
|
|
|
35
36
|
|
|
36
37
|
def test_valid_bang
|
|
37
38
|
asset = ActiveAssets::ActiveExpansions::Asset.new(nil, :js, :defaults, [:development, :test], "not false")
|
|
38
|
-
assert_raise
|
|
39
|
+
assert_raise(ActiveAssets::ActiveExpansions::Asset::ValidationError) { asset.valid! }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_invalid_type
|
|
43
|
+
asset = ActiveAssets::ActiveExpansions::Asset.new('/path/to/asset', :pdf, :defaults, [:development, :test], false)
|
|
44
|
+
assert_raises(ActiveAssets::ActiveExpansions::Asset::InvalidAssetType) { asset.valid! }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
ActiveAssets::ActiveExpansions::Asset.members.each do |member|
|
|
48
|
+
eval <<-EOS
|
|
49
|
+
def test_#{member}_equals
|
|
50
|
+
val = SecureRandom.hex
|
|
51
|
+
asset = ActiveAssets::ActiveExpansions::Asset.new('/path/to/asset', :js, :defaults, [:development, :test], false)
|
|
52
|
+
asset.#{member}= val
|
|
53
|
+
assert_equal val, asset.#{member}
|
|
54
|
+
end
|
|
55
|
+
EOS
|
|
39
56
|
end
|
|
40
57
|
end
|
|
@@ -2,12 +2,12 @@ require 'helper'
|
|
|
2
2
|
|
|
3
3
|
class ExpansionsTest < Test::Unit::TestCase
|
|
4
4
|
def setup
|
|
5
|
-
|
|
5
|
+
initialize_application_or_load_expansions!
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def teardown
|
|
9
9
|
delete_cached_assets!
|
|
10
|
-
|
|
10
|
+
tear_down_assets
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def test_new
|
|
@@ -145,4 +145,18 @@ class ExpansionsTest < Test::Unit::TestCase
|
|
|
145
145
|
end
|
|
146
146
|
end
|
|
147
147
|
|
|
148
|
+
def test_expansion_1
|
|
149
|
+
Rails.application.expansions do
|
|
150
|
+
expansion :foo do
|
|
151
|
+
`vendor/jquery.mousewheel.js`
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
expansion :foo do
|
|
155
|
+
`bar/bas.js`
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
assert_equal %w{vendor/jquery.mousewheel.js bar/bas.js}, Rails.application.expansions.javascripts[:foo].assets.map(&:path)
|
|
160
|
+
end
|
|
161
|
+
|
|
148
162
|
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
class RunnerTest < Test::Unit::TestCase
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
initialize_application_or_load_sprites!
|
|
8
|
+
|
|
9
|
+
assert_false Rails.application.sprites.all.empty?
|
|
10
|
+
|
|
11
|
+
assert_nothing_raised do
|
|
12
|
+
Rails.application.sprites.generate!
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def teardown
|
|
17
|
+
FileUtils.rm_rf(Rails.root.join('public/images/sprites'))
|
|
18
|
+
FileUtils.rm_rf(Rails.root.join('public/stylesheets/sprites'))
|
|
19
|
+
|
|
20
|
+
tear_down_assets
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def test_generate
|
|
25
|
+
visit "/sprite?sprite_path=/images/#{Rails.application.sprites['sprites/4.png'].path}"
|
|
26
|
+
assert_equal 2400, page.find('#sprite').native.height
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_generate_2
|
|
30
|
+
visit "/sprite?sprite_path=/images/#{Rails.application.sprites['sprites/3.png'].path}"
|
|
31
|
+
assert_equal 96, page.find('#sprite').native.height
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_sprite_exists
|
|
35
|
+
assert File.exists?(Rails.root.join('public/images/sprites/3.png'))
|
|
36
|
+
assert File.exists?(Rails.root.join('public/images/sprites/4.png'))
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_stylesheets_exists
|
|
40
|
+
assert File.exists?(Rails.root.join('public/stylesheets/sprites/3.css'))
|
|
41
|
+
assert File.exists?(Rails.root.join('public/stylesheets/sprites/4.css'))
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class SpritePiecetest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
initialize_application_or_load_sprites!
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def teardown
|
|
9
|
+
tear_down_assets
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_configure_with_block
|
|
13
|
+
Rails.application.sprites do
|
|
14
|
+
sprite :sprite1 do
|
|
15
|
+
_"sprite_images/sprite1/1.png" => ".klass_1" do
|
|
16
|
+
x 'right'
|
|
17
|
+
y 'top'
|
|
18
|
+
width '320px'
|
|
19
|
+
height '240px'
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
assert_equal "240px", sprites[:sprite1]["sprite_images/sprite1/1.png"].height
|
|
25
|
+
assert_equal "320px", sprites[:sprite1]["sprite_images/sprite1/1.png"].width
|
|
26
|
+
assert_equal "top", sprites[:sprite1]["sprite_images/sprite1/1.png"].y
|
|
27
|
+
assert_equal 'right', sprites[:sprite1]["sprite_images/sprite1/1.png"].x
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_configure_with_options
|
|
31
|
+
Rails.application.sprites do
|
|
32
|
+
sprite :sprite2 do
|
|
33
|
+
_"sprite_images/sprite1/1.png" => ".klass_1", :x => 'right', :y => 'top', :width => '320px', :height => '240px'
|
|
34
|
+
_"sprite_images/sprite1/2.png" => ".klass_2"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
assert_equal '.klass_2', sprites[:sprite2]["sprite_images/sprite1/2.png"].css_selector
|
|
39
|
+
assert_equal '.klass_1', sprites[:sprite2]["sprite_images/sprite1/1.png"].css_selector
|
|
40
|
+
assert_equal "240px", sprites[:sprite2]["sprite_images/sprite1/1.png"].height
|
|
41
|
+
assert_equal "320px", sprites[:sprite2]["sprite_images/sprite1/1.png"].width
|
|
42
|
+
assert_equal "top", sprites[:sprite2]["sprite_images/sprite1/1.png"].y
|
|
43
|
+
assert_equal 'right', sprites[:sprite2]["sprite_images/sprite1/1.png"].x
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_raises_validation_error_when_path_is_blank
|
|
47
|
+
assert_raises ActiveAssets::ActiveSprites::SpritePiece::ValidationError do
|
|
48
|
+
Rails.application.sprites do
|
|
49
|
+
sprite :sprite2 do
|
|
50
|
+
_"" => ".klass_1"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_ordered
|
|
57
|
+
paths = []
|
|
58
|
+
Dir[Rails.root.join('public/images/sprite_images/sprite4/*.{png,gif,jpg}')].each do |path|
|
|
59
|
+
image_path = path.match(%r{^.*/public/images/(.*)$})[1]
|
|
60
|
+
paths << image_path
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
assert_equal paths, Rails.application.sprites['sprites/4.png'].sprite_pieces.map(&:path)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class SpriteTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
initialize_application_or_load_sprites!
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def teardown
|
|
9
|
+
tear_down_assets
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def sprites
|
|
13
|
+
Rails.application.sprites
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_underscore_method
|
|
17
|
+
assert_nothing_raised do
|
|
18
|
+
Rails.application.sprites do
|
|
19
|
+
sprite :foo do
|
|
20
|
+
_"sprite_images/foo/1.png" => '.my_klass'
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_underscore_method_actually_adds_the_sp
|
|
27
|
+
Rails.application.sprites do
|
|
28
|
+
sprite :bar, :orientation => :horizontal do
|
|
29
|
+
_"sprite_images/foo/1.png" => '.my_klass'
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
path = "sprite_images/foo/1.png"
|
|
34
|
+
assert sprites[:bar].has_sprite_piece_with_path?(path)
|
|
35
|
+
assert_equal '.my_klass', sprites[:bar][path].css_selector
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_sprite_validation
|
|
39
|
+
assert_raises ActiveAssets::ActiveSprites::Sprite::ValidationError do
|
|
40
|
+
Rails.application.sprites do
|
|
41
|
+
sprite ''
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_raises_invalid_orientation
|
|
47
|
+
assert_raises ActiveAssets::ActiveSprites::Sprite::OrientationInvalid do
|
|
48
|
+
Rails.application.sprites do
|
|
49
|
+
sprite :bar, :orientation => :bad
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class SpritesTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
initialize_application_or_load_sprites!
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def teardown
|
|
9
|
+
tear_down_assets
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_describe
|
|
13
|
+
assert Rails.application.sprites.kind_of?(ActiveAssets::ActiveSprites::Sprites)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_all
|
|
17
|
+
assert Rails.application.sprites.all.kind_of?(Array)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_sprite
|
|
21
|
+
assert_nothing_raised do
|
|
22
|
+
Rails.application.sprites do
|
|
23
|
+
sprite :foo
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_sprite_with_mapping
|
|
29
|
+
Rails.application.sprites do
|
|
30
|
+
sprite 'sprites/global.png' => 'sprites/global.css'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
assert_equal 'sprites/global.css', Rails.application.sprites['sprites/global.png'].stylesheet_path
|
|
34
|
+
end
|
|
35
|
+
end
|