1
0
mirror of https://github.com/django/django.git synced 2025-03-13 02:40:47 +00:00
django/tests/model_fields/test_mixins.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

58 lines
1.7 KiB
Python
Raw Normal View History

from django.db.models.fields.mixins import FieldCacheMixin
from django.test import SimpleTestCase
from django.utils.functional import cached_property
from .models import Foo
class Example(FieldCacheMixin):
@cached_property
def cache_name(self):
return "example"
class FieldCacheMixinTests(SimpleTestCase):
def setUp(self):
self.instance = Foo()
self.field = Example()
def test_cache_name_not_implemented(self):
with self.assertRaises(NotImplementedError):
FieldCacheMixin().cache_name
def test_cache_name(self):
result = Example().cache_name
self.assertEqual(result, "example")
def test_get_cached_value_missing(self):
with self.assertRaises(KeyError):
self.field.get_cached_value(self.instance)
def test_get_cached_value_default(self):
default = object()
result = self.field.get_cached_value(self.instance, default=default)
self.assertIs(result, default)
def test_get_cached_value_after_set(self):
value = object()
self.field.set_cached_value(self.instance, value)
result = self.field.get_cached_value(self.instance)
self.assertIs(result, value)
def test_is_cached_false(self):
result = self.field.is_cached(self.instance)
self.assertFalse(result)
def test_is_cached_true(self):
self.field.set_cached_value(self.instance, 1)
result = self.field.is_cached(self.instance)
self.assertTrue(result)
def test_delete_cached_value(self):
self.field.set_cached_value(self.instance, 1)
self.field.delete_cached_value(self.instance)
result = self.field.is_cached(self.instance)
self.assertFalse(result)