-
Notifications
You must be signed in to change notification settings - Fork 6
/
integration_spec.rb
151 lines (124 loc) · 4.16 KB
/
integration_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
require 'benchmark'
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
describe 'PNG' do
before do
@img_dir = File.dirname(__FILE__) + '/images'
@expected_dir = File.dirname(__FILE__) + '/expected_output'
@tmp_dir = File.dirname(__FILE__) + '/tmp'
end
it 'can read and write a PNG' do
img = PNG::Image.open("#{@img_dir}/lightening.png")
img.write("#{@tmp_dir}/write_test.png", :filter_type => 0)
read("#{@expected_dir}/write_test.png").should == read("#{@tmp_dir}/write_test.png")
end
it 'can merge one PNG on the left of another' do
one = PNG::Image.image_data("#{@img_dir}/lightening.png", :rgba => false)
two = PNG::Image.image_data("#{@img_dir}/lightening.png", :rgba => false)
merged = one.merge_left two
PNG::Image.write("#{@tmp_dir}/merge_right_test.png", merged, :filter_type => 0)
read("#{@expected_dir}/merge_right_test.png").should == read("#{@tmp_dir}/merge_right_test.png")
end
end
describe "Dir sprite" do
before :all do
@dir = File.dirname(__FILE__) + "/sprite_dirs/words"
@spriter = DirectoryProcessor.new(@dir)
@sprite_file = @dir + "/sprite.png"
@css_file = @dir + "/fragment.css"
@spriter.write
end
after :all do
@spriter.cleanup
end
describe "Sprite generation" do
it "provides the correct dir name" do
@spriter.dir_name.should == 'words'
end
it "find all the pngs in a directory" do
expected = ['latitude.png', 'of.png', 'set.png', 'specified.png']
images = @spriter.images
images.map{|f| f.split('/').last}.should == expected
end
it "sprites all the images in a directory" do
File.exists?(@sprite_file).should be_true
end
end
describe "CSS fragments" do
before :all do
@template = @dir + "/template.css"
@css = @spriter.css
end
after do
File.delete(@template) rescue nil
end
it "should compose class names" do
@css.should include( ".words_latitude")
@css.should include( ".words_of" )
end
it "has the correct image path" do
@css.should include( "/sprite_dirs/words/sprite.png" )
end
it "should write css fragments for a sprite" do
File.exists?(@css_file).should be_true
end
it "can be overidden by including a template.css in the sprite directory" do
File.open(@template, 'w'){|f| f.write("override")}
@spriter.write
@spriter.css.should include("override")
end
end
end
describe 'Stylesheet generator' do
before :all do
@dir = File.dirname(__FILE__) + "/css_fragments"
@out = @dir + "/complete.css"
@builder = StylesheetBuilder.new(@dir)
@builder.output_file(@out)
@css = @builder.css
end
after :all do
@builder.cleanup
end
it "takes the css fragments and concatonates them into a single stylesheet" do
@css.should include( ".some_style" )
end
it "can handle nested folder structures" do
@css.should include( ".deep" )
end
it "writes the css file to the specified location" do
@builder.write
File.exists?(@out).should be_true
end
end
describe "Complete spriting process" do
before :all do
@dir = File.dirname(__FILE__) + "/sprite_dirs"
@css_file = @dir + "/sprite.css"
@spriter = Spriter::Processor.new(:path_prefix => "/images", :source => @dir, :css_file => @css_file)
@spriter.write
end
after :all do
@spriter.cleanup
#making sure it cleans things up - shitty place for these
File.exists?(@css_file).should be_false
File.exists?(@dir + "/words/sprite.png").should be_false
end
it "prepends a path prefix to all sprites in the css file" do
file = read(@css_file)
file.should include("/images/sprite_dirs/words")
end
it "can find all the sprite directories" do
dirs = @spriter.directories.map{|d| d.split('/').last}
dirs.should include( "words" )
end
it "generates the css file at the appropriate location" do
File.exists?(@css_file).should be_true
end
it "creates sprites/css for all subfolders" do
File.exists?(@dir + "/words/sprite.png").should be_true
File.exists?(@dir + "/words/fragment.css").should be_true
end
end
def read(file_name)
File.read(file_name)
end