Ejemplo n.º 1
0
def test_modify_simplified_item(json0, build_first, simplify_first):
    data = json0

    class User(Item):
        uid = Field(JSONExtractor("id"))
        username = Field(JSONExtractor("name"), name="name")
        gender = Field(JSONExtractor("gender"), default=None)

    complex_extractor = User(JSONExtractor("data.users[*]"))
    if not simplify_first and build_first:
        complex_extractor.build()
    extractor = complex_extractor.simplify()
    if simplify_first and build_first:
        extractor.build()
    assert complex_extractor.extractor.expr == extractor.expr
    extractor.expr = "data.users[0]"
    assert complex_extractor.extractor.expr != extractor.expr

    assert isinstance(extractor, JSONExtractor)
    assert is_simple_extractor(extractor)
    assert not is_complex_extractor(extractor)
    assert repr(extractor) == "UserSimplified('data.users[0]')"

    assert extractor.extract_first(data) == {
        "uid": 0,
        "name": "Vang Stout",
        "gender": "female",
    }
    assert extractor.extract(data) == [{
        "uid": 0,
        "name": "Vang Stout",
        "gender": "female"
    }]
Ejemplo n.º 2
0
def test_simplified_item_extractor_is_none(json0, build_first, simplify_first):
    data = json0["data"]["users"][0]

    class User(Item):
        uid = Field(JSONExtractor("id"))
        username = Field(JSONExtractor("name"), name="name")
        gender = Field(JSONExtractor("gender"), default=None)

    complex_extractor = User()
    if not simplify_first and build_first:
        complex_extractor.build()
    extractor = complex_extractor.simplify()
    if simplify_first and build_first:
        extractor.build()
    assert not isinstance(extractor, JSONExtractor)
    assert is_simple_extractor(extractor)
    assert not is_complex_extractor(extractor)
    assert repr(extractor) == "UserSimplified(None)"
    assert extractor.extract_first([data]) == {
        "uid": 0,
        "name": "Vang Stout",
        "gender": "female",
    }

    assert extractor.extract([data]) == [{
        "uid": 0,
        "name": "Vang Stout",
        "gender": "female"
    }]
Ejemplo n.º 3
0
def test_simplify(json0, build_first, simplify_first):
    data = json0

    class User(Item):
        uid = Field(JSONExtractor("id"))
        username = Field(JSONExtractor("name"), name="name")
        gender = Field(JSONExtractor("gender"), default=None)

    item = User(JSONExtractor("data.users[*]"))
    if not simplify_first and build_first:
        item.build()
    extractor = item.simplify()
    if simplify_first and build_first:
        extractor.build()
    users_result = [
        {"uid": 0, "name": "Vang Stout", "gender": "female"},
        {"uid": 1, "name": "Jeannie Gaines", "gender": "male"},
        {"uid": 2, "name": "Guzman Hunter", "gender": "female"},
        {"uid": 3, "name": "Janine Gross", "gender": None},
        {"uid": 4, "name": "Clarke Patrick", "gender": "male"},
        {"uid": 5, "name": "Whitney Mcfadden", "gender": None},
    ]
    assert isinstance(extractor, JSONExtractor)
    assert is_simple_extractor(extractor)
    assert not is_complex_extractor(extractor)
    assert repr(extractor) == "UserSimplified('data.users[*]')"
    assert extractor.expr == "data.users[*]"
    assert extractor.extract_first(data) == users_result[0]
    assert extractor.extract(data) == users_result
Ejemplo n.º 4
0
def test_is_not_simple_extractor(complex_extractor):
    assert not is_simple_extractor(complex_extractor)
Ejemplo n.º 5
0
def test_is_simple_extractor(simple_extractor):
    assert is_simple_extractor(simple_extractor)