fontcustom 1.0.1 → 1.1.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +1 -1
  4. data/TODO.md +6 -0
  5. data/lib/fontcustom.rb +1 -1
  6. data/lib/fontcustom/actions.rb +28 -0
  7. data/lib/fontcustom/cli.rb +16 -15
  8. data/lib/fontcustom/generator/font.rb +31 -35
  9. data/lib/fontcustom/generator/template.rb +49 -34
  10. data/lib/fontcustom/options.rb +17 -11
  11. data/lib/fontcustom/scripts/generate.py +1 -1
  12. data/lib/fontcustom/templates/_fontcustom-bootstrap-ie7.scss +4 -3
  13. data/lib/fontcustom/templates/_fontcustom-bootstrap.scss +9 -14
  14. data/lib/fontcustom/templates/_fontcustom.scss +8 -14
  15. data/lib/fontcustom/templates/fontcustom-bootstrap-ie7.css +3 -2
  16. data/lib/fontcustom/templates/fontcustom-bootstrap.css +9 -8
  17. data/lib/fontcustom/templates/fontcustom-preview.html +2 -3
  18. data/lib/fontcustom/templates/fontcustom.css +7 -7
  19. data/lib/fontcustom/templates/fontcustom.yml +25 -66
  20. data/lib/fontcustom/util.rb +108 -31
  21. data/lib/fontcustom/version.rb +1 -1
  22. data/lib/fontcustom/watcher.rb +24 -8
  23. data/spec/fixtures/{mixed-output → generators}/.fontcustom-data +0 -0
  24. data/spec/fixtures/{mixed-output → generators/mixed-output}/another-font.ttf +0 -0
  25. data/spec/fixtures/{mixed-output → generators/mixed-output}/dont-delete-me.bro +0 -0
  26. data/spec/fixtures/{mixed-output → generators/mixed-output}/fontcustom.css +0 -0
  27. data/spec/fixtures/{mixed-output → generators/mixed-output}/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.eot +0 -0
  28. data/spec/fixtures/{mixed-output → generators/mixed-output}/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.svg +0 -0
  29. data/spec/fixtures/{mixed-output → generators/mixed-output}/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.ttf +0 -0
  30. data/spec/fixtures/{mixed-output → generators/mixed-output}/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.woff +0 -0
  31. data/spec/fixtures/{not-a-dir → shared/not-a-dir} +0 -0
  32. data/spec/fixtures/shared/templates/custom.css +1 -0
  33. data/spec/fixtures/shared/templates/regular.css +1 -0
  34. data/spec/fixtures/{empty → shared/vectors-empty}/no_vectors_here.txt +0 -0
  35. data/spec/fixtures/{vectors → shared/vectors}/C.svg +0 -0
  36. data/spec/fixtures/{vectors → shared/vectors}/D.svg +0 -0
  37. data/spec/fixtures/vectors/a_R3ally-eXotic f1Le Name.svg b/data/spec/fixtures/shared/vectors/a_R3ally-eXotic f1Le → Name.svg +0 -0
  38. data/spec/fixtures/util/config-is-in-dir/fontcustom.yml +1 -0
  39. data/spec/fixtures/util/fontcustom-malformed.yml +1 -0
  40. data/spec/fixtures/{fontcustom.yml → util/fontcustom.yml} +0 -0
  41. data/spec/fixtures/util/rails-like/config/fontcustom.yml +1 -0
  42. data/spec/fontcustom/actions_spec.rb +22 -0
  43. data/spec/fontcustom/generator/font_spec.rb +107 -62
  44. data/spec/fontcustom/generator/template_spec.rb +124 -29
  45. data/spec/fontcustom/util_spec.rb +299 -53
  46. data/spec/fontcustom/watcher_spec.rb +56 -10
  47. data/spec/spec_helper.rb +8 -3
  48. metadata +46 -34
  49. data/spec/fixtures/empty-data/.fontcustom-data +0 -0
