Esempio n. 1
0
def test_autumn_coverage():
    # Cover unimportant lines to simplify coverage report.

    # SQL execution exceptions handling
    try:
        Query.execute(db=database, query="syntax error oh yeah")
    except:
        pass

    # L181
    # Stop iteration of Cursor object at None to avoid AttributeError, maybe pointless
    # No idea

    q = Query(model=UserMock)

    # Query's __repr__() method
    repr(q)

    # Count Query results using cache
    q.count()

    # Early return condition check of Model's get() classmethod
    Model.get()

    # Early return condition check of Model's _update() instancemethod
    User()._update()
Esempio n. 2
0
def test_model_delete():
    User.get(1).delete()
    User.get(2).delete()
    assert User.get(1) is None
    assert User.get(2) is None
    assert list(Query(model=UserMock).where(id=1)) == []
    assert list(Query(model=UserMock).where(id=2)) == []
Esempio n. 3
0
def test_model_pickle():
    import cPickle
    x = cPickle.loads(cPickle.dumps(User.get(1)))
    x.delete()
    assert (x.id, x._pk, x.name, x.age) == (1, 1, "John", 25), (x.id, x._pk,
                                                                x.name, x.age)
    assert list(Query(model=UserMock).where(id=1)) == []
Esempio n. 4
0
def test_query_where():
    result = data[1:2]
    assert list(Query(model=UserMock).where(name="John", age=30)) == result
    assert list(
        Query(model=UserMock).where(name="John").where(age=30)) == result
    assert list(Query(model=UserMock).where("name=%s and age=%s", "John",
                                            30)) == result

    result = data[1:]
    assert list(Query(model=UserMock).where("age > 29")) == result

    # Cover condition params being None case
    result = [(4, None, 15)]
    cursor = database.cursor()
    cursor.execute("INSERT INTO `user` (`age`) VALUES (15)")
    database.commit()
    assert list(Query(model=UserMock).where(name=None)) == result
Esempio n. 5
0
def test_model_default_values():
    class User(Model):
        database = database
        name = "John Doe"

    u = User().save()
    assert (u.name, u.age) == ("John Doe", None)
    assert list(Query(model=UserMock).where(id=4)) == [(4, "John Doe", None)]
Esempio n. 6
0
def test_query_fetch_result_slice():
    assert Query(model=UserMock)[:] == data
    assert Query(model=UserMock)[:2] == data[:2]
    assert Query(model=UserMock)[1:2] == data[1:2]

    assert Query(model=UserMock)[0] == data[0]
    assert Query(model=UserMock)[2] == data[2]
    assert Query(model=UserMock)[-1] == data[-1]
    assert Query(model=UserMock)[-2] == data[-2]

    # Cover slice start > stop case
    assert Query(model=UserMock)[2:1] == [], Query(model=UserMock)[2:1]

    # Cover getting items from cache case
    q = Query(model=UserMock)
    assert q[2:1] == []
    assert q[:] == []
Esempio n. 7
0
def test_autumn_coverage():
    # Cover unimportant lines to simplify coverage report.

    # SQL execution exceptions handling
    try:
        Query.execute(db=database, query="syntax error oh yeah")
    except:
        pass

    # L181
    # Stop iteration of Cursor object at None to avoid AttributeError, maybe pointless
    # No idea

    q = Query(model=UserMock)

    # Query's __repr__() method
    repr(q)

    # Count Query results using cache
    q.count()

    # Early return condition check of Model's get() classmethod
    Model.get()

    # Early return condition check of Model's _update() instancemethod
    User()._update()
Esempio n. 8
0
def test_model_create():
    result = (4, "Tom", 50)
    u = User(*result).save()
    assert (u.id, u.name, u.age) == result
    assert list(Query(model=UserMock).where(id=4, name="Tom")) == [result]

    result = (5, "May", 22)
    u = User(name="May", id=5, age=22).save()
    assert (u.id, u.name, u.age) == result
    assert list(Query(model=UserMock).where(id=5, name="May")) == [result]

    result = (6, "Paul", 65)
    u = User(age=65, name="Paul").save()
    assert (u.id, u.name, u.age) == result
    assert list(Query(model=UserMock).where(id=6, name="Paul")) == [result]

    # "utf8mb4" character set required to properly store emoji.
    # Article below provides backgrounds and detailed migration instruction,
    # better take a look.
    # https://mathiasbynens.be/notes/mysql-utf8mb4
    result = (7, "😜", 27)
    u = User(age=27, name="😜").save()
    assert (u.id, u.name, u.age) == result
    assert list(Query(model=UserMock).where(id=7, name="😜")) == [result]
Esempio n. 9
0
def test_query_order_by():
    result = list(reversed(data[:2]))
    assert list(
        Query(model=UserMock).where(name="John").order_by("id desc")) == result
    assert list(Query(model=UserMock).where(
        name="John").order_by("age desc")) == result
Esempio n. 10
0
def test_query_init():
    q = Query(model=UserMock)
    assert q._model == UserMock
    assert q._db == database
Esempio n. 11
0
def test_query_delete():
    assert Query(model=UserMock).where(name="Bob").count() == 1
    assert Query(model=UserMock).where(name="Bob").delete() == 1
    assert Query(model=UserMock).where(name="Bob").count() == 0
Esempio n. 12
0
def test_query_count():
    assert Query(model=UserMock).where(name="John").count() == 2
    assert Query(model=UserMock).where(
        name="John").count("distinct(`name`)") == 1
Esempio n. 13
0
def test_query_fetch_result_iterator():
    for row, result in zip(list(Query(model=UserMock)), data):
        assert row == result