feat: fix tests and add FastAPICache init in tests.

This commit is contained in:
Ivan Moiseev
2022-10-22 21:12:04 +04:00
parent e842d6408e
commit c6bd8483a4
2 changed files with 28 additions and 5 deletions

View File

@@ -34,6 +34,16 @@ class FastAPICache:
cls._key_builder = key_builder
cls._enable = enable
@classmethod
def reset(cls) -> None:
cls._init = False
cls._backend = None
cls._prefix = None
cls._expire = None
cls._coder = None
cls._key_builder = None
cls._enable = True
@classmethod
def get_backend(cls) -> Backend:
assert cls._backend, "You must call init first!" # nosec: B101
@@ -41,7 +51,7 @@ class FastAPICache:
@classmethod
def get_prefix(cls) -> str:
assert cls._prefix, "You must call init first!" # nosec: B101
assert cls._prefix is not None, "You must call init first!" # nosec: B101
return cls._prefix
@classmethod
@@ -64,6 +74,6 @@ class FastAPICache:
@classmethod
async def clear(cls, namespace: Optional[str] = None, key: Optional[str] = None) -> int:
assert cls._backend and cls._prefix, "You must call init first!" # nosec: B101
assert cls._backend and cls._prefix is not None, "You must call init first!" # nosec: B101
namespace = cls._prefix + (":" + namespace if namespace else "")
return await cls._backend.clear(namespace, key)

View File

@@ -1,13 +1,24 @@
import time
from typing import Generator
import pendulum
import pytest
from fastapi_cache import FastAPICache
from starlette.testclient import TestClient
from examples.in_memory.main import app
from fastapi_cache.backends.inmemory import InMemoryBackend
def test_datetime():
@pytest.fixture(autouse=True)
def init_cache() -> Generator:
FastAPICache.init(InMemoryBackend())
yield
FastAPICache.reset()
def test_datetime() -> None:
with TestClient(app) as client:
response = client.get("/datetime")
now = response.json().get("now")
@@ -23,7 +34,8 @@ def test_datetime():
assert now != now_
assert now == pendulum.now().replace(microsecond=0)
def test_date():
def test_date() -> None:
"""Test path function without request or response arguments."""
with TestClient(app) as client:
@@ -40,7 +52,8 @@ def test_date():
assert pendulum.parse(response.json()) == pendulum.today()
FastAPICache._enable = True
def test_sync():
def test_sync() -> None:
"""Ensure that sync function support works."""
with TestClient(app) as client:
response = client.get("/sync-me")