@@ -0,0 +1 @@
1
+ .foo { color: black; }
@@ -0,0 +1 @@
1
+ .foo { color: blue; }
@@ -0,0 +1 @@
1
+ font_name: Config Is in Dir
@@ -0,0 +1 @@
1
+ font_name: Custom: Name From Config
@@ -0,0 +1 @@
1
+ font_name: Rails Like
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fontcustom::Actions do
4
+ class Generator
5
+ include Fontcustom::Actions
6
+ attr_accessor :opts
7
+
8
+ def initialize
9
+ @opts = { :project_root => fixture, :verbose => true }
10
+ @shell = Thor::Shell::Color.new
11
+ end
12
+ end
13
+
14
+ context "#say_changed" do
15
+ it "should strip :project_root from changed paths" do
16
+ changed = %w|a b c|.map { |file| fixture(file) }
17
+ gen = Generator.new
18
+ output = capture(:stdout) { gen.say_changed(:success, changed) }
19
+ output.should_not match(fixture)
20
+ end
21
+ end
22
+ end
@@ -6,63 +6,78 @@ describe Fontcustom::Generator::Font do
6
6
  Fontcustom::Generator::Font.new([opts])
7
7
  end
8
8
 
9
- context "#check_input" do
10
- it "should raise error if input doesn't exist" do
11
- options = { :input => fixture("does-not-exist") }
12
- expect { generator(options).invoke :check_input }.to raise_error Fontcustom::Error, /doesn't exist/
13
- end
14
-
15
- it "should raise error if input isn't a directory" do
16
- options = { :input => fixture("not-a-dir") }
17
- expect { generator(options).invoke :check_input }.to raise_error Fontcustom::Error, /isn't a directory/
18
- end
19
-
20
- it "should raise error if input doesn't contain vectors" do
21
- options = { :input => fixture("empty") }
22
- expect { generator(options).invoke :check_input }.to raise_error Fontcustom::Error, /doesn't contain any vectors/
23
- end
24
- end
25
-
26
- context "#check_output" do
27
- it "should raise an error if output isn't a directory" do
28
- options = { :output => fixture("not-a-dir") }
29
- expect { generator(options).check_output }.to raise_error Fontcustom::Error, /isn't a directory/
30
- end
31
-
32
- it "should create output dir and data file if they don't exist" do
33
- gen = generator :output => fixture("create-me")
34
- gen.stub(:add_file)
35
- gen.should_receive(:add_file).with(fixture("create-me") + "/.fontcustom-data", anything)
36
- gen.check_output
9
+ context "#prepare_output_dirs" do
10
+ it "should create output dir if it doesn't exist" do
11
+ options = {
12
+ :project_root => fixture,
13
+ :input => "shared/vectors",
14
+ :output => "create-me"
15
+ }
16
+ gen = generator options
17
+ gen.stub(:empty_directory)
18
+ gen.should_receive(:empty_directory).with(fixture("create-me"), anything)
19
+ gen.prepare_output_dirs
20
+ end
21
+
22
+ it "should create dirs for multiple output dirs" do
23
+ options = {
24
+ :project_root => fixture,
25
+ :input => "shared/vectors",
26
+ :output => {
27
+ :fonts => "assets/fonts",
28
+ :css => "assets/stylesheets"
29
+ }
30
+ }
31
+ gen = generator options
32
+ gen.stub(:empty_directory)
33
+ gen.should_receive(:empty_directory).twice
34
+ gen.prepare_output_dirs
37
35
  end
38
36
  end
39
37
 
40
38
  context "#get_data" do
41
- it "should assign empty data model if no data file is empty" do
42
- gen = generator :output => fixture("empty-data")
43
- data = gen.get_data
39
+ it "should assign empty data model if data file is empty or missing" do
40
+ options = {
41
+ :project_root => fixture,
42
+ :input => "shared/vectors"
43
+ }
44
+ gen = generator options
45
+ gen.get_data
46
+ data = gen.instance_variable_get("@data")
44
47
  data.should == Fontcustom::DATA_MODEL
45
48
  end
46
49
 
47
50
  it "should assign @data from data file" do
48
- gen = generator :output => fixture("mixed-output")
49
- data = gen.get_data
51
+ options = {
52
+ :project_root => fixture,
53
+ :input => "shared/vectors",
54
+ :output => "mixed-output"
55
+ }
56
+ gen = generator options
57
+ gen.get_data
58
+ data = gen.instance_variable_get("@data")
50
59
  data[:fonts] =~ data_file_contents[:fonts]
