spec/csl/style/choose_spec.rb in csl-1.0.0.pre20 vs spec/csl/style/choose_spec.rb in csl-1.0.0.pre21
- old
+ new
@@ -1,7 +1,50 @@
require 'spec_helper'
module CSL
- describe Style::Choose do
+ class Style
+
+ describe Choose do
+
+ end
+
+ describe Choose::Block do
+
+ describe '#conditions' do
+ it 'returns an empty list by default' do
+ Choose::Block.new.conditions.should be_empty
+ end
+
+ describe 'when the node has a single condition' do
+ let(:node) { Choose::Block.new(:'is-numeric' => 'edition' )}
+
+ it 'returns an array with an array containing the type and value of the condition' do
+ node.conditions.should == [[:'is-numeric', 'edition']]
+ end
+
+ describe 'when the node has two conditions' do
+ before(:each) { node[:disambiguate] = 'true' }
+
+ it 'returns an array with two elements' do
+ node.conditions.should have_exactly(2).items
+ end
+
+ it 'returns both conditions as arrays' do
+ node.conditions.map(&:first).sort.should == [:disambiguate, :'is-numeric']
+ node.conditions.map(&:last).sort.should == ['edition', 'true']
+ end
+ end
+ end
+
+ describe 'when the node has a single condition with multiple values' do
+ let(:node) { Choose::Block.new(:variable => 'author editor' )}
+
+ it 'expands the conditions in the result' do
+ node.conditions.should == [[:variable, 'author'], [:variable, 'editor']]
+ end
+ end
+ end
+
+ end
end
end
\ No newline at end of file