Beispiel #1
0
def test_upsert_modify_check():
    table = setup()
    table.clear()
    assert not table.upsert({"i": 1, "j": 1}, ["i"])
    print(table.all())

    row = table.find_one(i=1, j=1)
    assert row
    print("test id", row["_id"])

    row["i"] = 3
    row["j"] = 2

    assert table.upsert(row)
    print(table.all())
    assert len(table) == 1
    assert not table.upsert(row)
    assert len(table) == 1

    print(table.all())

    assert table.find_one(i=3, j=2)
    assert not table.find_one(i=1, j=1)

    row2 = table.find_one(i=3, j=2)
    assert row
    assert row2["i"] == 3
    assert row2["j"] == 2
def test_find_expr():
    table = setup()
    table.clear()

    table.insert({"i": 1, "j": 1})
    table.insert({"i": 2, "j": 2})
    table.insert({"i": 1, "j": 3})
    table.insert({"i": 2, "j": 4})

    rows = table.find(j=gt(2))
    assert len(rows) == 2

    rows = table.find(j=gte(2))
    assert len(rows) == 3

    rows = table.find(i=lt(2))
    assert len(rows) == 2

    rows = table.find(i=lte(2))
    assert len(rows) == 4

    rows = table.find(j=(gt(1), lt(3)))
    assert len(rows) == 1

    rows = table.find(j=(gt(1), lte(3)))
    assert len(rows) == 2

    rows = table.find(j=(gt(1), lte(3)), i=lt(2))
    assert len(rows) == 1

    rows = table.find(j=in_list(2, 4))
    assert len(rows) == 2

    rows = table.find(j=not_in_list(1, 2, 4))
    assert len(rows) == 1
def test_delete():
    table = setup()
    table.clear()
    table.insert({"test": True})

    assert table.find(test=True)
    assert table.delete(test=True)
    assert not table.find(test=True)
def test_insert():
    table = setup()

    len_before_insert = len(table)

    table.insert({"a": "b"})

    len_after_insert = len(table)

    assert len_before_insert + 1 == len_after_insert
def test_clear():
    table = setup()

    table.insert({"a": "b"})
    table.insert({"a": "b"})
    table.insert({"a": "b"})

    table.clear()

    assert len(table) == 0
def test_update_race(start_race):
    table_main = setup()
    table_main.clear()
    assert table_main.insert({"i": 1, "locked": False})

    def test_update():
        table = setup()
        assert table.update({"i": 1, "locked": True}, ["i"])

    start_race(threads_num=1, target=test_update)
Beispiel #7
0
def test_lock_race_success(start_race):
    table = TestObjectTable(setup())
    table.clear()

    test_object = TestObject(first_name="Max", age=10)
    assert table.create(test_object)

    def test_lock():
        assert table.lock(test_object)

    start_race(threads_num=1, target=test_lock)
Beispiel #8
0
def test_upsert():
    table = setup()
    table.clear()
    assert not table.upsert({"i": 1, "j": 1}, ["i"])

    row = table.find_one(i=1, j=1)
    assert row
    assert row["i"] == 1
    assert row["j"] == 1

    assert not table.upsert({"test": 1}, ["test"])
def test_delete():
    table = setup()
    table.clear()

    table.insert({"i": 1, "j": 1})
    table.insert({"i": 2, "j": 1})
    table.insert({"i": 1, "j": 2})
    table.insert({"i": 2, "j": 2})

    table.delete(i=1)

    assert len(table) == 2
Beispiel #10
0
def test_lock():
    table = TestObjectTable(setup())
    table.clear()

    test_object = TestObject(first_name="Max", age=10)

    assert table.create(test_object)
    assert table.lock(test_object)
    assert not table.lock(test_object)

    assert table.release(test_object)
    assert not table.release(test_object)
Beispiel #11
0
def test_lock_race_fail(start_race):
    for i in range(5):
        table = TestObjectTable(setup())
        table.clear()

        test_object = TestObject(first_name="Max", age=10)
        assert table.create(test_object)

        def test_lock():
            assert table.lock(test_object)

        with pytest.raises(Exception) as e:
            start_race(threads_num=2, target=test_lock)
def test_upsert_race_fail(start_race):
    table_main = setup()
    table_main.clear()
    assert table_main.insert({"i": 1, "locked": False})

    def test_upsert():
        table = setup()
        assert table.upsert({"i": 1, "locked": True}, ["i"])

    with pytest.raises(Exception) as e:
        start_race(threads_num=2, target=test_upsert)

    assert "Table.upsert" in str(e)
    assert "AssertionError" in str(e)
    assert "where False =" in str(e)
def test_find_none():
    table = setup()
    table.clear()

    rows = table.find(j=gt(2))
    assert not rows

    rows = table.find()
    assert not rows

    rows = table.find_one(j=gt(2))
    assert not rows

    rows = table.find_one()
    assert not rows
def test_all():
    table = setup()
    table.clear()

    table.insert({"j": 1, "k": 1})
    table.insert({"j": 2, "k": 1})
    table.insert({"j": 1, "k": 2})
    table.insert({"j": 2, "k": 2})

    elements = table.all()

    assert len(elements) == 4

    for element in elements:
        assert element["j"]
        assert element["k"]
Beispiel #15
0
def test_upsert_non_id():
    table = setup()
    table.clear()
    assert not table.upsert({"i": 1, "j": 1}, key=["i"])

    row = table.find_one(i=1, j=1)
    row["k"] = 4
    del row["_id"]
    assert table.upsert(row, ["i"]) == 1
    assert len(table) == 1

    row2 = table.find_one(i=1, j=1)

    assert row2["i"] == 1
    assert row2["j"] == 1
    print(table.all())
    assert row2["k"] == 4
    assert len(table) == 1
def test_find():
    table = setup()
    table.clear()

    table.insert({"i": 1, "j": 1})
    table.insert({"i": 2, "j": 1})
    table.insert({"i": 1, "j": 2})
    table.insert({"i": 2, "j": 2})

    rows = table.find(i=1)
    assert len(rows) == 2
    assert rows[0]["i"] == 1
    assert rows[1]["i"] == 1

    rows = table.find(i=1, j=1)
    assert len(rows) == 1
    assert rows[0]["i"] == 1
    assert rows[0]["j"] == 1
Beispiel #17
0
def test_model():
    table = TestObjectTable(setup())
    table.clear()

    obj0 = TestObject(first_name="ethan", age=15)
    table.create(obj0)

    try:
        obj0.first_name = "test"
    except ValueError:
        pass
    else:
        raise ValueError("Immutable field was set")

    obj0.age = 10
    table.update(obj0)

    obj1 = table.get_by_id(obj0.id)

    assert obj0 == obj1
def test_table():
    table = setup()
    assert isinstance(table, Table)
 def test_upsert():
     table = setup()
     assert table.upsert({"i": 1, "locked": True}, ["i"])
Beispiel #20
0
def setup_model():
    table = TestObjectTable(setup())
    table.clear()
    return table