51
60
  end
52
61
  end
53
62
 
54
63
  context "#reset_output" do
55
64
  subject do
56
- gen = generator :output => fixture("mixed-output")
65
+ options = {
66
+ :project_root => fixture,
67
+ :input => "shared/vectors",
68
+ :output => "mixed-output",
69
+ :verbose => false
70
+ }
71
+ gen = generator options
57
72
  gen.stub :remove_file
58
- Fontcustom::Util.stub :clear_file
59
73
  gen.stub :append_to_file
74
+ gen.stub :clear_file
60
75
  gen.instance_variable_set(:@data, data_file_contents)
61
76
  gen
62
77
  end
63
78
 
64
79
  it "should delete fonts from @data[:fonts]" do
65
- subject.should_receive(:remove_file).exactly(4).times.with(/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e/, :verbose => true)
80
+ subject.should_receive(:remove_file).exactly(4).times.with(/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e/, anything)
66
81
  subject.reset_output
67
82
  end
68
83
 
@@ -77,10 +92,10 @@ describe Fontcustom::Generator::Font do
77
92
  subject.reset_output
78
93
  subject.instance_variable_get(:@data)[:fonts].should be_empty
79
94
  end
80
-
95
+
81
96
  it "should update the data file" do
82
- file = File.join(fixture("mixed-output"), ".fontcustom-data")
83
- Fontcustom::Util.should_receive(:clear_file).once.with(file)
97
+ file = fixture(".fontcustom-data")
98
+ subject.should_receive(:clear_file).once.with(file)
84
99
  subject.should_receive(:append_to_file).once.with(file, /"fonts":/, :verbose => false)
85
100
  subject.reset_output
86
101
  end
@@ -93,18 +108,23 @@ describe Fontcustom::Generator::Font do
93
108
 
94
109
  context "#generate" do
95
110
  subject do
96
- gen = generator(:input => fixture("vectors"), :output => fixture("mixed-output"))
111
+ gen = generator(
112
+ :project_root => fixture,
113
+ :input => "shared/vectors",
114
+ :output => "mixed-output",
115
+ :verbose => false
116
+ )
97
117
  gen.stub(:"`").and_return fontforge_output
98
118
  gen
99
119
  end
100
-
120
+
101
121
  it "should call fontforge" do
102
122
  subject.should_receive(:"`").with(/fontforge -script/)
103
123
  subject.generate
104
124
  end
105
125
 
106
126
  it "should pass options to fontforge" do
