Commit b06f5ab2 by Gabriel Falcao

first step on parsing backgrounds appropriately

parent b13cbb30
......@@ -987,8 +987,11 @@ class Feature(object):
if not re.search(self.language.background, joined):
return joined, None
parts = strings.split_wisely(joined, self.language.background)
parts = strings.split_wisely(
joined, "(%s):\s*" % self.language.background)
description = parts.pop(0)
if parts:
parts = "".join(parts[1:]).splitlines()
return description, parts
......@@ -1009,6 +1012,7 @@ class Feature(object):
if not re.search("^" + scenario_prefix, joined):
description, background_lines = self._extract_desc_and_bg(parts[0])
background = background_lines and Background.from_string(
background_lines,
self,
......
......@@ -19,6 +19,7 @@ from lettuce import step
from lettuce.core import Scenario
from lettuce.core import Feature
from lettuce.core import Background
from lettuce.core import HashList
from nose.tools import assert_equals
FEATURE1 = """
......@@ -629,3 +630,30 @@ def test_background_parsing():
)
expect(feature).to.have.property('background').being.a(Background)
expect(feature.background).to.have.property('steps')
expect(feature.background.steps).to.have.length_of(2)
step1, step2 = feature.background.steps
step1.sentence.should.equal(
'Given I have the following movies in my database:')
step1.hashes.should.equal(HashList(step1, [
{
u'Available': u'6',
u'Rating': u'4 stars',
u'Name': u'Matrix Revolutions',
u'New': u'no',
},
{
u'Available': u'11',
u'Rating': u'5 stars',
u'Name': u'Iron Man 2',
u'New': u'yes',
},
]))
step2.sentence.should.equal(
'And the following clients:')
step2.hashes.should.equal(HashList(step2, [
{u'Name': u'John Doe'},
{u'Name': u'Foo Bar'},
]))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment