spec/macros4cuke/templating/engine_spec.rb in macros4cuke-0.4.08 vs spec/macros4cuke/templating/engine_spec.rb in macros4cuke-0.4.09

- old
+ new

@@ -21,11 +21,11 @@ And I click "Sign in" SNIPPET source end - + # Template containing two conditional sections let(:sophisticated_template) do source = <<-SNIPPET When I fill in "firstname" with "<firstname>" And I fill in "lastname" with "<lastname>" @@ -37,14 +37,14 @@ <?dummy></dummy> And I click "Register" SNIPPET source - end - - + end + + # Rule for default instantiation subject { Engine.new sample_template } context 'Class services:' do @@ -61,42 +61,42 @@ it 'should parse a text line without tag' do sample_text = 'Mary has a little lamb' result = Engine.parse(sample_text) - # Expectation: an array with one couple: + # Expectation: an array with one couple: # [:static, the source text] expect(result).to have(1).items expect(result[0]).to eq([:static, sample_text]) end it 'should parse a text line that consists of just a tag' do sample_text = '<some_tag>' result = Engine.parse(sample_text) - # Expectation: an array with one couple: + # Expectation: an array with one couple: # [:static, the source text] expect(result).to have(1).items expect(result[0]).to eq([:dynamic, strip_chevrons(sample_text)]) end it 'should parse a text line with a tag at the start' do sample_text = '<some_tag>some text' result = Engine.parse(sample_text) - # Expectation: an array with two couples: + # Expectation: an array with two couples: # [dynamic, 'some_tag'][:static, some text] expect(result).to have(2).items expect(result[0]).to eq([:dynamic, 'some_tag']) expect(result[1]).to eq([:static, 'some text']) end it 'should parse a text line with a tag at the end' do sample_text = 'some text<some_tag>' result = Engine.parse(sample_text) - # Expectation: an array with two couples: + # Expectation: an array with two couples: # [:static, some text] [dynamic, 'some_tag'] expect(result).to have(2).items expect(result[0]).to eq([:static, 'some text']) expect(result[1]).to eq([:dynamic, 'some_tag']) end @@ -194,11 +194,11 @@ # Case of an empty template instance = Engine.new '' expect(instance.source).to be_empty end - + it 'should accept conditional section' do expect { Engine.new sophisticated_template }.not_to raise_error instance = Engine.new sophisticated_template elements = instance.instance_variable_get(:@representation) sections = elements.select { |e| e.is_a?(Section) } @@ -218,44 +218,44 @@ text_w_empty_arg = sample_template.sub(/userid/, 'user%id') msg = "The invalid sign '%' occurs in the argument 'user%id'." expect { Engine.new text_w_empty_arg }.to raise_error( Macros4Cuke::InvalidCharError, msg) end - + it 'should complain when a section has no closing tag' do # Removing an end of section tag... text_w_open_section = sophisticated_template.sub(/<\/address>/, '') error_message = 'Unterminated section <?address>.' expect { Engine.new text_w_open_section }.to raise_error( StandardError, error_message) end - + it 'should complain when a closing tag has no corresponding opening tag' do # Replacing an end of section tag by another... text_w_wrong_end = sophisticated_template.sub(/<\/address>/, '</foobar>') msg = "End of section</foobar> doesn't match current section 'address'." expect { Engine.new text_w_wrong_end }.to raise_error( StandardError, msg) end - + it 'should complain when a closing tag is found without opening tag' do # Replacing an end of section tag by another... wrong_end = sophisticated_template.sub(/<\?birthdate>/, '</foobar>') msg = 'End of section</foobar> found'\ ' while no corresponding section is open.' expect { Engine.new wrong_end }.to raise_error(StandardError, msg) - end - + end + end # context context 'Provided services:' do it 'should know the variable(s) it contains' do # Case using the sample template - expect(subject.variables).to be == %w[userid password] + expect(subject.variables).to be == %w(userid password) # Case of an empty source template text instance = Engine.new '' expect(instance.variables).to be_empty end @@ -300,17 +300,17 @@ # Case of an empty source template text instance = Engine.new '' expect(instance.render(nil, {})).to be_empty end - - + + it 'should render conditional sections' do instance = Engine.new(sophisticated_template) - - locals = { - 'firstname' => 'Anon', + + locals = { + 'firstname' => 'Anon', 'lastname' => 'Eemoos' , 'birthdate' => '1976-04-21' } rendered_text = instance.render(Object.new, locals) expected = <<-SNIPPET @@ -319,25 +319,25 @@ And I fill in "birthdate" with "1976-04-21" And I click "Register" SNIPPET expect(rendered_text).to eq(expected) - + # Redo with another context locals['birthdate'] = nil locals['address'] = '122, Mercer Street' - + rendered_text = instance.render(Object.new, locals) expected = <<-SNIPPET When I fill in "firstname" with "Anon" And I fill in "lastname" with "Eemoos" And I fill in "address" with "122, Mercer Street" And I click "Register" SNIPPET expect(rendered_text).to eq(expected) end - + it 'should render multivalued actuals' do locals = { 'userid' => %w(johndoe yeti) } # Silly case rendered_text = subject.render(Object.new, locals)