예제 #1
0
def test_multiple_alternatives():
    inp = {"c": 0}
    op = alternative(keep(["a"]), keep(["b"]), keep(["c"]))

    (res, err) = op(inp)

    assert res == {"c": 0}
    assert err is None
예제 #2
0
def test_empty():
    inp = None
    op = alternative(keep(["a"]), keep(["b"]))

    (res, err) = op(inp)

    assert res is None
    assert err == {"b": "b not found"}
예제 #3
0
def test_some_value():
    inp = {"field1": True}
    op = keep(["field1"])
    (res, err) = op(inp)

    assert res == {"field1": True}
    assert err is None
예제 #4
0
def test_reader_csv_some_working():
    operation = sequential(csv_to_map(["who"]), keep(fields=["who"]))
    (transformed_output, transformed_error) = operation('"anciano"\r\n')
    assert transformed_output is not None
    assert "who" in transformed_output
    assert transformed_output["who"] == "anciano"
    assert transformed_error is None
예제 #5
0
def test_multiple_fields():
    inp = {"field1": True, "field2": True, "field3": True, "field4": True}
    op = keep(["field1", "field2", "field3"])
    (res, err) = op(inp)

    assert err is None
    assert res == {"field1": True, "field2": True, "field3": True}
예제 #6
0
def test_empty():
    inp = None
    op = keep(["field1"])
    (res, err) = op(inp)

    assert res is None
    assert err == {'field1': 'field1 not found'}
예제 #7
0
def test_field_not_found():
    inp = {"field1": True}
    op = keep(["missing"])
    (res, err) = op(inp)

    assert res is None
    assert err == {'missing': 'missing not found'}
예제 #8
0
def test_writer_json_some_working():
    operation = sequential(keep(fields=["who"]), to_json)
    (transformed_output, transformed_error) = operation({"who": "anciano"})

    assert transformed_output is not None
    assert transformed_output == '{"who": "anciano"}'
    assert transformed_error is None
예제 #9
0
def etl():
    return sequential(
        csv_to_map([
            'date', 'file', 'date2', 'log', 'app', 'beat', 'front', 'is_log',
            'msg', 'offset', 'arch'
        ]), keep(["msg"]),
        append(['msg'], wrap(lambda x: dict(Counter(x.lower())))))
예제 #10
0
def test_one_alternative():
    inp = {"a": 0}
    op = alternative(keep(["a"]))

    (res, err) = op(inp)

    assert res == {"a": 0}
    assert err is None
예제 #11
0
def test_reader_csv_custom_params():
    the_csv = '"Nori";"Melon"'
    the_map = {"who": "Nori", "greet": "Melon"}

    operation = sequential(csv_to_map(["who", "greet"], delimiter=";"), keep(fields=["who", "greet"]))
    (transformed_output, transformed_error) = operation(the_csv)
    assert transformed_output == the_map
    assert transformed_error is None

    reverse_operation = map_to_csv(["who", "greet"], delimiter=";")
    (transformed_output, transformed_error) = reverse_operation(the_map)
    assert transformed_output == the_csv
    assert transformed_error is None
예제 #12
0
def test_writer_csv_multiples_lines():
    lines_in = [{
        "who": "Thorin"
    }, {
        "who": "Dwalin"
    }, {
        "who": "Balin"
    }, {
        "who": "Kíli"
    }, {
        "who": "Fíli"
    }, {
        "who": "Dori"
    }, {
        "who": "Nori"
    }, {
        "who": "Ori"
    }, {
        "who": "Óin"
    }, {
        "who": "Glóin"
    }, {
        "who": "Bifur"
    }, {
        "who": "Bofur"
    }, {
        "who": "Bombur"
    }]
    lines_out_expected = [
        '"Thorin"', '"Dwalin"', '"Balin"', '"Kíli"', '"Fíli"', '"Dori"',
        '"Nori"', '"Ori"', '"Óin"', '"Glóin"', '"Bifur"', '"Bofur"', '"Bombur"'
    ]

    operation = sequential(keep(fields=["who"]), map_to_csv(["who"]))

    lines_out = [operation(x)[0] for x in lines_in]

    assert lines_out_expected == lines_out
예제 #13
0
def test_writer_csv_some_working():
    operation = sequential(keep(fields=["who"]), map_to_csv(["who"]))
    (transformed_output, transformed_error) = operation({"who": "anciano"})
    assert transformed_output is not None
    assert transformed_output == '"anciano"'
    assert transformed_error is None
예제 #14
0
def test_writer_csv_empty():
    operation = sequential(keep(fields=["who"]), map_to_csv(["who"]))
    (transformed_output, transformed_error) = operation(None)
    assert transformed_output is None
    assert transformed_error == {'who': 'who not found'}
예제 #15
0
def etl():
    return sequential(
        csv_to_map([
            'date', 'file', 'date2', 'log', 'app', 'beat', 'front', 'is_log',
            'msg', 'offset', 'arch'
        ]), keep(["msg"]))
예제 #16
0
def test_reader_csv_empty():
    operation = sequential(csv_to_map(["who"]), keep(fields=["who"]))
    (transformed_output, transformed_error) = operation(None)
    assert transformed_output is None
    assert transformed_error == {'who': 'no input'}
예제 #17
0
def test_reader_json_empty():
    operation = sequential(from_json, keep(fields=["who"]))
    (transformed_output, transformed_error) = operation(None)
    assert transformed_output is None
    assert transformed_error == {'who': "Can't parse"}
예제 #18
0
def test_reader_json_some_working():
    operation = sequential(from_json, keep(fields=["who"]))
    (transformed_output, transformed_error) = operation('{"who": "anciano"}')
    assert "who" in transformed_output
    assert transformed_output["who"] == "anciano"
    assert transformed_error is None