antw-kin 0.3.2 → 0.3.3
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/CHANGELOG +11 -0
- data/VERSION.yml +1 -1
- data/lib/kin.rb +4 -1
- data/lib/kin/masthead.rb +113 -60
- data/lib/kin/nav.rb +29 -4
- data/lib/kin/nav/builder.rb +4 -2
- data/lib/kin/nav/formatters.rb +187 -92
- data/lib/kin/nav/helper_mixin.rb +1 -1
- data/lib/kin/sprites.rb +100 -0
- data/lib/kin/sprites/image_generator.rb +75 -0
- data/lib/kin/sprites/rake_runner.rb +179 -0
- data/lib/kin/sprites/sass_generator.rb +81 -0
- data/lib/kin/tasks/sprites.rb +34 -0
- data/spec/fixture/app/views/nav_specs/has_right_formatter.html.haml +9 -0
- data/spec/fixture/app/views/nav_specs/subnav_formatter.html.haml +7 -0
- data/spec/fixture/config/sprites.different.yml +11 -0
- data/spec/fixture/config/sprites.yml +9 -0
- data/spec/fixture/public/images/sprites/src/one.png +0 -0
- data/spec/fixture/public/images/sprites/src/three.png +0 -0
- data/spec/fixture/public/images/sprites/src/two.png +0 -0
- data/spec/masthead_spec.rb +1 -77
- data/spec/nav_spec.rb +32 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/sprites_spec.rb +349 -0
- metadata +16 -4
- data/lib/kin/merbtasks.rb +0 -0
- data/spec/fixture/app/views/masthead_specs/no_border.html.haml +0 -2
@@ -0,0 +1,34 @@
|
|
1
|
+
namespace :kin do
|
2
|
+
|
3
|
+
desc "Regenerates the sprite images. Any sprites which haven't been " \
|
4
|
+
"changed won't be regenerated."
|
5
|
+
|
6
|
+
task 'sprites' do
|
7
|
+
generate_sprites!(false)
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Regenerates the sprite images, even those which have not been " \
|
11
|
+
"changed."
|
12
|
+
|
13
|
+
task 'sprites:force' do
|
14
|
+
generate_sprites!(true)
|
15
|
+
end
|
16
|
+
|
17
|
+
##
|
18
|
+
# Generates the sprites for the current Merb application.
|
19
|
+
#
|
20
|
+
# @param [Boolean] force
|
21
|
+
# Defines whether to regenerate sprites which haven't been changed.
|
22
|
+
#
|
23
|
+
def generate_sprites!(force)
|
24
|
+
require 'kin/sprites'
|
25
|
+
require 'kin/sprites/rake_runner'
|
26
|
+
|
27
|
+
Kin::Sprites::RakeRunner.new(
|
28
|
+
File.join(Merb.dir_for(:config), 'sprites.yml'),
|
29
|
+
File.join(Merb.dir_for(:image), 'sprites'),
|
30
|
+
File.join(Merb.dir_for(:stylesheet), 'sass', '_sprites.sass')
|
31
|
+
).generate!(force)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
data/spec/masthead_spec.rb
CHANGED
@@ -1,52 +1,10 @@
|
|
1
1
|
require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
|
2
2
|
|
3
|
-
# Masthead::Builder Specs ======================================================
|
4
|
-
|
5
|
-
describe 'masthead builder setter', :shared => true do
|
6
|
-
it 'should set the attribute if a value is given' do
|
7
|
-
@builder.send(@method, 'my_value').should == 'my_value'
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'should not change the attribute value if nil is given' do
|
11
|
-
@builder.send(@method, 'my_value')
|
12
|
-
@builder.send(@method).should == 'my_value'
|
13
|
-
@builder.send(@method, nil).should == 'my_value'
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'should set the extra options' do
|
17
|
-
@builder.send(@method, 'my_value', { :link => '/' })
|
18
|
-
@builder.options[@method].should == { :link => '/' }
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
3
|
describe Kin::Masthead::Builder do
|
23
4
|
before(:each) do
|
24
5
|
@builder = Kin::Masthead::Builder.new
|
25
6
|
end
|
26
7
|
|
27
|
-
# -------
|
28
|
-
# Setters
|
29
|
-
|
30
|
-
describe '#title' do
|
31
|
-
before(:each) { @method = :title }
|
32
|
-
it_should_behave_like 'masthead builder setter'
|
33
|
-
end
|
34
|
-
|
35
|
-
describe '#subtitle' do
|
36
|
-
before(:each) { @method = :subtitle }
|
37
|
-
it_should_behave_like 'masthead builder setter'
|
38
|
-
end
|
39
|
-
|
40
|
-
describe '#right_title' do
|
41
|
-
before(:each) { @method = :right_title }
|
42
|
-
it_should_behave_like 'masthead builder setter'
|
43
|
-
end
|
44
|
-
|
45
|
-
describe '#right_subtitle' do
|
46
|
-
before(:each) { @method = :right_subtitle }
|
47
|
-
it_should_behave_like 'masthead builder setter'
|
48
|
-
end
|
49
|
-
|
50
8
|
# -----
|
51
9
|
# build
|
52
10
|
|
@@ -98,7 +56,7 @@ describe Kin::Masthead::Builder do
|
|
98
56
|
it 'should render an empty right title when no right title is set, but ' +
|
99
57
|
'a right subtitle is set' do
|
100
58
|
@c.render(:right_subtitle).should have_selector('.extra .main') do |main|
|
101
|
-
main.
|
59
|
+
main.to_xhtml.should include(' ') # Unicode non-breaking space.
|
102
60
|
end
|
103
61
|
end
|
104
62
|
|
@@ -130,16 +88,6 @@ describe Kin::Masthead::Builder do
|
|
130
88
|
@c.render(:right_subtitle).should have_selector('.extra .subtitle')
|
131
89
|
end
|
132
90
|
|
133
|
-
# Border.
|
134
|
-
|
135
|
-
it 'should not have a "no_border" class by default' do
|
136
|
-
@c.render(:border).should_not have_selector('.no_border')
|
137
|
-
end
|
138
|
-
|
139
|
-
it 'should have a "no_border" class when no_border = true' do
|
140
|
-
@c.render(:no_border).should have_selector('.no_border')
|
141
|
-
end
|
142
|
-
|
143
91
|
# Links.
|
144
92
|
|
145
93
|
it 'should add links to fields when a :link option is present' do
|
@@ -202,27 +150,3 @@ describe Kin::Masthead::Builder do
|
|
202
150
|
end
|
203
151
|
|
204
152
|
end
|
205
|
-
|
206
|
-
# Masthead::Helper Specs =====================================================
|
207
|
-
|
208
|
-
describe 'Masthead helper mixin' do
|
209
|
-
include Kin::Masthead::Helper
|
210
|
-
|
211
|
-
describe '#masthead' do
|
212
|
-
it 'should pass along the :no_border option' do
|
213
|
-
masthead(:no_border => true) { |_| }
|
214
|
-
masthead_builder.no_border.should be_true
|
215
|
-
end
|
216
|
-
|
217
|
-
it 'should pass the block along to #build' do
|
218
|
-
masthead { |m| m.title('Title') }
|
219
|
-
masthead_builder.title.should == 'Title'
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
describe '#masthead_builder' do
|
224
|
-
it 'should return the same instance each time' do
|
225
|
-
masthead_builder.object_id.should == masthead_builder.object_id
|
226
|
-
end
|
227
|
-
end
|
228
|
-
end
|
data/spec/nav_spec.rb
CHANGED
@@ -145,6 +145,38 @@ describe Kin::Nav do
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
+
# ------------------
|
149
|
+
# HasRight formatter
|
150
|
+
|
151
|
+
describe 'with the HasRight formatter' do
|
152
|
+
before(:each) do
|
153
|
+
@html = @c.render(:has_right_formatter)
|
154
|
+
end
|
155
|
+
|
156
|
+
it 'should apply a custom style the right-aligned items' do
|
157
|
+
%w( right_one right_two ).each do |name|
|
158
|
+
@html.should have_selector("#nav_#{name} span.right_border")
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
it 'should use the default style for items not right-aligned' do
|
163
|
+
@html.should_not have_selector('#nav_left span.right_border')
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
# ----------------
|
168
|
+
# Subnav formatter
|
169
|
+
|
170
|
+
describe 'with the Subnav formatter' do
|
171
|
+
it 'should apply a custom style to all items' do
|
172
|
+
html = @c.render(:subnav_formatter)
|
173
|
+
|
174
|
+
%w( one two ).each do |name|
|
175
|
+
html.should have_selector("#nav_#{name} span.pill")
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
148
180
|
# ------
|
149
181
|
# titles
|
150
182
|
|
data/spec/spec_helper.rb
CHANGED
@@ -19,6 +19,37 @@ Spec::Runner.configure do |config|
|
|
19
19
|
config.include(Merb::Test::ViewHelper)
|
20
20
|
config.include(Merb::Test::RouteHelper)
|
21
21
|
config.include(Merb::Test::ControllerHelper)
|
22
|
+
config.include(Module.new do
|
23
|
+
##
|
24
|
+
# Returns a path to the fixture directory. Any additional string
|
25
|
+
# parameters will be joined with the path.
|
26
|
+
#
|
27
|
+
def fixture_path(*dirs)
|
28
|
+
File.join(File.dirname(__FILE__), 'fixture', *dirs)
|
29
|
+
end
|
30
|
+
|
31
|
+
##
|
32
|
+
# Returns a path to the tmp/spec folder. Any additional string
|
33
|
+
# parameters will be joined with the path.
|
34
|
+
#
|
35
|
+
def tmp_path(*dirs)
|
36
|
+
File.join(File.dirname(__FILE__), '..', 'tmp', 'spec', *dirs)
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Does exactly what it says on the tin.
|
41
|
+
#
|
42
|
+
def capture_stdout
|
43
|
+
orig, $stdout = $stdout, StringIO.new
|
44
|
+
|
45
|
+
begin
|
46
|
+
yield
|
47
|
+
return $stdout.string
|
48
|
+
ensure
|
49
|
+
$stdout = orig
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end)
|
22
53
|
end
|
23
54
|
|
24
55
|
##
|
@@ -0,0 +1,349 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
|
2
|
+
|
3
|
+
sprites = File.join(File.dirname(__FILE__), '..', 'lib', 'kin', 'sprites')
|
4
|
+
|
5
|
+
require sprites
|
6
|
+
require File.join(sprites, 'rake_runner')
|
7
|
+
|
8
|
+
# IconSet ====================================================================
|
9
|
+
|
10
|
+
describe Kin::Sprites::IconSet do
|
11
|
+
it 'should include Enumerable' do
|
12
|
+
Kin::Sprites::IconSet.ancestors.should include(Enumerable)
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#each' do
|
16
|
+
it 'should yield each icon in turn' do
|
17
|
+
icons, yielded = %w(one two), []
|
18
|
+
|
19
|
+
Kin::Sprites::IconSet.new(icons).each do |icon|
|
20
|
+
yielded << icon
|
21
|
+
end
|
22
|
+
|
23
|
+
yielded.should == icons
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '#location_of' do
|
28
|
+
before(:each) do
|
29
|
+
@set = Kin::Sprites::IconSet.new(%w(one two))
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should return 0 if the given icon is first' do
|
33
|
+
@set.location_of('one').should == 0
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should return 40 if the given icon is second' do
|
37
|
+
@set.location_of('two').should == 40
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#length' do
|
42
|
+
it 'should return the number of icons in the set' do
|
43
|
+
Kin::Sprites::IconSet.new([]).length.should == 0
|
44
|
+
Kin::Sprites::IconSet.new(['one']).length.should == 1
|
45
|
+
Kin::Sprites::IconSet.new(['one', 'two']).length.should == 2
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# ImageGenerator =============================================================
|
51
|
+
|
52
|
+
# Requires:
|
53
|
+
#
|
54
|
+
# @gen (Kin::Sprites::ImageGenerator)
|
55
|
+
# An image generator instance.
|
56
|
+
# @sprite_path (String)
|
57
|
+
# A path to where a sprite should be saved.
|
58
|
+
#
|
59
|
+
describe 'saving a sprite', :shared => true do
|
60
|
+
it 'should save the image to the specified path' do
|
61
|
+
lambda { @gen.save(@sprite_path) }.should \
|
62
|
+
change(&lambda { File.exists?(@sprite_path) })
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'should silently overwrite any existing file at the specified path' do
|
66
|
+
FileUtils.touch(@sprite_path)
|
67
|
+
orig_size = File.size(@sprite_path)
|
68
|
+
@gen.save(@sprite_path)
|
69
|
+
|
70
|
+
# Using touch should create a zero-byte file (as near as makes no
|
71
|
+
# difference, anyway). Saving the PNG should result in a larger file.
|
72
|
+
File.exists?(@sprite_path).should be_true
|
73
|
+
File.size(@sprite_path).should > orig_size
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should save a 32-bit PNG' do
|
77
|
+
@gen.save(@sprite_path)
|
78
|
+
image = Magick::Image.ping(@sprite_path).first
|
79
|
+
image.format.should == 'PNG'
|
80
|
+
image.quantum_depth.should == 8 # 8-bits per channel.
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should create a 16 pixel wide image' do
|
84
|
+
@gen.save(@sprite_path)
|
85
|
+
Magick::Image.ping(@sprite_path).first.columns.should == 16
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe Kin::Sprites::ImageGenerator, '#save' do
|
90
|
+
##
|
91
|
+
# Creates an ImageGenerator instance suitable for use in specs.
|
92
|
+
#
|
93
|
+
# @param [Array<String>] An array of icons to use.
|
94
|
+
#
|
95
|
+
def create_image_generator(icons)
|
96
|
+
Kin::Sprites::ImageGenerator.new(
|
97
|
+
Kin::Sprites::IconSet.new(icons),
|
98
|
+
fixture_path('public', 'images', 'sprites', 'src')
|
99
|
+
)
|
100
|
+
end
|
101
|
+
|
102
|
+
before(:all) do
|
103
|
+
@dir = tmp_path('sprites')
|
104
|
+
@sprite_path = tmp_path('sprites', 'sprite.png')
|
105
|
+
FileUtils.mkdir_p(@dir)
|
106
|
+
end
|
107
|
+
|
108
|
+
after(:all) do
|
109
|
+
FileUtils.rmdir(@dir)
|
110
|
+
end
|
111
|
+
|
112
|
+
after(:each) do
|
113
|
+
FileUtils.rm(@sprite_path) if @sprite_path && File.exists?(@sprite_path)
|
114
|
+
end
|
115
|
+
|
116
|
+
# On with the specs...
|
117
|
+
|
118
|
+
describe 'when creating a sprite with a single icon' do
|
119
|
+
before(:each) do
|
120
|
+
@gen = create_image_generator(['one'])
|
121
|
+
end
|
122
|
+
|
123
|
+
it_should_behave_like 'saving a sprite'
|
124
|
+
|
125
|
+
it 'should create a 16 pixel high image' do
|
126
|
+
# 40 pixels with the top and bottom 12 (blank) cropped off
|
127
|
+
@gen.save(@sprite_path)
|
128
|
+
Magick::Image.ping(@sprite_path).first.rows.should == 16
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe 'when creating a sprite with a three icons' do
|
133
|
+
before(:each) do
|
134
|
+
@gen = create_image_generator(['one', 'two', 'three'])
|
135
|
+
end
|
136
|
+
|
137
|
+
it_should_behave_like 'saving a sprite'
|
138
|
+
|
139
|
+
it 'should create a 96 pixel high image' do
|
140
|
+
# 120 pixels with the top and bottom 12 (blank) cropped off
|
141
|
+
@gen.save(@sprite_path)
|
142
|
+
Magick::Image.ping(@sprite_path).first.rows.should == 96
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'should raise IconNotReadable when one of the icons does not exist' do
|
147
|
+
block = lambda { create_image_generator(['not_here']).save(@sprite_path) }
|
148
|
+
block.should raise_error(
|
149
|
+
Kin::Sprites::ImageGenerator::IconNotReadable, /unable to open/)
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'should raise TargetNotWriteable when the sprite path is not ' \
|
153
|
+
'writeable' do
|
154
|
+
gen = create_image_generator(['one'])
|
155
|
+
orig_perms = File.stat(@dir).mode
|
156
|
+
File.chmod(0000, @dir)
|
157
|
+
|
158
|
+
begin
|
159
|
+
lambda { gen.save(@sprite_path) }.should raise_error(
|
160
|
+
Kin::Sprites::ImageGenerator::TargetNotWriteable, /Permission denied/)
|
161
|
+
ensure
|
162
|
+
File.chmod(orig_perms, @dir)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
# SassGenerator ==============================================================
|
168
|
+
|
169
|
+
describe Kin::Sprites::SassGenerator, '#to_sass' do
|
170
|
+
before(:each) do
|
171
|
+
@set = Kin::Sprites::IconSet.new(%w(one two three))
|
172
|
+
@gen = Kin::Sprites::SassGenerator.new(@set, 'mysprites')
|
173
|
+
@sass = @gen.to_sass('/images/sprites')
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'should not indent mixin definitions' do
|
177
|
+
@sass.each_line do |line|
|
178
|
+
line.should =~ /^=/ if line =~ /=\w+-icon/
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'should indent if statements with two spaces' do
|
183
|
+
@sass.each_line do |line|
|
184
|
+
line.should =~ /^ @/ if line =~ /@(?:else|if)/
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'should indent position assigments with four spaces' do
|
189
|
+
@sass.each_line do |line|
|
190
|
+
line.should =~ /^ !pos/ if line =~ /@pos = -\d+px/
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
it 'should indent background statements with two spaces' do
|
195
|
+
@sass.each_line do |line|
|
196
|
+
line.should =~ / :background/ if line =~ /:background/
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
it 'should include statements for all the icons' do
|
201
|
+
@sass.should include('!icon == "one"')
|
202
|
+
@sass.should include('!icon == "two"')
|
203
|
+
@sass.should include('!icon == "three"')
|
204
|
+
end
|
205
|
+
|
206
|
+
it 'should use an `@if` statement for the first icon' do
|
207
|
+
@sass.should include('@if !icon == "one"')
|
208
|
+
@sass.should_not include('@if !icon == "two"')
|
209
|
+
@sass.should_not include('@if !icon == "three"')
|
210
|
+
end
|
211
|
+
|
212
|
+
it 'should use an `@else if` statement for subsequence icons' do
|
213
|
+
@sass.should_not include('@else if !icon == "one"')
|
214
|
+
@sass.should include('@else if !icon == "two"')
|
215
|
+
@sass.should include('@else if !icon == "three"')
|
216
|
+
end
|
217
|
+
|
218
|
+
it 'should use the given base directory when creating the sprite path' do
|
219
|
+
@sass.should =~ %r{url\(/images/sprites}
|
220
|
+
end
|
221
|
+
|
222
|
+
it 'should use the generator name when creating the sprite path' do
|
223
|
+
@sass.should include('mysprites.png')
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
# RakeRunner =================================================================
|
228
|
+
|
229
|
+
##
|
230
|
+
# Copies the icons source files from fixture/public/images/sprites/src to
|
231
|
+
# the tmp/spec/sprites/src directory. Removes tmp/spec/sprites when done.
|
232
|
+
#
|
233
|
+
describe Kin::Sprites::RakeRunner do
|
234
|
+
before(:each) do
|
235
|
+
FileUtils.mkdir_p(tmp_path('sprites'))
|
236
|
+
FileUtils.cp_r(fixture_path('public', 'images', 'sprites'), tmp_path)
|
237
|
+
end
|
238
|
+
|
239
|
+
after(:each) do
|
240
|
+
FileUtils.rm_r(tmp_path('sprites'))
|
241
|
+
end
|
242
|
+
|
243
|
+
def rake_runner(sprites_yml = 'sprites.yml')
|
244
|
+
Kin::Sprites::RakeRunner.new(
|
245
|
+
fixture_path('config', sprites_yml),
|
246
|
+
tmp_path('sprites'),
|
247
|
+
tmp_path('sprites', '_sprites.sass'))
|
248
|
+
end
|
249
|
+
|
250
|
+
it 'should raise an error when sprites.yml could not be found' do
|
251
|
+
lambda {
|
252
|
+
Kin::Sprites::RakeRunner.new(
|
253
|
+
'not_here.yml',
|
254
|
+
fixture_path('public', 'images', 'sprites'),
|
255
|
+
fixture_path('public', 'stylesheets', 'sass', '_sprites.sass')
|
256
|
+
)
|
257
|
+
}.should raise_error(Kin::Sprites::SpriteError)
|
258
|
+
end
|
259
|
+
|
260
|
+
describe 'when no sprites have been previously generated' do
|
261
|
+
it 'should generate the sprite files' do
|
262
|
+
out = capture_stdout { rake_runner.generate! }
|
263
|
+
out.should =~ /Regenerated "general"/
|
264
|
+
out.should =~ /Regenerated "more"/
|
265
|
+
end
|
266
|
+
|
267
|
+
it 'should generate the SASS partial' do
|
268
|
+
out = capture_stdout { rake_runner.generate! }
|
269
|
+
out.should =~ /Saved SASS/
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
describe 'when the sprites have been previously generated,' do
|
274
|
+
describe 'and one has changed' do
|
275
|
+
before(:each) do
|
276
|
+
capture_stdout { rake_runner.generate! }
|
277
|
+
end
|
278
|
+
|
279
|
+
it 'should regenerate the changed sprite file' do
|
280
|
+
out = capture_stdout { rake_runner('sprites.different.yml').generate! }
|
281
|
+
out.should =~ /Regenerated "general"/
|
282
|
+
end
|
283
|
+
|
284
|
+
it 'should not regenerate the unchanged sprite file' do
|
285
|
+
out = capture_stdout { rake_runner('sprites.different.yml').generate! }
|
286
|
+
out.should =~ /Ignoring "more"/
|
287
|
+
end
|
288
|
+
|
289
|
+
it 'should regenerate the SASS partial' do
|
290
|
+
out = capture_stdout { rake_runner('sprites.different.yml').generate! }
|
291
|
+
out.should =~ /Saved SASS/
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
describe 'have not changed,' do
|
296
|
+
before(:each) do
|
297
|
+
capture_stdout { rake_runner.generate! }
|
298
|
+
end
|
299
|
+
|
300
|
+
describe 'and :force is false' do
|
301
|
+
it 'should not regenerate the sprite files' do
|
302
|
+
out = capture_stdout { rake_runner.generate! }
|
303
|
+
out.should =~ /Ignoring "general"/
|
304
|
+
out.should =~ /Ignoring "more"/
|
305
|
+
end
|
306
|
+
|
307
|
+
it 'should not regenerate the SASS partial' do
|
308
|
+
out = capture_stdout { rake_runner.generate! }
|
309
|
+
out.should_not =~ /Saved SASS/
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
313
|
+
describe 'and :force is true' do
|
314
|
+
it 'should regenerate the sprite files' do
|
315
|
+
out = capture_stdout { rake_runner.generate!(true) }
|
316
|
+
out.should =~ /Regenerated "general"/
|
317
|
+
out.should =~ /Regenerated "more"/
|
318
|
+
end
|
319
|
+
|
320
|
+
it 'should regenerate the SASS partial' do
|
321
|
+
out = capture_stdout { rake_runner.generate!(true) }
|
322
|
+
out.should =~ /Saved SASS/
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
describe 'and a sprite has been deleted' do
|
327
|
+
before(:each) do
|
328
|
+
FileUtils.rm(tmp_path('sprites', 'general.png'))
|
329
|
+
end
|
330
|
+
|
331
|
+
it 'should regenerate the deleted sprite' do
|
332
|
+
out = capture_stdout { rake_runner.generate! }
|
333
|
+
out.should =~ /Regenerated "general"/
|
334
|
+
end
|
335
|
+
|
336
|
+
it 'should not regenereate the unchanged sprite' do
|
337
|
+
out = capture_stdout { rake_runner.generate! }
|
338
|
+
out.should =~ /Ignoring "more"/
|
339
|
+
end
|
340
|
+
|
341
|
+
it 'should regenerate the SASS partial' do
|
342
|
+
out = capture_stdout { rake_runner.generate!(true) }
|
343
|
+
out.should =~ /Saved SASS/
|
344
|
+
end
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
end
|