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()
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)
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
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()
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
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)
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}}
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]}
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}]}
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]
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}
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]}
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)
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}
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)
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
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)
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
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
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
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)
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
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()
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()
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)
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)
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)
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)
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)
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)