def fileSource(path): """Read a file containing a CoreJet XML document """ catalogue = RequirementsCatalogue() with open(path) as stream: catalogue.populate(stream) return catalogue
def fileSource(path): """Read a file containing a CoreJet XML document """ catalogue = RequirementsCatalogue() with open(path) as stream: catalogue.populate(stream) return catalogue
class Scenario(Scenario): @given(u"A requirements catalogue file extracted with requirements") def given(self): with open(os.path.join(self.tmpdir, 'input.xml'), 'w') as f: f.write("""\ <requirementscatalogue project="Test project" extractTime="2011-01-02T12:01:00"> <epic id="E1" title="First epic"> <story id="S1" title="First story" points="3" requirementStatus="open" priority="high"> <given>some background</given> <given>more background</given> <scenario name="First scenario"> <given>something</given> <when>something happens</when> <then>do something</then> <then>and something else</then> </scenario> <scenario name="Second scenario"> <given>something</given> <when>something happens</when> <then>do something</then> <then>and something else</then> </scenario> </story> <story id="S2" title="Second story" points="3" requirementStatus="closed" requirementResolution="fixed" priority="high"/> </epic> <epic id="E2" title="Second epic"/> </requirementscatalogue> """) @when(u"The populate() method is called") def when(self): from corejet.core.model import RequirementsCatalogue self.catalogue = RequirementsCatalogue() with open(os.path.join(self.tmpdir, 'input.xml'), 'r') as f: self.catalogue.populate(f) @then(u"A minimal requirements catalogue is built") def then(self): self.assertEqual(len(self.catalogue.epics), 2) self.assertEqual(len(self.catalogue.epics[0].stories), 2) self.assertEqual(len(self.catalogue.epics[1].stories), 0) self.assertEqual(len(self.catalogue.epics[0].stories[0].givens), 2) self.assertEqual(self.catalogue.epics[0].stories[0].givens[0].text, "some background") self.assertEqual(self.catalogue.epics[0].stories[0].givens[1].text, "more background") self.assertEqual(len(self.catalogue.epics[0].stories[1].givens), 0)
class MinimalInput(Scenario): @given("A minimal requirements catalogue file") def create(self): with open(os.path.join(self.tmpdir, 'input.xml'), 'w') as f: f.write("""\ <requirementscatalogue /> """) @when("The populate() method is called") def serialize(self): from corejet.core.model import RequirementsCatalogue self.catalogue = RequirementsCatalogue() with open(os.path.join(self.tmpdir, 'input.xml'), 'r') as f: self.catalogue.populate(f) @then("A minimal requirements catalogue is built") def checkInput(self): self.assertEqual(self.catalogue.extractTime, None) self.assertEqual(self.catalogue.testTime, None) self.assertEqual(self.catalogue.project, None) self.assertEqual(self.catalogue.epics, [])
class MinimalInput(Scenario): @given("A minimal requirements catalogue file") def create(self): with open(os.path.join(self.tmpdir, 'input.xml'), 'w') as f: f.write("""\ <requirementscatalogue /> """) @when("The populate() method is called") def serialize(self): from corejet.core.model import RequirementsCatalogue self.catalogue = RequirementsCatalogue() with open(os.path.join(self.tmpdir, 'input.xml'), 'r') as f: self.catalogue.populate(f) @then("A minimal requirements catalogue is built") def checkInput(self): self.assertEqual(self.catalogue.extractTime, None) self.assertEqual(self.catalogue.testTime, None) self.assertEqual(self.catalogue.project, None) self.assertEqual(self.catalogue.epics, [])
class RequirementsExtract(Scenario): @given("A requirements catalogue file extracted with requirements") def create(self): with open(os.path.join(self.tmpdir, 'input.xml'), 'w') as f: f.write("""\ <requirementscatalogue project="Test project" extractTime="2011-01-02T12:01:00"> <epic id="E1" title="First epic"> <story id="S1" title="First story" points="3" requirementStatus="open" priority="high"> <scenario name="First scenario"> <given>something</given> <when>something happens</when> <then>do something</then> <then>and something else</then> </scenario> <scenario name="Second scenario"> <given>something</given> <when>something happens</when> <then>do something</then> <then>and something else</then> </scenario> </story> <story id="S2" title="Second story" points="3" requirementStatus="closed" requirementResolution="fixed" priority="high"/> </epic> <epic id="E2" title="Second epic"/> </requirementscatalogue> """) @when("The populate() method is called") def serialize(self): from corejet.core.model import RequirementsCatalogue self.catalogue = RequirementsCatalogue() with open(os.path.join(self.tmpdir, 'input.xml'), 'r') as f: self.catalogue.populate(f) @then("A minimal requirements catalogue is built") def checkInput(self): self.assertEqual(self.catalogue.extractTime, datetime.datetime(2011, 1, 2, 12, 1, 0)) self.assertEqual(self.catalogue.testTime, None) self.assertEqual(self.catalogue.project, "Test project") self.assertEqual(len(self.catalogue.epics), 2) self.assertEqual(self.catalogue.epics[0].name, "E1") self.assertEqual(self.catalogue.epics[0].title, "First epic") self.assertEqual(len(self.catalogue.epics[0].stories), 2) self.assertEqual(self.catalogue.epics[1].name, "E2") self.assertEqual(self.catalogue.epics[1].title, "Second epic") self.assertEqual(len(self.catalogue.epics[1].stories), 0) self.assertEqual(self.catalogue.epics[0].stories[0].name, "S1") self.assertEqual(self.catalogue.epics[0].stories[0].title, "First story") self.assertEqual(self.catalogue.epics[0].stories[0].points, 3) self.assertEqual(self.catalogue.epics[0].stories[0].status, "open") self.assertEqual(self.catalogue.epics[0].stories[0].resolution, None) self.assertEqual(self.catalogue.epics[0].stories[0].priority, "high") self.assertEqual(len(self.catalogue.epics[0].stories[0].scenarios), 2) self.assertEqual(self.catalogue.epics[0].stories[1].name, "S2") self.assertEqual(self.catalogue.epics[0].stories[1].title, "Second story") self.assertEqual(self.catalogue.epics[0].stories[1].points, 3) self.assertEqual(self.catalogue.epics[0].stories[1].status, "closed") self.assertEqual(self.catalogue.epics[0].stories[1].resolution, "fixed") self.assertEqual(self.catalogue.epics[0].stories[1].priority, "high") self.assertEqual(len(self.catalogue.epics[0].stories[1].scenarios), 0) self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[0].name, "First scenario") self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[0].status, None) self.assertEqual( len(self.catalogue.epics[0].stories[0].scenarios[0].givens), 1) self.assertEqual( len(self.catalogue.epics[0].stories[0].scenarios[0].whens), 1) self.assertEqual( len(self.catalogue.epics[0].stories[0].scenarios[0].thens), 2) self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[1].name, "Second scenario") self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[1].status, None) self.assertEqual( len(self.catalogue.epics[0].stories[0].scenarios[1].givens), 1) self.assertEqual( len(self.catalogue.epics[0].stories[0].scenarios[1].whens), 1) self.assertEqual( len(self.catalogue.epics[0].stories[0].scenarios[1].thens), 2) self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[0].givens[0].text, "something") self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[0].whens[0].text, "something happens") self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[0].thens[0].text, "do something") self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[0].thens[1].text, "and something else") self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[1].givens[0].text, "something") self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[1].whens[0].text, "something happens") self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[1].thens[0].text, "do something") self.assertEqual( self.catalogue.epics[0].stories[0].scenarios[1].thens[1].text, "and something else")
class RequirementsExtract(Scenario): @given("A requirements catalogue file extracted with requirements") def create(self): with open(os.path.join(self.tmpdir, 'input.xml'), 'w') as f: f.write("""\ <requirementscatalogue project="Test project" extractTime="2011-01-02T12:01:00"> <epic id="E1" title="First epic"> <story id="S1" title="First story" points="3" requirementStatus="open" priority="high"> <scenario name="First scenario"> <given>something</given> <when>something happens</when> <then>do something</then> <then>and something else</then> </scenario> <scenario name="Second scenario"> <given>something</given> <when>something happens</when> <then>do something</then> <then>and something else</then> </scenario> </story> <story id="S2" title="Second story" points="3" requirementStatus="closed" requirementResolution="fixed" priority="high"/> </epic> <epic id="E2" title="Second epic"/> </requirementscatalogue> """) @when("The populate() method is called") def serialize(self): from corejet.core.model import RequirementsCatalogue self.catalogue = RequirementsCatalogue() with open(os.path.join(self.tmpdir, 'input.xml'), 'r') as f: self.catalogue.populate(f) @then("A minimal requirements catalogue is built") def checkInput(self): self.assertEqual(self.catalogue.extractTime, datetime.datetime(2011, 1, 2, 12, 1, 0)) self.assertEqual(self.catalogue.testTime, None) self.assertEqual(self.catalogue.project, "Test project") self.assertEqual(len(self.catalogue.epics), 2) self.assertEqual(self.catalogue.epics[0].name, "E1") self.assertEqual(self.catalogue.epics[0].title, "First epic") self.assertEqual(len(self.catalogue.epics[0].stories), 2) self.assertEqual(self.catalogue.epics[1].name, "E2") self.assertEqual(self.catalogue.epics[1].title, "Second epic") self.assertEqual(len(self.catalogue.epics[1].stories), 0) self.assertEqual(self.catalogue.epics[0].stories[0].name, "S1") self.assertEqual(self.catalogue.epics[0].stories[0].title, "First story") self.assertEqual(self.catalogue.epics[0].stories[0].points, 3) self.assertEqual(self.catalogue.epics[0].stories[0].status, "open") self.assertEqual(self.catalogue.epics[0].stories[0].resolution, None) self.assertEqual(self.catalogue.epics[0].stories[0].priority, "high") self.assertEqual(len(self.catalogue.epics[0].stories[0].scenarios), 2) self.assertEqual(self.catalogue.epics[0].stories[1].name, "S2") self.assertEqual(self.catalogue.epics[0].stories[1].title, "Second story") self.assertEqual(self.catalogue.epics[0].stories[1].points, 3) self.assertEqual(self.catalogue.epics[0].stories[1].status, "closed") self.assertEqual(self.catalogue.epics[0].stories[1].resolution, "fixed") self.assertEqual(self.catalogue.epics[0].stories[1].priority, "high") self.assertEqual(len(self.catalogue.epics[0].stories[1].scenarios), 0) self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[0].name, "First scenario") self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[0].status, None) self.assertEqual(len(self.catalogue.epics[0].stories[0].scenarios[0].givens), 1) self.assertEqual(len(self.catalogue.epics[0].stories[0].scenarios[0].whens), 1) self.assertEqual(len(self.catalogue.epics[0].stories[0].scenarios[0].thens), 2) self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[1].name, "Second scenario") self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[1].status, None) self.assertEqual(len(self.catalogue.epics[0].stories[0].scenarios[1].givens), 1) self.assertEqual(len(self.catalogue.epics[0].stories[0].scenarios[1].whens), 1) self.assertEqual(len(self.catalogue.epics[0].stories[0].scenarios[1].thens), 2) self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[0].givens[0].text, "something") self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[0].whens[0].text, "something happens") self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[0].thens[0].text, "do something") self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[0].thens[1].text, "and something else") self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[1].givens[0].text, "something") self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[1].whens[0].text, "something happens") self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[1].thens[0].text, "do something") self.assertEqual(self.catalogue.epics[0].stories[0].scenarios[1].thens[1].text, "and something else")