Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
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)
Esempio n. 4
0
 def after_parse(self):
     Scenario.after_parse(self)
     self.build_scenarios()
Esempio n. 5
0
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)