Skip to content
Merged
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import pytest
from django.core.cache import cache
from django.core.management import call_command
from django.test import override_settings

# cache configuration
TEST_CACHE_SETTINGS = {
"CACHES": {
"default": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
"LOCATION": "test-cache",
}
}
}


@pytest.fixture
@override_settings(**TEST_CACHE_SETTINGS)
def setup_cache():
cache.clear()
yield
cache.clear()


def assert_cache_keys_exist(keys_values):
for key, expected_value in keys_values.items():
assert cache.get(key) == expected_value


def assert_cache_keys_none(keys):
for key in keys:
assert cache.get(key) is None


@override_settings(**TEST_CACHE_SETTINGS)
def test_clear_cache_command():
test_data = {
"test_key_1": "test_value_1",
"test_key_2": "test_value_2",
"test_key_3": {"nested": "data"},
}

for key, value in test_data.items():
cache.set(key, value)

assert_cache_keys_exist(test_data)

call_command("clear_cache")

assert_cache_keys_none(test_data.keys())


@override_settings(**TEST_CACHE_SETTINGS)
def test_clear_cache_command_empty_cache():
cache.clear()
assert cache.get("any_key") is None

call_command("clear_cache")

assert cache.get("any_key") is None


@override_settings(**TEST_CACHE_SETTINGS)
def test_clear_cache_command_with_timeout_keys():
cache.set("timeout_key", "timeout_value", timeout=3600)

assert cache.get("timeout_key") == "timeout_value"

call_command("clear_cache")

assert cache.get("timeout_key") is None