예제 #1
0
def test_jsonparse_scalar_with_key():
    """Json with a root scalar works with out key."""
    context = Context({'ok1': 'ov1', 'jsonParse': {'json': '1', 'key': 'out'}})

    jsonparse.run_step(context)

    assert context['out'] == 1
예제 #2
0
def test_jsonparse_no_jsonparse_raises():
    """No jsonparse input raises."""
    context = Context({'k1': 'v1'})

    with pytest.raises(KeyNotInContextError) as err_info:
        jsonparse.run_step(context)

    assert str(err_info.value) == ("context['jsonParse'] "
                                   "doesn't exist. It must exist for "
                                   "pypyr.steps.jsonparse.")
예제 #3
0
def test_jsonparse_no_json_raises():
    """No json raises."""
    context = Context({'jsonParse': {'a': 'b'}})

    with pytest.raises(KeyNotInContextError) as err_info:
        jsonparse.run_step(context)

    assert str(err_info.value) == (
        "context['jsonParse']['json'] doesn't exist. It must exist for "
        "pypyr.steps.jsonparse.")
예제 #4
0
def test_jsonparse_scalar_with_key_empty():
    """Json with a root scalar works with out key and empty value."""
    context = Context({'ok1': 'ov1', 'jsonParse': {'json': '', 'key': 'out'}})

    with pytest.raises(KeyInContextHasNoValueError) as err_info:
        jsonparse.run_step(context)

    assert str(err_info.value) == (
        'jsonParse.json exists but is empty. It should be a valid json '
        'string for pypyr.steps.jsonparse. For example: '
        '\'{"key1": "value1", "key2": "value2"}\'')
예제 #5
0
def test_jsonparse_scalar_no_key_fails():
    """Json describing a scalar rather than a dict should fail if no outkey."""
    context = Context({'ok1': 'ov1', 'jsonParse': {'json': '1'}})

    with pytest.raises(TypeError) as err_info:
        jsonparse.run_step(context)

    assert str(err_info.value) == (
        'json input should describe an object at the top level when '
        'jsonParse.key isn\'t specified. You should have something like '
        '\'{"key1": "value1", "key2": "value2"}\' in the json top-level, not '
        '["value1", "value2"]')
예제 #6
0
def test_jsonparse_scalar_with_key_null():
    """Json with a root scalar works with out key and null value."""
    context = Context({
        'ok1': 'ov1',
        'jsonParse': {
            'json': 'null',
            'key': 'out'
        }
    })

    jsonparse.run_step(context)

    assert context['out'] is None
예제 #7
0
def test_jsonparse_list_with_key():
    """Json with a root list works with out key."""
    context = Context({
        'ok1': 'ov1',
        'jsonParse': {
            'json': '[1, 2, 3]',
            'key': 'out'
        }
    })

    jsonparse.run_step(context)

    assert context['out'] == [1, 2, 3]
예제 #8
0
def test_jsonparse_map_with_key():
    """Json with a root mapping works with out key."""
    context = Context({
        'ok1': 'ov1',
        'jsonParse': {
            'json': SicString('{"a": "b", "c": "d"}'),
            'key': 'out'
        }
    })

    jsonparse.run_step(context)

    assert context['out'] == {'a': 'b', 'c': 'd'}
예제 #9
0
def test_jsonparse_with_formatting():
    """Json with a root scalar works with out key."""
    context = Context({
        'k1': 'out',
        'k2': '{"a": "b", "c": "d"}',
        'jsonParse': {
            'json': '{k2:ff}',
            'key': '{k1}'
        }
    })

    jsonparse.run_step(context)

    assert context['out'] == {'a': 'b', 'c': 'd'}
예제 #10
0
def test_jsonparse_map_no_key():
    """Json with a root mapping works with no key."""
    context = Context({
        'ok1': 'ov1',
        'jsonParse': {
            'json': SicString('{"a": "b", "c": "d"}')
        }
    })

    jsonparse.run_step(context)

    assert context == {
        'ok1': 'ov1',
        'jsonParse': {
            'json': SicString('{"a": "b", "c": "d"}')
        },
        'a': 'b',
        'c': 'd'
    }