Ejemplo n.º 1
0
def test_qop_elemMatch_3(monty_find, mongo_find):
    docs = [
        {
            "a": [{
                "b": [10, 11]
            }, {
                "b": 2
            }]
        },
        {
            "a": [{
                "b": [20, 21]
            }, {
                "b": 4
            }]
        },
    ]
    spec = {"a.0": {"$elemMatch": {"b": {"$gt": 20}}}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a.0").get().value == [{"b": [10, 11]}]
    assert FieldWalker(docs[1]).go("a.0").get().value == [{"b": [20, 21]}]
    assert mongo_c.count() == 0
    assert monty_c.count() == mongo_c.count()
Ejemplo n.º 2
0
def test_qop_eq_5(monty_find, mongo_find):
    docs = [
        {
            "a": [2, 1]
        },
        {
            "a": [1, 2]
        },
        {
            "a": [[2, 1], 3]
        },
        {
            "a": [[1, 2], 3]
        },
    ]
    spec = {"a": {"$eq": [2, 1]}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a").get().value == [2, 1, [2, 1]]
    assert FieldWalker(docs[2]).go("a").get().value == [[2, 1], 3, [[2, 1], 3]]
    assert mongo_c.count() == 2
    assert monty_c.count() == mongo_c.count()
    for i in range(2):
        assert next(mongo_c) == next(monty_c)
Ejemplo n.º 3
0
def test_fieldwalker_value_get_4():
    # array value
    doc = {"a": [1]}
    path = "a"
    value = [1, [1]]
    field_value = FieldWalker(doc).go(path).get().value
    assert list(field_value.iter_full()) == value
Ejemplo n.º 4
0
def test_qop_elemMatch_4(monty_find, mongo_find):
    docs = [
        {
            "a": [{
                "b": 1
            }, {
                "b": 2
            }]
        },
        {
            "a": [{
                "b": 3
            }, {
                "b": 4
            }]
        },
    ]
    spec = {"a.0.b": {"$elemMatch": {"$eq": 1}}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a.0.b").get().value == [1]
    assert FieldWalker(docs[1]).go("a.0.b").get().value == [3]
    assert mongo_c.count() == 0
    assert monty_c.count() == mongo_c.count()
Ejemplo n.º 5
0
def test_fieldwalker_value_get_19():
    doc = {"a": [{"b": [0, {"c": [1, "x"]}]},
                 {"b": [2, {"c": [3, "y"]}]},
                 {"b": [4, {"c": [5, "z"]}]}]}
    path = "a.b.1.c"
    value = [1, "x", [1, "x"], 3, "y", [3, "y"], 5, "z", [5, "z"]]
    field_value = FieldWalker(doc).go(path).get().value
    assert list(field_value.iter_full()) == value
Ejemplo n.º 6
0
def test_fieldwalker_value_set_7():
    doc = {"a": [{"b": 0}, {"b": 1}]}
    path = "a.b"
    value = 10

    fieldwalker = FieldWalker(doc)
    with fieldwalker.go(path):
        with pytest.raises(FieldWriteError):
            fieldwalker.set(value)
Ejemplo n.º 7
0
def test_fieldwalker_value_set_2():
    doc = {"a": {"b": 1}}
    path = "a.b"
    value = 10

    fieldwalker = FieldWalker(doc)
    with fieldwalker.go(path):
        fieldwalker.set(value)
    assert doc == {"a": {"b": 10}}
Ejemplo n.º 8
0
def test_fieldwalker_value_set_3():
    doc = {"a": [1, 2, 3]}
    path = "a.1"
    value = 20

    fieldwalker = FieldWalker(doc)
    with fieldwalker.go(path):
        fieldwalker.set(value)
    assert doc == {"a": [1, 20, 3]}
Ejemplo n.º 9
0
def test_fieldwalker_value_set_6():
    doc = {"a": [1]}
    path = "a.2.b"
    value = 20

    fieldwalker = FieldWalker(doc)
    with fieldwalker.go(path):
        fieldwalker.set(value)
    assert doc == {"a": [1, None, {"b": 20}]}
Ejemplo n.º 10
0
def test_fieldwalker_clean_result_1():
    doc = {"a": 5, "b": 8}

    fieldwalker = FieldWalker(doc)

    with fieldwalker:
        fieldwalker.go("b").get()
        fieldwalker.go("a").get()

        assert fieldwalker.value == [5]
Ejemplo n.º 11
0
def test_fieldwalker_value_set_1():
    # single value
    doc = {"a": 1}
    path = "a"
    value = 10

    fieldwalker = FieldWalker(doc)
    with fieldwalker.go(path):
        fieldwalker.set(value)
    assert doc == {"a": 10}
Ejemplo n.º 12
0
def test_fieldwalker_value_set_4():
    doc = {"a": [1, 2, 3]}
    path = "a.5"
    value = 9

    fieldwalker = FieldWalker(doc)
    with fieldwalker.go(path):
        fieldwalker.set(value)
        assert doc == {"a": [1, 2, 3]}
    assert doc == {"a": [1, 2, 3, None, None, 9]}
Ejemplo n.º 13
0
def test_fieldwalker_value_set_8():
    doc = {}

    fieldwalker = FieldWalker(doc)
    with fieldwalker:
        fieldwalker.go("a.b")
        fieldwalker.set(1)
        fieldwalker.go("a")
        with pytest.raises(FieldWriteError):
            fieldwalker.set(2)
Ejemplo n.º 14
0
def test_fieldwalker_value_set_5():
    doc = {}

    fieldwalker = FieldWalker(doc)
    with fieldwalker:
        fieldwalker.go("a.b")
        fieldwalker.set(10)
        fieldwalker.go("c")
        fieldwalker.set(99)
        assert doc == {}
    assert doc == {"a": {"b": 10}, "c": 99}
Ejemplo n.º 15
0
def test_qop_all_4(monty_find, mongo_find):
    docs = [{"a": [3, 1, 2]}, {"a": [3, 2]}]
    spec = {"a": {"$all": [2, 3]}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a").get().value == [3, 1, 2, [3, 1, 2]]
    assert FieldWalker(docs[1]).go("a").get().value == [3, 2, [3, 2]]
    assert mongo_c.count() == 2
    assert monty_c.count() == mongo_c.count()
    for i in range(2):
        assert next(mongo_c) == next(monty_c)
Ejemplo n.º 16
0
def test_fieldwalker_value_get_20():
    doc = {"a": [{"b": [{"c": [0, {"d": [1, "x"]}]},
                        {"c": [2, {"d": [3, "y"]}]},
                        {"c": [4, {"d": [5, "z"]}]}]},
                 {"b": [{"c": [10, {"d": [11, "i"]}]},
                        {"c": [12, {"d": [13, "j"]}]},
                        {"c": [14, {"d": [15, "k"]}]}]}
                 ]}
    path = "a.b.c.1.d"
    value = [
        1, "x", [1, "x"], 3, "y", [3, "y"], 5, "z", [5, "z"],
        11, "i", [11, "i"], 13, "j", [13, "j"], 15, "k", [15, "k"]
    ]
    field_value = FieldWalker(doc).go(path).get().value
    assert list(field_value.iter_full()) == value
Ejemplo n.º 17
0
def test_qop_gt_13(monty_find, mongo_find):
    oid_0 = ObjectId(b"000000000000")
    max_k = MaxKey()
    min_k = MinKey()
    docs = [
        {
            "a": oid_0
        },
        {
            "a": max_k
        },
        {
            "a": min_k
        },
        {
            "a": 55
        },
    ]
    spec = {"a": {"$gt": max_k}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[1]).go("a").get().value == [max_k]
    assert mongo_c.count() == 3
    assert monty_c.count() == mongo_c.count()
    for i in range(3):
        assert next(mongo_c) == next(monty_c)
Ejemplo n.º 18
0
def test_fieldwalker_value_get_22():
    # array opsitioned and embedded documents and digit-str field
    doc = {"a": [{"b": [0, {"c": 1}, {"1": 99}]},
                 {"b": [2, {"c": 3}]}]}
    path = "a.b.1.c"
    value = [1, 3]
    assert FieldWalker(doc).go(path).get().value == value
Ejemplo n.º 19
0
def test_fieldwalker_value_get_27():
    doc = {
        "a": [{
            "b": [{
                "c": [{
                    "0": [{
                        "d": [0, 1]
                    }]
                }, {
                    "d": [1]
                }]
            }, {
                "c": [{
                    "0": [{
                        "d": [0, 2]
                    }]
                }, {
                    "d": [3, "y"]
                }]
            }, {
                "c": [{
                    "d": [5, "z"]
                }, {
                    "0": [{
                        "d": [0, 3]
                    }]
                }]
            }]
        }, {
            "b": [{
                "c": [{
                    "0": [{
                        "d": [0, 4]
                    }]
                }, {
                    "d": [11, "i"]
                }]
            }, {
                "c": [{
                    "0": [{
                        "d": [0, 5]
                    }]
                }, {
                    "d": [13, "j"]
                }]
            }, {
                "c": [{
                    "0": [{
                        "d": [0, 6]
                    }]
                }, {
                    "d": [15, "k"]
                }]
            }]
        }]
    }
    path = "a.b.c.0.d.1"
    value = [1, 2, 3, 4, 5, 6, "z"]
    fw = FieldWalker(doc).go(path).get()
    assert fw.value == value
Ejemplo n.º 20
0
def test_fieldwalker_value_get_25():
    doc = {
        "a": [{
            "b": [{
                "c": [0, {
                    "d": [1, "x"]
                }]
            }, {
                "X": [2, {
                    "d": [3, "y"]
                }]
            }, {
                "c": [4, {
                    "d": [5, "z"]
                }]
            }]
        }, {
            "b": [{
                "c": [10, {
                    "d": [11, "i"]
                }]
            }, {
                "c": [12, {
                    "d": [13, "j"]
                }]
            }, {
                "c": [14, {
                    "d": [15, "k"]
                }]
            }]
        }]
    }
    path = "a.b.c.1.d.1"
    value = ["x", "z", "i", "j", "k"]
    assert FieldWalker(doc).go(path).get().value == value
Ejemplo n.º 21
0
def test_qop_all_6(monty_find, mongo_find):
    docs = [
        {
            "a": [{
                "b": 1
            }, {
                "b": 2
            }]
        },
        {
            "a": [{
                "b": 6
            }, {
                "b": 8
            }]
        },
    ]
    spec = {"a": {"$all": [{"$elemMatch": {"b": {"$lt": 5}}}]}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a.b").get().value == [1, 2]
    assert mongo_c.count() == 1
    assert monty_c.count() == mongo_c.count()
    assert next(mongo_c) == next(monty_c)
Ejemplo n.º 22
0
def test_fieldwalker_value_get_18():
    # array opsitioned and embedded documents
    doc = {"a": [{"b": [0, {"c": 1}]},
                 {"b": [2, {"c": 3}]},
                 {"b": [4, {"c": 5}]}]}
    path = "a.b.1.c"
    value = [1, 3, 5]
    assert FieldWalker(doc).go(path).get().value == value
Ejemplo n.º 23
0
def test_qop_gt_3(monty_find, mongo_find):
    docs = [{"a": 10}, {"a": "10"}]
    spec = {"a": {"$gt": 10}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[1]).go("a").get().value == ["10"]
    assert mongo_c.count() == 0
    assert monty_c.count() == mongo_c.count()
Ejemplo n.º 24
0
def test_qop_gt_5(monty_find, mongo_find):
    docs = [{"a": 1}, {"a": False}]
    spec = {"a": {"$gt": False}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a").get().value == [1]
    assert mongo_c.count() == 0
    assert monty_c.count() == mongo_c.count()
Ejemplo n.º 25
0
def test_qop_elemMatch_6(monty_find, mongo_find):
    docs = [
        {
            "a": [75, 82]
        },
        {
            "a": [75, 88]
        },
    ]
    spec = {"a": {"$elemMatch": {"$gte": 80, "$lt": 85}}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a").get().value == [75, 82, [75, 82]]
    assert FieldWalker(docs[1]).go("a").get().value == [75, 88, [75, 88]]
    assert mongo_c.count() == 1
    assert monty_c.count() == mongo_c.count()
    assert next(mongo_c) == next(monty_c)
Ejemplo n.º 26
0
def test_qop_eq_1(monty_find, mongo_find):
    docs = [{"a": 1}, {"a": 0}]
    spec = {"a": 1}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a").get().value == [1]
    assert mongo_c.count() == 1
    assert monty_c.count() == mongo_c.count()
    assert next(mongo_c) == next(monty_c)
Ejemplo n.º 27
0
def test_qop_all_1(monty_find, mongo_find):
    docs = [{"a": [1, 2, 3]}, {"a": [2, 5]}]
    spec = {"a": {"$all": [2, 3]}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a").get().value == [1, 2, 3, [1, 2, 3]]
    assert mongo_c.count() == 1
    assert monty_c.count() == mongo_c.count()
    assert next(mongo_c) == next(monty_c)
Ejemplo n.º 28
0
def test_qop_gt_6(monty_find, mongo_find):
    docs = [{"a": [1, 2]}, {"a": [3, 4]}]
    spec = {"a": {"$gt": [2, 3]}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[1]).go("a").get().value == [3, 4, [3, 4]]
    assert mongo_c.count() == 1
    assert monty_c.count() == mongo_c.count()
    assert next(mongo_c) == next(monty_c)
Ejemplo n.º 29
0
def test_qop_gt_7(monty_find, mongo_find):
    docs = [{"a": {"b": 4}}, {"a": {"b": 6}}]
    spec = {"a": {"$gt": {"b": 5}}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[1]).go("a").get().value == [{"b": 6}]
    assert mongo_c.count() == 1
    assert monty_c.count() == mongo_c.count()
    assert next(mongo_c) == next(monty_c)
Ejemplo n.º 30
0
def test_qop_elemMatch_1(monty_find, mongo_find):
    docs = [{"a": [3, 2, 1]}, {"a": [4, 5]}]
    spec = {"a": {"$elemMatch": {"$eq": 1}}}

    monty_c = monty_find(docs, spec)
    mongo_c = mongo_find(docs, spec)

    assert FieldWalker(docs[0]).go("a").get().value == [3, 2, 1, [3, 2, 1]]
    assert mongo_c.count() == 1
    assert monty_c.count() == mongo_c.count()
    assert next(mongo_c) == next(monty_c)