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)