Beispiel #1
0
def test_all_endpoints():
    # note that TestClient is only sync, don't use asyns here
    client = TestClient(app)
    # note that you need to connect to database manually
    # or use client as contextmanager during tests
    with client as client:
        response = client.post("/categories/", json={"name": "test cat"})
        category = response.json()
        response = client.post("/items/",
                               json={
                                   "name": "test",
                                   "id": 1,
                                   "category": category
                               })
        item = Item(**response.json())
        assert item.pk is not None

        response = client.get("/items/")
        items = [Item(**item) for item in response.json()]
        assert items[0] == item

        item.name = "New name"
        response = client.put(f"/items/{item.pk}", json=item.dict())
        assert response.json() == item.dict()

        response = client.get("/items/")
        items = [Item(**item) for item in response.json()]
        assert items[0].name == "New name"

        response = client.delete(f"/items/{item.pk}", json=item.dict())
        assert response.json().get("deleted_rows",
                                   "__UNDEFINED__") != "__UNDEFINED__"
        response = client.get("/items/")
        items = response.json()
        assert len(items) == 0
Beispiel #2
0
async def create_item(item: Item):
    if hasattr(item, 'id'):
        delattr(item, 'id')

    item.item_id = db.items.estimated_document_count() + 1
    ret = db.items.insert_one(item.dict(by_alias=True))
    item.id = ret.inserted_id
    return {
        'message': 'Item created',
        'item': item
    }
Beispiel #3
0
async def get_item(item_id: int, item: Item):
    item_db = await Item.objects.get(pk=item_id)
    return await item_db.update(**item.dict())