spec/fontrobot/generator_spec.rb in fontrobot-0.1.4 vs spec/fontrobot/generator_spec.rb in fontrobot-0.1.5

- old
+ new

@@ -3,73 +3,111 @@ describe Fontrobot::Generator do let(:input_dir) { 'spec/fixtures/vectors' } let(:output_dir) { 'tmp' } context 'normally' do - before(:all) { Fontrobot::Generator.start([input_dir, '-o', output_dir]) } after(:all) { cleanup(output_dir) } it 'should create webfonts' do + Fontrobot::Generator.start([input_dir, '-o', output_dir]) exts = %w( .woff .eot .ttf .svg ) files = Dir[output_dir + '/*'] files.map! { |file| File.extname(file) } - exts.each { |ext| files.should include(ext) } end it 'should print font-face declarations in fontrobot.css' do + Fontrobot::Generator.start([input_dir, '-o', output_dir]) stylesheet = File.read(output_dir + '/fontrobot.css') files = Dir[output_dir + '/*.{woff,eot,ttf,svg}'] - files.each do |file| stylesheet.should include(File.basename(file)) end end it 'should print icon-* CSS classes in fontrobot.css' do + Fontrobot::Generator.start([input_dir, '-o', output_dir]) stylesheet = File.read(output_dir + '/fontrobot.css') icon_names = Dir[input_dir + '/*'].map { |file| File.basename(file)[0..-5].gsub(/\W/, '-').downcase } - icon_names.each do |name| stylesheet.should include('.icon-' + name) end end end context 'when input_dir does not exist' do + after(:all) { cleanup(output_dir) } let(:fake_input_dir) { 'does/not/exist' } it 'should raise an error' do results = capture(:stderr) { Fontrobot::Generator.start([fake_input_dir, '-o', output_dir]) } results.should =~ /doesn't exist or isn't a directory/ end end context 'when input_dir does not contain vectors' do + after(:all) { cleanup(output_dir) } let(:empty_input_dir) { 'spec/fixtures/empty' } it 'should raise an error' do results = capture(:stderr) { Fontrobot::Generator.start([empty_input_dir, output_dir]) } results.should =~ /doesn't contain any vectors/ end end context 'when flags are passed' do + after(:all) { cleanup(output_dir) } + it 'should save output files with a custom name' do Fontrobot::Generator.start([input_dir, '-o', output_dir, '-n', 'customname']) - file = Dir[File.join(output_dir, 'customname-*.ttf')].first File.exists?(file).should be_true - - cleanup(output_dir) end it 'should exclude the filename hash' do Fontrobot::Generator.start([input_dir, '-o', output_dir, '--nohash']) - file = File.join(output_dir, 'fontrobot.ttf') File.exists?(file).should be_true + end - cleanup(output_dir) + it 'should output an html test file' do + Fontrobot::Generator.start([input_dir, '-o', output_dir, '--html']) + file = File.join(output_dir, 'test.html') + File.exists?(file).should be_true end + + it 'should output .scss files' do + Fontrobot::Generator.start([input_dir, '-o', output_dir, '--scss']) + file = File.join(output_dir, 'fontrobot.scss') + File.exists?(file).should be_true + end + + it 'should reorder the font sources' do + font_order = 'eot,woff,ttf,svg' + Fontrobot::Generator.start([input_dir, '-o', output_dir, '-r', font_order]) + stylesheet = File.read(output_dir + '/fontrobot.css') + fontface = stylesheet.match(/@font-face[^}]+/) + fonts = fontface[0].scan(/fontrobot-[a-z0-9]+.([a-z]+)/).flatten.join(',') + fonts.should == font_order + end + + it 'should set a custom font path' do + Fontrobot::Generator.start([input_dir, '-o', output_dir, '-f', 'wiggly']) + stylesheet = File.read(output_dir + '/fontrobot.css') + stylesheet.should include('wiggly') + end + + it 'should include a data uri' do + Fontrobot::Generator.start([input_dir, '-o', output_dir, '-i', 'woff']) + stylesheet = File.read(output_dir + '/fontrobot.css') + stylesheet.should include('url(data:') + end + + it 'should include two @font-face declarations if it includes a data-uri' do + Fontrobot::Generator.start([input_dir, '-o', output_dir, '-i', 'woff']) + stylesheet = File.read(output_dir + '/fontrobot.css') + fontfaces = stylesheet.scan(/@font-face/) + fontfaces.length.should == 2 + end + end end