107
- subject.should_receive(:"`").with(/#{fixture("vectors")}.+#{fixture("mixed-output")}/)
127
+ subject.should_receive(:"`").with(/#{fixture("shared/vectors")}.+#{fixture("mixed-output")}/)
108
128
  subject.generate
109
129
  end
110
130
 
@@ -115,65 +135,90 @@ describe Fontcustom::Generator::Font do
115
135
  end
116
136
 
117
137
  it "should raise error if fontforge fails" do
118
- gen = generator(:input => fixture("vectors"), :output => fixture("fake-dir-should-cause-failure"), :debug => true)
138
+ gen = generator(
139
+ :project_root => fixture,
140
+ :input => "shared/vectors",
141
+ :output => "fake-dir-should-cause-failure",
142
+ :debug => true
143
+ )
119
144
  expect { capture(:stdout) { gen.generate } }.to raise_error Fontcustom::Error, /failed unexpectedly/
120
145
  end
121
146
  end
122
147
 
123
148
  context "#collect_data" do
124
149
  it "should assign @data from @json" do
125
- gen = generator(:input => fixture("vectors"), :output => fixture("mixed-output"))
150
+ gen = generator(
151
+ :project_root => fixture,
152
+ :input => "shared/vectors",
153
+ :output => "output"
154
+ )
126
155
  gen.instance_variable_set(:@data, Fontcustom::DATA_MODEL)
127
156
  gen.instance_variable_set(:@json, data_file_contents.to_json)
128
157
  gen.collect_data
129
158
  data = gen.instance_variable_get(:@data)
130
159
  data[:glyphs].should =~ ["c", "d", "a_r3ally-exotic-f1le-name"]
131
- data[:file_name].should == "fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e"
132
160
  data[:fonts].should =~ [
133
- "fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.eot",
134
- "fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.svg",
135
- "fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.ttf",
136
- "fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.woff"
161
+ fixture("output/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.eot"),
162
+ fixture("output/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.svg"),
163
+ fixture("output/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.ttf"),
164
+ fixture("output/fontcustom_cc5ce52f2ae4f9ce2e7ee8131bbfee1e.woff")
137
165
  ]
138
166
  end
139
167
  end
140
168
 
141
169
  context "#announce_files" do
142
170
  it "should print generated files to console" do
143
- gen = generator(:input => fixture("vectors"), :output => fixture("mixed-output"))
144
- gen.instance_variable_set :@data, data_file_contents
171
+ gen = generator(
172
+ :project_root => fixture,
173
+ :input => "shared/vectors",
174
+ :output => "output"
175
+ )
176
+ gen.instance_variable_set :@data, data_file_contents
145
177
  stdout = capture(:stdout) { gen.announce_files }
146
- stdout.should =~ /create.+\.(woff|ttf|eot|svg)/
178
+ stdout.should =~ /created.+\.(woff|ttf|eot|svg)/
147
179
  end
148
180
 
149
181
  it "should print nothing if verbose is false" do
150
- gen = generator(:input => fixture("vectors"), :output => fixture("mixed-output"), :verbose => false)
151
- gen.instance_variable_set :@data, data_file_contents
182
+ gen = generator(
183
+ :project_root => fixture,
184
+ :input => "shared/vectors",
185
+ :output => "output",
186
+ :verbose => false
187
+ )
188
+ gen.instance_variable_set :@data, data_file_contents
152
189
  stdout = capture(:stdout) { gen.announce_files }
153
190
  stdout.should == ""
154
191
  end
155
192
  end
156
193
 
157
194
  context "#save_data" do
158
- it "should update data file (TEMP)" do
159
- gen = generator(:output => fixture("mixed-output"))
160
- Fontcustom::Util.stub :clear_file
195
+ it "should update data file" do
196
+ gen = generator(
197
+ :project_root => fixture,
198
+ :input => "shared/vectors",
199
+ :output => "output"
200
+ )
201
+ gen.stub :clear_file
161
202
  gen.stub :append_to_file
162
203
  gen.instance_variable_set(:@data, data_file_contents)
163
- file = File.join(fixture("mixed-output"), ".fontcustom-data")
164
- Fontcustom::Util.should_receive(:clear_file).once.with(file)
204
+ file = File.join fixture(".fontcustom-data")
205
+ gen.should_receive(:clear_file).once.with(file)
165
206
  gen.should_receive(:append_to_file).once.with do |path, content|
166
207
  path.should == file
167
208
  content.should match(/"fonts":/)
168
209
  content.should match(/"glyphs":/)
169
- content.should match(/"file_name":/)
170
210
  end
171
211
  gen.save_data
172
212
  end
173
213
 
174
214
  it "should be silent if verbose is false" do
175
- gen = generator(:output => fixture("mixed-output"), :verbose => false)
176
- Fontcustom::Util.stub :clear_file
215
+ gen = generator(
216
+ :project_root => fixture,
217
+ :input => "shared/vectors",
218
+ :output => "output",
219
+ :verbose => false
220
+ )
221
+ gen.stub :clear_file
177
222
  gen.stub :append_to_file
178
223
  gen.instance_variable_set(:@data, data_file_contents)
179
224
  stdout = capture(:stdout) { gen.save_data }
@@ -7,37 +7,42 @@ describe Fontcustom::Generator::Template do
7
7
  end
8
8
 
9
9
  context "#get_data" do
10
- it "should raise error if data file doesn't exist" do
11
- gen = generator :output => fixture("empty")
10
+ it "should raise error if data file doesn't exist" do
11
+ gen = generator(
12
+ :project_root => fixture,
13
+ :input => "shared/vectors"
14
+ )
12
15
  expect { gen.get_data }.to raise_error Fontcustom::Error, /no \.fontcustom-data/
13
16
  end
14
17
 
18
+ # TODO ensure data file is correct
15
19
  it "should assign @data from data file" do
16
- gen = generator :output => fixture("mixed-output")
20
+ gen = generator(
21
+ :project_root => fixture("generators"),
22
+ :input => "../shared/vectors"
23
+ )
17
24
  gen.get_data
18
25
  gen.instance_variable_get(:@data)[:templates].should =~ data_file_contents[:templates]
19
26
  end
20
27
  end
21
28
 
22
- context "#check_templates" do
23
- it "should raise an error if no templates are given" do
24
- gen = generator :templates => []
25
- expect { gen.check_templates }.to raise_error Fontcustom::Error, /No templates were specified/
26
- end
27
- end
28
-
29
29
  context "#reset_output" do
30
30
  subject do
31
- gen = generator :output => fixture("mixed-output")
31
+ gen = generator(
32
+ :project_root => fixture("generators"),
33
+ :input => "../shared/vectors",
34
+ :output => "mixed-output",
35
+ :verbose => false
36
+ )
32
37
  gen.stub :remove_file
33
- Fontcustom::Util.stub :clear_file
38
+ gen.stub :clear_file
34
39
  gen.stub :append_to_file
35
40
  gen.instance_variable_set(:@data, data_file_contents)
36
41
  gen
37
42
  end
38
43
 
39
44
  it "should delete files from @data[:templates]" do
40
- subject.should_receive(:remove_file).once.with(/fontcustom\.css/, :verbose => true)
45
+ subject.should_receive(:remove_file).once.with(/fontcustom\.css/, anything)
41
46
  subject.reset_output
42
47
  end
43
48
 
@@ -52,10 +57,10 @@ describe Fontcustom::Generator::Template do
52
57
  subject.reset_output
53
58
  subject.instance_variable_get(:@data)[:templates].should be_empty
54
59
  end
55
-
60
+
56
61
  it "should update the data file" do
57
- file = File.join(fixture("mixed-output"), ".fontcustom-data")
58
- Fontcustom::Util.should_receive(:clear_file).once.with(file)
62
+ file = fixture("generators/.fontcustom-data")
63
+ subject.should_receive(:clear_file).once.with(file)
59
64
  subject.should_receive(:append_to_file).once.with(file, /"templates":/, :verbose => false)
60
65
  subject.reset_output
61
66
  end
@@ -66,41 +71,131 @@ describe Fontcustom::Generator::Template do
66
71
  end
67
72
  end
68
73
 
74
+ context "#make_relative_paths" do
75
+ it "should assign :css_to_fonts and :preview_to_css" do
76
+ gen = generator(
77
+ :project_root => fixture,
78
+ :input => "shared/vectors",
79
+ :output => {:fonts => "foo/fonts", :css => "output/css", :preview => ""}
80
+ )
81
+ gen.instance_variable_set "@data", data_file_contents
82
+ gen.make_relative_paths
83
+ data = gen.instance_variable_get("@data")
84
+ data[:paths][:css_to_fonts].should match("../../foo/fonts")
85
+ data[:paths][:preview_to_css].should match("output/css/")
86
+ data[:paths][:preprocessor_to_fonts].should eq(data[:paths][:css_to_fonts])
87
+ end
88
+
89
+ it "should assign :preprocessor_to_css if :preprocessor_font_path is set" do
90
+ gen = generator(
91
+ :project_root => fixture,
92
+ :preprocessor_font_path => "fonts/fontcustom",
93
+ :input => "shared/vectors",
94
+ :output => {:fonts => "foo/bar/fonts", :css => "output/css", :preview => ""}
95
+ )
96
+ gen.instance_variable_set "@data", data_file_contents
97
+ gen.make_relative_paths
98
+ data = gen.instance_variable_get("@data")
99
+ data[:paths][:preprocessor_to_fonts].should match("fonts/fontcustom")
100
+ end
101
+
102
+ it "should assign '.' when paths are the same" do
103
+ gen = generator(
104
+ :project_root => fixture,
105
+ :input => "shared/vectors",
106
+ :output => "output"
107
+ )
108
+ gen.instance_variable_set "@data", data_file_contents
109
+ gen.make_relative_paths
110
+ data = gen.instance_variable_get("@data")
111
+ data[:paths][:css_to_fonts].should match("./")
112
+ data[:paths][:preview_to_css].should match("./")
113
+ end
114
+ end
115
+
69
116
  context "#generate" do
70
117
  subject do
71
- gen = generator :output => fixture("mixed-output"), :templates => %W|scss css #{fixture("not-a-dir")}|
118
+ gen = generator(
119
+ :project_root => fixture("generators"),
120
+ :input => {:vectors => "../shared/vectors", :templates => "../shared/templates"},
121
+ :output => "mixed-output",
122
+ :templates => %W|scss css custom.css|,
123
+ :verbose => false
124
+ )
72
125
  gen.instance_variable_set :@data, data_file_contents
73
126
  gen.stub :template
74
- Fontcustom::Util.stub :clear_file
127
+ gen.stub :clear_file
75
128
  gen.stub :append_to_file
76
129
  gen
77
130
  end
78
131
 
79
132
  it "should call #template for each template" do
80
- subject.should_receive(:template).exactly(3).times
133
+ subject.should_receive(:template).exactly(3).times do |*args|
134
+ args[1].should match(/(fontcustom\.css|_fontcustom\.scss|custom\.css)/)
135
+ end
81
136
  subject.generate
82
137
  end
83
138
 
84
- it "should update data file" do
85
- file = File.join fixture("mixed-output"), ".fontcustom-data"
86
- Fontcustom::Util.should_receive(:clear_file).once.with(file)
139
+ it "should update data file with generated templates" do
140
+ file = fixture("generators/.fontcustom-data")
141
+ subject.should_receive(:clear_file).once.with(file)
87
142
  subject.should_receive(:append_to_file).once.with do |path, content|
88
143
  path.should == file
89
144
  content.should match(/fontcustom\.css/)
90
145
  content.should match(/_fontcustom\.scss/)
91
- content.should match(/not-a-dir/)
146
+ content.should match(/custom\.css/)
92
147
  end
93
148
  subject.generate
94
149
  end
95
150
 
96
151
  it "should be silent if verbose is false" do
97
- gen = generator :output => fixture("mixed-output"), :templates => %W|scss css #{fixture("not-a-dir")}|, :verbose => false
98
- gen.instance_variable_set :@data, data_file_contents
99
- gen.stub :template
100
- Fontcustom::Util.stub :clear_file
101
- gen.stub :append_to_file
102
- stdout = capture(:stdout) { gen.generate }
152
+ stdout = capture(:stdout) { subject.generate }
103
153
  stdout.should == ""
104
154
  end
155
+
156
+ context "when various output locations are given" do
157
+ subject do
158
+ gen = generator(
159
+ :project_root => fixture,
160
+ :input => {:vectors => "shared/vectors", :templates => "shared/templates"},
161
+ :output => {:fonts => "output/fonts", :css => "output/css", :preview => "output/views", "custom.css" => "output/custom"},
162
+ :templates => %W|scss preview css custom.css regular.css|,
163
+ :verbose => false
164
+ )
165
+ gen.instance_variable_set :@data, data_file_contents
166
+ gen.stub :template
167
+ gen.stub :clear_file
168
+ gen.stub :append_to_file
169
+ gen
170
+ end
171
+
172
+ it "should output custom templates to their matching :output paths" do
173
+ subject.should_receive(:template).exactly(5).times do |*args|
174
+ if File.basename(args[0]) == "custom.css"
175
+ args[1].should == fixture("output/custom/custom.css")
176
+ end
177
+ end
178
+ subject.generate
179
+ end
180
+
181
+ it "should output css templates into :css" do
182
+ subject.should_receive(:template).exactly(5).times do |*args|
183
+ name = File.basename(args[0])
184
+ if %w|_fontcustom.scss fontcustom.css regular.css|.include? name
185
+ args[1].should match(/output\/css\/#{name}/)
186
+ end
187
+ end
188
+ subject.generate
189
+ end
190
+
191
+ it "should output fontcustom-preview.html into :preview" do
192
+ subject.should_receive(:template).exactly(5).times do |*args|
193
+ if File.basename(args[0]) == "fontcustom-preview.html"
194
+ args[1].should == fixture("output/views/fontcustom-preview.html")
195
+ end
196
+ end
197
+ subject.generate
198
+ end
199
+ end
105
200
  end
106
201
  end