assetify 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,70 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Asset do
4
-
5
- it "should spawn!" do
6
- as = Asset.new :js, "cool", "http://cool.js"
7
- as.should be_instance_of Asset
8
- end
9
-
10
- describe "Instantiated" do
11
-
12
- let (:as) { Asset.new :js, "sweet", "http://candy.js" }
13
-
14
- it "should have filename" do
15
- as.filename.should eql("sweet.js")
16
- end
17
-
18
- it "should have fullpath" do
19
- as.fullpath.should eql("vendor/assets/javascripts/sweet.js")
20
- end
21
-
22
- it "should detect version" do
23
- as.instance_variable_set "@data", "/* foo v 1.5.6 */"
24
- as.ver[0].should eql("1.5.6")
25
- end
26
-
27
- it "should print version" do
28
- as.instance_variable_set "@data", "\u001F\x8B\b\u0000\xF5\u0000"
29
- as.print_version.should eql("v537c8396f74 ")
30
- end
31
-
32
- end
33
-
34
- describe "Namespaced" do
35
-
36
- let (:as) { Asset.new :js, "sweet", "http://candy.js", nil, :ns => "spacemonkey" }
37
-
38
- it "should have name" do
39
- as.ns.should eql("spacemonkey")
40
- end
41
-
42
- end
43
-
44
- describe "On Package" do
45
-
46
- let (:as) { Asset.new :js, "sweet", "http://candy.js", nil, :pkg => "firefly" }
47
-
48
- it "should have name" do
49
- as.pkg.should eql("firefly")
50
- end
51
-
52
- end
53
-
54
- describe "Class methods" do
55
-
56
- it "should have all assets on hand" do
57
- Asset.all.should have(2).assets
58
- end
59
-
60
- it "should find assets" do
61
- Asset.filter("color").should have(1).assets
62
- end
63
-
64
- it "should find assets by pkg" do
65
- Asset.filter("mobile").should have(1).assets
66
- end
67
-
68
- end
69
-
70
- end
@@ -1,181 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe DSL do
4
-
5
- it "should parse js nicely" do
6
- a = Assetify::DSL.parse("js 'foo', 'foolink'")[0]
7
- a.should be_an Asset
8
- a.fullpath.should eql("vendor/assets/javascripts/foo.js")
9
- end
10
-
11
- it "should parse css nicely" do
12
- a = Assetify::DSL.parse("css 'foo', 'foolink'")[0]
13
- a.should be_an Asset
14
- a.fullpath.should eql("vendor/assets/stylesheets/foo.css")
15
- end
16
-
17
- it "should parse img nicely (gif)" do
18
- a = Assetify::DSL.parse("img 'foo.gif', 'foolink'")[0]
19
- a.should be_an Asset
20
- a.fullpath.should eql("vendor/assets/images/foo.gif")
21
- end
22
-
23
- it "should parse img nicely from link (gif)" do
24
- a = Assetify::DSL.parse("img 'foo', 'foolink.gif'")[0]
25
- a.should be_an Asset
26
- a.fullpath.should eql("vendor/assets/images/foo.gif")
27
- end
28
-
29
- it "should parse img nicely from link (png)" do
30
- a = Assetify::DSL.parse("img 'foo', 'foolink-ra.png'")[0]
31
- a.should be_an Asset
32
- a.fullpath.should eql("vendor/assets/images/foo.png")
33
- end
34
-
35
- it "should parse js with global 'a' keyword" do
36
- a = Assetify::DSL.parse("a 'foo', 'foolink.js'")[0]
37
- a.should be_an Asset
38
- a.fullpath.should eql("vendor/assets/javascripts/foo.js")
39
- end
40
-
41
- it "should parse js with global 'asset' alias too" do
42
- a = Assetify::DSL.parse("asset 'foo', 'foolink.js'")[0]
43
- a.should be_an Asset
44
- a.fullpath.should eql("vendor/assets/javascripts/foo.js")
45
- end
46
-
47
- it "should parse css with global 'a' keyword" do
48
- a = Assetify::DSL.parse("a 'foo', 'http://w.foolink/c/?foo.css'")[0]
49
- a.should be_an Asset
50
- a.fullpath.should eql("vendor/assets/stylesheets/foo.css")
51
- end
52
-
53
- it "should parse img with global 'a' keyword" do
54
- a = Assetify::DSL.parse("a 'foo.gif', 'foolink.gif'")[0]
55
- a.should be_an Asset
56
- a.fullpath.should eql("vendor/assets/images/foo.gif")
57
- end
58
-
59
- it "should accept a especific location with :to" do
60
- Dir.should_receive(:pwd).and_return("/home/user/git/assetify")
61
- a = Assetify::DSL.parse("rb 'foo', 'foolink', :to => 'spec/rock'")[0]
62
- a.should be_an Asset
63
- a.fullpath.should eql("/home/user/git/assetify/spec/rock/foo.rb")
64
- end
65
-
66
- it "should not fail with symbols" do
67
- a = Assetify::DSL.parse("js :jnice, 'foolink'")[0]
68
- a.should be_an Asset
69
- a.name.should eql("jnice")
70
- end
71
-
72
- describe "Templates and Pathfixes" do
73
-
74
- it "should parse css to erb nicely" do
75
- a = Assetify::DSL.parse("css 'foo', 'foolink', :as => :erb")[0]
76
- a.should be_an Asset
77
- a.fullpath.should eql("vendor/assets/stylesheets/foo.css.erb")
78
- end
79
-
80
- it "should parse css to sass nicely" do
81
- a = Assetify::DSL.parse("css 'foo', 'foolink', :as => :sass")[0]
82
- a.should be_an Asset
83
- a.fullpath.should eql("vendor/assets/stylesheets/foo.css.sass")
84
- end
85
-
86
- end
87
-
88
- describe "Group Assets" do
89
-
90
- it "should group and use a namespace" do
91
- a = Assetify::DSL.parse "group 'common' do; js 'foo', 'foolink'; end"
92
- a[0].should be_an Asset
93
- a[0].fullpath.should eql("vendor/assets/javascripts/common/foo.js")
94
- end
95
-
96
- it "should group and use a namespace 2" do
97
- a = Assetify::DSL.parse "group 'common' do; js 'foo', 'foolink'; js 'rock', 'rocklink'; end"
98
- a[0].should be_an Asset
99
- a[0].fullpath.should eql("vendor/assets/javascripts/common/foo.js")
100
- end
101
-
102
- it "should go back to root" do
103
- a = Assetify::DSL.parse "group 'common' do; js 'foo', 'foolink'; end; js 'rock', 'rocklink'"
104
- a[1].should be_an Asset
105
- a[1].fullpath.should eql("vendor/assets/javascripts/rock.js")
106
- end
107
-
108
- it "should work with nested namespaces" do
109
- a = Assetify::DSL.parse "group 'common' do; group 'nice' do; js 'foo', 'foolink'; end; end"
110
- a[0].should be_an Asset
111
- a[0].fullpath.should eql("vendor/assets/javascripts/common/nice/foo.js")
112
- end
113
-
114
- end
115
-
116
- describe "Pkg Assets" do
117
-
118
- it "should group and use a namespace" do
119
- a = Assetify::DSL.parse "pkg 'fancy', 'http://fancy.zip' do; js 'foo', 'foolink'; end"
120
- a[0].should be_an Asset
121
- a[0].fullpath.should eql("vendor/assets/javascripts/fancy/foo.js")
122
- end
123
-
124
- it "should use name as namespace too" do
125
- a = Assetify::DSL.parse "pkg 'complex', '/tmp/complex/complex.tgz' do; dir 'images/*'; end"
126
- a.should have(3).assets
127
- a[0].fullpath.should eql("vendor/assets/images/complex/two.png")
128
- end
129
-
130
- it "should accept shallow too" do
131
- a = Assetify::DSL.parse "pkg 'fancy', 'http://fancy.zip', :shallow => true do; js 'foo', 'foolink'; end"
132
- a[0].should be_an Asset
133
- a[0].fullpath.should eql("vendor/assets/javascripts/foo.js")
134
- end
135
-
136
- it "should fetch inside archive" do
137
- a = Assetify::DSL.parse "pkg 'fancy', 'http://fancy.zip' do; js 'foo', 'foolink'; end"
138
- a[0].should be_an Asset
139
- a[0].fullpath.should eql("vendor/assets/javascripts/fancy/foo.js")
140
- end
141
-
142
- it "should unpack to vendor if no block given" do
143
- Pkg.should_receive(:new).with("fancy", "http://fancy.zip").and_return(mp = mock(Pkg))
144
- mp.should_receive :unpack_all
145
- a = Assetify::DSL.parse "pkg 'fancy', 'http://fancy.zip'"
146
- end
147
- end
148
-
149
- describe "Directories" do
150
-
151
- it "should read from pkg the regex" do
152
- Pkg.should_receive(:new).with("fancy", "http://fancy.zip").and_return(mp = mock(Pkg))
153
- mp.should_receive(:get).with("images/").and_return([])
154
- a = Assetify::DSL.parse "pkg 'fancy', 'http://fancy.zip' do; dir 'images/', :to => 'images/complex/'; end"
155
- end
156
-
157
- it "should read from pkg the regex" do
158
- Dir.should_receive(:pwd).and_return("/home/user/git/assetify")
159
-
160
- as = Assetify::DSL.parse "pkg 'complex', 'http://complex.tgz' do; dir 'images/', :to => 'images/complex/'; end"
161
- as[0].name.should eql("two")
162
- as[0].ext.should eql("png")
163
- as[0].fullpath.should eql("/home/user/git/assetify/images/complex/two.png")
164
- end
165
-
166
- end
167
-
168
- describe "Paths" do
169
-
170
- it "should change js path" do
171
- Assetify::DSL.parse "javascripts 'other/foo'"
172
- Opt[:javascripts].should eql('other/foo')
173
- end
174
-
175
- it "should change css path" do
176
- Assetify::DSL.parse "stylesheets 'other/foo'"
177
- Opt[:javascripts].should eql('other/foo')
178
- end
179
- end
180
-
181
- end
@@ -1,40 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Helpers do
4
- BINDATA = File.read(File.join(File.dirname(__FILE__), "..", "fixtures", "complex.tgz"))
5
-
6
- include Helpers
7
-
8
- it "should detect text as not binary" do
9
- "I'm not a cylon!".should_not be_binary
10
- "/*** Comment nice for v1.4.5 ***/".should_not be_binary
11
- end
12
-
13
- it "should detect robot talk as binary" do
14
- BINDATA.should be_binary
15
- "\u001F\x8B\b\u0000\xF5\u0000".should be_binary
16
- end
17
-
18
- it "should find from a long version" do
19
- find_version("frips 1.5.7.786").should eql(["1.5.7.786", 1, 5, 7, 786])
20
- end
21
-
22
- it "should find version from text" do
23
- find_version("Foo v 1.5.6").should eql(["1.5.6", 1, 5, 6])
24
- end
25
-
26
- it "should find version from text" do
27
- find_version("/*!\n * jQuery JavaScript Library v1.6\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Date: Mon May 2 13:50:00 2011 -0400").
28
- should eql(["1.6", 1, 6])
29
- end
30
-
31
- it "should find version from binary" do
32
- find_version(BINDATA).should eql("c29b335e572251b1b79b88bf8c2847ec")
33
- end
34
-
35
- it "should rescue fine if there isn`t version" do
36
- find_version("/* -------------------------------------------------------------- reset.css * Resets default browser CSS.").
37
- should eql("d356b6a91b0d16e456c7b4f79302d051")
38
- end
39
-
40
- end
@@ -1,83 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Pathfix do
4
-
5
- it "should spawn!" do
6
- f = Pathfix.new "fu"
7
- f.should be_instance_of Assetify::Pathfix
8
- end
9
-
10
- describe "Simple test ERB" do
11
-
12
- let (:f) { Pathfix.new ".tipsy { padding: 5px; background-image: url(../images/tipsy.gif); }" }
13
-
14
- it "should detect images" do
15
- f.images.should eql(["../images/tipsy.gif"])
16
- end
17
-
18
- it "should change css" do
19
- f.fix.should eql ".tipsy { padding: 5px; background-image: url('<%= image_path('tipsy.gif') %>'); }"
20
- end
21
-
22
- end
23
-
24
- describe "Simple test namespaced ERB" do
25
-
26
- let (:f) { Pathfix.new ".tipsy { padding: 5px; background-image: url(../images/tipsy.gif); }", :erb, :nicelib }
27
-
28
- it "should detect images" do
29
- f.images.should eql(["../images/tipsy.gif"])
30
- end
31
-
32
- it "should change css" do
33
- f.fix.should eql ".tipsy { padding: 5px; background-image: url('<%= image_path('nicelib/tipsy.gif') %>'); }"
34
- end
35
-
36
- end
37
-
38
-
39
- describe "Multiple assets test sass" do
40
-
41
- let (:f) { Pathfix.new "div.rating-cancel,div.rating-cancel a{background:url(delete.gif) no-repeat 0 -16px}
42
- div.star-rating,div.star-rating a{background:url(star.gif) no-repeat 0 0px}", :sass }
43
-
44
- it "should detect images" do
45
- f.images.should eql(["delete.gif", "star.gif"])
46
- end
47
-
48
- it "should change css" do
49
- f.fix.should eql "div\n &.rating-cancel\n background: image-url(\"delete.gif\") no-repeat 0 -16px\n a\n background: image-url(\"delete.gif\") no-repeat 0 -16px\n &.star-rating\n background: image-url(\"star.gif\") no-repeat 0 0px\n a\n background: image-url(\"star.gif\") no-repeat 0 0px\n"
50
- end
51
-
52
- end
53
-
54
- describe "Multiple assets test scss" do
55
-
56
- let (:f) { Pathfix.new "div.rating-cancel,div.rating-cancel a{background:url(delete.gif) no-repeat 0 -16px}
57
- div.star-rating,div.star-rating a{background:url(star.gif) no-repeat 0 0px}", :scss }
58
-
59
- it "should detect images" do
60
- f.images.should eql(["delete.gif", "star.gif"])
61
- end
62
-
63
- it "should change css" do
64
- f.fix.should eql "div {\n &.rating-cancel {\n background: image-url(\"delete.gif\") no-repeat 0 -16px;\n a {\n background: image-url(\"delete.gif\") no-repeat 0 -16px; } }\n &.star-rating {\n background: image-url(\"star.gif\") no-repeat 0 0px;\n a {\n background: image-url(\"star.gif\") no-repeat 0 0px; } } }\n"
65
- end
66
-
67
- end
68
-
69
- describe "Multiple assets test big css minified file" do
70
-
71
- let (:f) { Pathfix.new File.read("#{File.dirname(__FILE__)}/../fixtures/mobile.css"), :scss }
72
-
73
- it "should detect images" do
74
- f.images.should eql(["images/icons-18-white.png", "images/icons-18-black.png", "images/icons-36-white.png", "images/icons-36-black.png", "images/ajax-loader.png"])
75
- end
76
-
77
- # it "should change css" do
78
- # f.fix.should match "background-image: image-url(\"images/icons-36-white.png\")"
79
- # end
80
-
81
- end
82
-
83
- end
@@ -1,59 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Pkg do
4
-
5
-
6
- before do
7
- [:fancy, :complex].each do |ns|
8
- `mkdir /tmp/#{ns}` unless Dir.exists? "/tmp/#{ns}"
9
- `cp spec/fixtures/#{ns}.tgz /tmp/#{ns}/`
10
- end
11
- end
12
-
13
- it "should spawn!" do
14
- stub_request(:get, "http://cool.js/fancy.tgz").to_return(:body => "Hi")
15
- as = Pkg.new "cool", "http://cool.js/fancy.tgz"
16
- as.should be_instance_of Pkg
17
- end
18
-
19
- it "should spawn!" do
20
- as = Pkg.new "cool", "http://cool.js"
21
- as.should be_instance_of Pkg
22
- end
23
-
24
- it "should get file from unpack" do
25
- as = Pkg.new "fancy", "/tmp/fancy/fancy.tgz"
26
- as.get("fancy/fancy.css").should eql("fancy/fancy.css" => "// Fancy css!\n\n#foo {\n padding: 10px;\n}\n")
27
- end
28
-
29
- it "should get file without path from unpack" do
30
- as = Pkg.new "fancy", "/tmp/fancy/fancy.tgz"
31
- as.get("fancy.css").should eql("fancy/fancy.css" => "// Fancy css!\n\n#foo {\n padding: 10px;\n}\n")
32
- end
33
-
34
- it "should get file from part of the name" do
35
- as = Pkg.new "fancy", "/tmp/fancy/fancy.tgz"
36
- as.get("cy.css").should eql("fancy/fancy.css" => "// Fancy css!\n\n#foo {\n padding: 10px;\n}\n")
37
- end
38
-
39
- it "should read all assets within pkg" do
40
- as = Pkg.new "complex", "/tmp/complex/complex.tgz"
41
- as.read_from_pkg.should be_a Hash #(hash_including "complex/images/3.png"=>"Im a png image..3\n")
42
- end
43
-
44
- it "should unpack all to vendor" do
45
- as = Pkg.new "complex", "/tmp/complex/complex.tgz"
46
- as.unpack_all #.should be_a Hash #(hash_including "complex/images/3.png"=>"Im a png image..3\n")
47
- File.exists?("public/vendor/complex/src/main.js").should be_true
48
- `rm -rf vendor/assets/vendor`
49
- end
50
-
51
- it "should download pkg only once" do
52
- as = Pkg.new "fancy", "/tmp/fancy/fancy.tgz"
53
-
54
- as.should_not_receive(:write)
55
-
56
- as.get("fancy/fancy.css")
57
- as.get("fancy/fancy.css")
58
- end
59
- end
@@ -1,68 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe Assetify do
4
-
5
- it "shoud read_assetfile" do
6
- mock_assetfile
7
- Assetfile.read.should have(1).asset
8
- end
9
-
10
- it "should skip comments" do
11
- mock_assetfile("#\n# Oi\n#\n")
12
- Assetfile.read.should be_nil
13
- end
14
-
15
- it "should work with versions url" do
16
- mock_assetfile("#\n# Oi\n#\njs 'down', 'http://js.com/down-{VERSION}.js', '1.6'")
17
- Assetfile.read.first.url.should eql("http://js.com/down-1.6.js")
18
- end
19
-
20
- describe "read css" do
21
- before do
22
- mock_assetfile("#\n# CSS\n#\ncss 'grid', 'http://grid.com/down'")
23
- end
24
- let(:asset) { Assetfile.read[0] }
25
-
26
- it "should read css" do
27
- Assetfile.read.should have(1).asset
28
- end
29
-
30
- it "should read css" do
31
- Assetfile.read.first.type.should eql(:css)
32
- end
33
-
34
- it "should have fullpath" do
35
- asset.fullpath.should eql("vendor/assets/stylesheets/grid.css")
36
- end
37
-
38
- end
39
-
40
- describe "readjs" do
41
-
42
- let(:asset) { mock_assetfile; Assetfile.read[0] }
43
-
44
- it "should be an asset" do
45
- asset.should be_an Assetify::Asset
46
- end
47
-
48
- it "should be a js file" do
49
- asset.type.should eql(:js)
50
- end
51
-
52
- it "should have an url" do
53
- asset.url.should eql("http://cool.js/down")
54
- end
55
-
56
- it "should have a name" do
57
- asset.name.should eql("cool")
58
- end
59
-
60
- it "should have fullpath" do
61
- asset.fullpath.should eql("vendor/assets/javascripts/cool.js")
62
- end
63
-
64
-
65
- end
66
-
67
-
68
- end