spec/csl/style_spec.rb in csl-1.0.0.pre3 vs spec/csl/style_spec.rb in csl-1.0.0.pre4
- old
+ new
@@ -1,56 +1,99 @@
require 'spec_helper'
module CSL
describe Style do
let(:style) { Style.new }
-
+
it 'has a 1.x version by default' do
- Style.new[:version].should match(/1\.\d+(\.\d+)?/)
+ Style.new[:version].should match(/1\.\d+(\.\d+)?/)
end
-
+
describe '#to_xml' do
it 'returns an empty style' do
Style.new.to_xml.should match(/<style[^>]*\/>/)
end
-
+
it 'supports round-trip for apa style' do
Style.parse(Style.load(:apa).to_xml).should be_a(Style)
end
end
describe '#children' do
-
+
it { should_not have_info }
it { should_not have_locale }
it { should_not have_macro }
it { should_not have_citation }
it { should_not have_bibliography }
-
+
describe 'when it has a title' do
before(:all) { style.title = 'foo' }
-
+
it { style.should have_info }
-
+
it 'info.title is a text node' do
style.info.title.should be_a(TextNode)
end
-
+
it '#title returns the title as a string' do
style.title.should be_a(String)
end
end
end
-
+
describe '#id accessor' do
-
it 'returns nil by default' do
Style.new.id.should be_nil
end
-
+
it 'writer sets the id to the passed-in string' do
expect { style.id = 'foobar' }.to change { style.id }.from(nil).to('foobar')
end
end
-
+
+ describe 'independent and dependent styles' do
+ it 'styles are independent by default' do
+ Style.new.should be_independent
+ end
+
+ it 'styles do not have independent-parent links by default' do
+ Style.new.should_not have_independent_parent_link
+ end
+
+ it 'when setting an independet-parent link a style becomes dependent' do
+ expect { style.independent_parent_link = 'foo' }.to change { style.independent? }
+ end
+ end
+
+ describe 'macros' do
+ it 'has no macros by default' do
+ Style.new.should_not have_macros
+ end
+
+ it 'raises a validation error when adding a macro without name' do
+ expect { Style.new << Style::Macro.new }.to raise_error(ValidationError)
+ end
+
+ describe 'when it has an "author" macro' do
+ before(:all) { style << Style::Macro.new(:name => 'author') }
+
+ it 'has macros' do
+ style.should have_macros
+ end
+
+ it 'the macro is registered in the macros hash' do
+ style.macros.should have_key('author')
+ style.macros['author'].should be_a(Style::Macro)
+ end
+
+ it 'raises a validation error when adding a macro with a duplicate name' do
+ expect { style << Style::Macro.new(:name => 'author') }.to raise_error(ValidationError)
+ end
+
+ it 'unregisters the macro when it is deleted' do
+ expect { style.delete style.macros['author'] }.to change { style.macros.length }
+ end
+ end
+ end
end
end