Ejemplo n.º 1
0
def test_query_with_None() -> None:
    m1 = SimpleModel(str_prop="asdf", int_prop=10)
    m2 = SimpleModel(str_prop="aaaa", int_prop=None)
    m1.put()
    m2.put()

    resp1 = SimpleModel.query(
        SimpleModel.int_prop != None).fetch()  # noqa: E711
    assert resp1 == [m1]

    resp2 = SimpleModel.query(
        SimpleModel.int_prop == None).fetch()  # noqa: E711
    assert resp2 == [m2]
Ejemplo n.º 2
0
def test_query_count_async_not_found(
    ndb_stub: datastore_stub.LocalDatastoreStub, ) -> None:
    model = SimpleModel(id="test", str_prop="asdf")
    model.put()

    count = SimpleModel.query().filter(
        SimpleModel.str_prop == "foo").count_async()
    assert count.get_result() == 0
Ejemplo n.º 3
0
def test_get_existing_by_multi_field(
    ndb_stub: datastore_stub.LocalDatastoreStub, ) -> None:
    model = SimpleModel(id="test", str_prop="asdf", int_prop=42)
    ndb_stub._insert_model(model)

    query_res = SimpleModel.query(SimpleModel.str_prop == "asdf",
                                  SimpleModel.int_prop == 42).get()
    assert query_res == model
Ejemplo n.º 4
0
def test_query_keys_only() -> None:
    stored_keys = ndb.put_multi(
        [SimpleModel(id=f"test{i}", int_prop=i) for i in range(10)])
    assert len(stored_keys) == 10

    resp = SimpleModel.query().fetch(keys_only=True)
    assert len(resp) == 10
    assert all(isinstance(i, ndb.Key) for i in resp)
Ejemplo n.º 5
0
def test_query_all() -> None:
    stored_keys = ndb.put_multi(
        [SimpleModel(id=f"test{i}", int_prop=i) for i in range(10)])
    assert len(stored_keys) == 10

    query_all = SimpleModel.query().order(SimpleModel.int_prop).fetch()
    assert len(query_all) == 10
    for i, model in enumerate(query_all):
        assert model.int_prop == i
Ejemplo n.º 6
0
def test_get_existing_by_field_not_found(
    ndb_stub: datastore_stub.LocalDatastoreStub, ) -> None:
    model = SimpleModel(
        id="test",
        str_prop="asdf",
    )
    ndb_stub._insert_model(model)

    query_res = SimpleModel.query(SimpleModel.str_prop == "foo").get()
    assert query_res is None
Ejemplo n.º 7
0
def test_put_model_no_id() -> None:
    model1 = SimpleModel(str_prop="asdf")
    model2 = SimpleModel(str_prop="hjkl")
    model1.put()
    model2.put()

    stored = SimpleModel.query().fetch()
    assert stored == [model1, model2]
    assert stored[0].key.id() == 1
    assert stored[1].key.id() == 2
Ejemplo n.º 8
0
def test_count_existing_by_field(
        ndb_stub: datastore_stub.LocalDatastoreStub) -> None:
    model = SimpleModel(
        id="test",
        str_prop="asdf",
    )
    ndb_stub._insert_model(model)

    count = SimpleModel.query(SimpleModel.str_prop == "asdf").count()
    assert count == 1
Ejemplo n.º 9
0
def test_query_in_range() -> None:
    stored_keys = ndb.put_multi(
        [SimpleModel(id=f"test{i}", int_prop=i) for i in range(10)])
    assert len(stored_keys) == 10

    resp = (SimpleModel.query(SimpleModel.int_prop >= 1,
                              SimpleModel.int_prop < 5).order(
                                  SimpleModel.int_prop).fetch())
    assert len(resp) == 4
    for i, model in enumerate(resp):
        assert model.int_prop == i + 1
Ejemplo n.º 10
0
def test_fetch_existing_by_field_multiple_with_order(
    ndb_stub: datastore_stub.LocalDatastoreStub, ) -> None:
    model1 = SimpleModel(id="test", str_prop="asdf", int_prop=10)
    model2 = SimpleModel(id="test2", str_prop="asdf", int_prop=20)
    ndb_stub._insert_model(model1)
    ndb_stub._insert_model(model2)

    # We don't pass an ordering here, so the order is not deterministic
    query_res = (SimpleModel.query(SimpleModel.str_prop == "asdf").order(
        SimpleModel.int_prop).fetch(limit=2))
    assert len(query_res) == 2
    assert query_res == [model1, model2]
Ejemplo n.º 11
0
def test_query_projection() -> None:
    stored_keys = ndb.put_multi([
        SimpleModel(id=f"test{i}", int_prop=i, str_prop=f"{i}")
        for i in range(10)
    ])
    assert len(stored_keys) == 10

    resp = SimpleModel.query().fetch(projection=[SimpleModel.int_prop])
    assert len(resp) == 10
    assert all(i.int_prop is not None for i in resp)
    with pytest.raises(ndb.model.UnprojectedPropertyError):
        assert all(i.str_prop is None for i in resp)
Ejemplo n.º 12
0
def test_fetch_existing_by_le(
        ndb_stub: datastore_stub.LocalDatastoreStub) -> None:
    model1 = SimpleModel(
        id="test",
        int_prop=42,
    )
    model2 = SimpleModel(
        id="test2",
        int_prop=43,
    )
    ndb_stub._insert_model(model1)
    ndb_stub._insert_model(model2)

    query_res = SimpleModel.query(SimpleModel.int_prop <= 43).fetch(limit=5)
    assert len(query_res) == 2
Ejemplo n.º 13
0
def test_fetch_existing_by_field_with_limit(
    ndb_stub: datastore_stub.LocalDatastoreStub, ) -> None:
    model1 = SimpleModel(
        id="test",
        str_prop="asdf",
    )
    model2 = SimpleModel(
        id="test2",
        str_prop="asdf",
    )
    ndb_stub._insert_model(model1)
    ndb_stub._insert_model(model2)

    # Since we don't pass an order by, it's non deterministic which we get
    query_res = SimpleModel.query(SimpleModel.str_prop == "asdf").fetch(
        limit=1)
    assert len(query_res) == 1
    assert query_res[0].str_prop == "asdf"
Ejemplo n.º 14
0
def test_fetch_existing_by_field_multiple(
    ndb_stub: datastore_stub.LocalDatastoreStub, ) -> None:
    model1 = SimpleModel(
        id="test",
        str_prop="asdf",
    )
    model2 = SimpleModel(
        id="test2",
        str_prop="asdf",
    )
    ndb_stub._insert_model(model1)
    ndb_stub._insert_model(model2)

    # We don't pass an ordering here, so the order is not deterministic
    query_res = SimpleModel.query(SimpleModel.str_prop == "asdf").fetch(
        limit=2)
    assert len(query_res) == 2
    query_res.sort(key=lambda m: m.key.id())
    assert query_res == [model1, model2]