예제 #1
0
def test_create_activity_instance_input_with_zero_or_empty_values(monkeypatch):
    """Test the creation of a context for an activity instance input.
    """
    @task.decorate()
    def task_a(value1, value2, value3, value4):
        pass

    activity_mock = MagicMock()
    activity_mock.name = 'activity'
    activity_mock.runner = runner.BaseRunner(
        task_a.fill(value1='zero',
                    value2='empty_list',
                    value3='empty_dict',
                    value4='none'))
    instance = activity.ActivityInstance(activity_mock,
                                         local_context=dict(zero=0,
                                                            empty_list=[],
                                                            empty_dict={},
                                                            none=None))

    resp = instance.create_execution_input()

    assert len(resp) == 6
    assert resp.get('zero') == 0
    assert resp.get('empty_list') == []
    assert resp.get('empty_dict') == {}
    assert 'none' not in resp
예제 #2
0
def test_create_activity_instance():
    """Test the creation of an activity instance.
    """

    activity_mock = MagicMock()
    activity_mock.name = 'foobar'
    activity_mock.retry = 20

    instance = activity.ActivityInstance(activity_mock)

    assert activity_mock.name == instance.activity_name
    assert activity_mock.retry == instance.retry
예제 #3
0
def test_create_activity_instance_input_without_runner(monkeypatch):
    """Test the creation of a context for an activity instance input without
    specifying a runner.
    """

    activity_mock = MagicMock()
    activity_mock.name = 'activity'
    activity_mock.runner = None
    context = dict(context='yes')
    instance = activity.ActivityInstance(activity_mock, context)

    with pytest.raises(runner.RunnerMissing):
        instance.create_execution_input()
예제 #4
0
def test_create_activity_instance_id_with_local_context(monkeypatch):
    """Test the creation of an activity instance id with the use of a local
    context.
    """

    monkeypatch.setattr(utils, 'create_dictionary_key', MagicMock())

    activity_mock = MagicMock()
    activity_mock.name = 'activity'
    instance = activity.ActivityInstance(activity_mock, dict(foobar='yes'))

    assert instance.id.startswith(activity_mock.name)
    assert utils.create_dictionary_key.called
예제 #5
0
def test_create_activity_instance_id(monkeypatch):
    """Test the creation of an activity instance id.
    """

    monkeypatch.setattr(utils, 'create_dictionary_key', MagicMock())

    activity_mock = MagicMock()
    activity_mock.name = 'activity'
    instance = activity.ActivityInstance(activity_mock)

    # No context was passed, so create_dictionary key didn't need to be
    # called.
    assert instance.id == activity_mock.name + '-1'
    assert not utils.create_dictionary_key.called
예제 #6
0
def test_create_activity_instance_input_without_decorate(monkeypatch):
    """Test the creation of a context input without the use of a decorator.
    """
    def task_a(value):
        pass

    activity_mock = MagicMock()
    activity_mock.name = 'activity'
    context = dict(foo='bar')
    local_context = dict(context='yes')

    activity_mock.runner = runner.BaseRunner(task_a)
    instance = activity.ActivityInstance(activity_mock,
                                         local_context=local_context,
                                         execution_context=context)

    resp = instance.create_execution_input()
    assert resp.get('foo') == 'bar'
    assert resp.get('context') == 'yes'
예제 #7
0
def test_create_activity_instance_input(monkeypatch):
    """Test the creation of a context for an activity instance input.
    """
    @task.decorate()
    def task_a(value):
        pass

    activity_mock = MagicMock()
    activity_mock.name = 'activity'
    activity_mock.runner = runner.BaseRunner(task_a.fill(value='context'))
    instance = activity.ActivityInstance(
        activity_mock,
        local_context=dict(context='yes', unused='no'),
        execution_context=dict(somemore='values'))
    resp = instance.create_execution_input()

    assert len(resp) == 2
    assert resp.get('context') == 'yes'
    assert resp.get('somemore') == 'values'