def test_scenario_after_parse_hook(self): """ Test scenario after parse hook """ step_1 = Mock(state=Step.State.UNTESTED, id=1) step_2 = Mock(state=Step.State.UNTESTED, id=2) step_3 = Mock(state=Step.State.UNTESTED, id=3) scenario = Scenario(1, "Scenario", "Some scenario", None, None, None) scenario.steps.extend([step_1, step_2, step_3]) step_1.parent = scenario step_2.parent = scenario step_3.parent = scenario scenario.all_steps.should.have.length_of(3) scenario.all_steps[0].should.be.equal(step_1) scenario.all_steps[1].should.be.equal(step_2) scenario.all_steps[2].should.be.equal(step_3) scenario_precond = Scenario(2, "Scenario", "Some precond scenario", None, None, None) precond_step_1 = Mock(state=Step.State.UNTESTED, id=1) precond_step_2 = Mock(state=Step.State.UNTESTED, id=2) scenario_precond.steps.extend([precond_step_1, precond_step_2]) precond_step_1.parent = scenario_precond precond_step_2.parent = scenario_precond scenario.preconditions.append(scenario_precond) # check before 'after_parse': step id and parent should be wrong scenario.all_steps[0].id.should.be.equal(1) scenario.all_steps[1].id.should.be.equal(2) scenario.all_steps[2].id.should.be.equal(1) scenario.all_steps[3].id.should.be.equal(2) scenario.all_steps[4].id.should.be.equal(3) scenario.all_steps[0].parent.should.be.equal(scenario_precond) scenario.all_steps[1].parent.should.be.equal(scenario_precond) scenario.all_steps[2].parent.should.be.equal(scenario) scenario.all_steps[3].parent.should.be.equal(scenario) scenario.all_steps[4].parent.should.be.equal(scenario) scenario.after_parse() scenario.all_steps[0].id.should.be.equal(1) scenario.all_steps[1].id.should.be.equal(2) scenario.all_steps[2].id.should.be.equal(3) scenario.all_steps[3].id.should.be.equal(4) scenario.all_steps[4].id.should.be.equal(5) scenario.all_steps[0].parent.should.be.equal(scenario) scenario.all_steps[1].parent.should.be.equal(scenario) scenario.all_steps[2].parent.should.be.equal(scenario) scenario.all_steps[3].parent.should.be.equal(scenario) scenario.all_steps[4].parent.should.be.equal(scenario)
def test_scenario_after_parse_logic(mocker): """ Test logic which is used to complete the parsing of Scenario """ # given background = Background(1, "Background", "I am a Background", "foo.feature", 1) precondition_scenario = Scenario(2, "Scenario", "I am a Scenario", "foo.feature", 1, parent=None) scenario = Scenario( 1, "Scenario", "I am a Scenario", "foo.feature", 1, parent=None, tags=None, preconditions=[precondition_scenario], background=background, ) # add Steps to this Scenario scenario.steps.extend( [mocker.MagicMock(id=99, as_background=False, as_precondition=False)]) # set Scenario Step parents for step in scenario.steps: step.parent = scenario # add Steps to the Background background.steps.extend([ mocker.MagicMock(id=5, as_background=False, as_precondition=False), mocker.MagicMock(id=6, as_background=False, as_precondition=False), mocker.MagicMock(id=66, as_background=False, as_precondition=False), ]) # set Background Step parents for background_step in background.steps: background_step.parent = background # add Steps to the precondition Scenario precondition_scenario.steps.extend([ mocker.MagicMock(id=5, as_background=False, as_precondition=False), mocker.MagicMock(id=77, as_background=False, as_precondition=False), ]) # set Precondition Scenario Step parents for step in precondition_scenario.steps: step.parent = precondition_scenario # when after_parse() was not called it's not completed assert scenario.complete is False # when scenario.after_parse() steps = scenario.all_steps # then - the Scenario is completed assert scenario.complete is True # then - the step id's are in valid order assert steps[0].id == 1 assert steps[1].id == 2 assert steps[2].id == 3 assert steps[3].id == 4 assert steps[4].id == 5 assert steps[5].id == 6 # then - check as_background flags assert all(step.as_background for step in background.steps) # then - check as_precondition flags assert all(step.as_precondition for step in precondition_scenario.steps)
def after_parse(self): Scenario.after_parse(self) self.build_scenarios()
def test_scenario_after_parse_logic(mocker): """ Test logic which is used to complete the parsing of Scenario """ # given background = Background(1, "Background", "I am a Background", "foo.feature", 1) precondition_scenario = Scenario( 2, "Scenario", "I am a Scenario", "foo.feature", 1, parent=None ) scenario = Scenario( 1, "Scenario", "I am a Scenario", "foo.feature", 1, parent=None, tags=None, preconditions=[precondition_scenario], background=background, ) # add Steps to this Scenario scenario.steps.extend( [mocker.MagicMock(id=99, as_background=False, as_precondition=False)] ) # set Scenario Step parents for step in scenario.steps: step.parent = scenario # add Steps to the Background background.steps.extend( [ mocker.MagicMock(id=5, as_background=False, as_precondition=False), mocker.MagicMock(id=6, as_background=False, as_precondition=False), mocker.MagicMock(id=66, as_background=False, as_precondition=False), ] ) # set Background Step parents for background_step in background.steps: background_step.parent = background # add Steps to the precondition Scenario precondition_scenario.steps.extend( [ mocker.MagicMock(id=5, as_background=False, as_precondition=False), mocker.MagicMock(id=77, as_background=False, as_precondition=False), ] ) # set Precondition Scenario Step parents for step in precondition_scenario.steps: step.parent = precondition_scenario # when after_parse() was not called it's not completed assert scenario.complete is False # when scenario.after_parse() steps = scenario.all_steps # then - the Scenario is completed assert scenario.complete is True # then - the step id's are in valid order assert steps[0].id == 1 assert steps[1].id == 2 assert steps[2].id == 3 assert steps[3].id == 4 assert steps[4].id == 5 assert steps[5].id == 6 # then - check as_background flags assert all(step.as_background for step in background.steps) # then - check as_precondition flags assert all(step.as_precondition for step in precondition_scenario.steps)