Skip to content

Commit

Permalink
Empty menu cache when deleting blogconfig instances
Browse files Browse the repository at this point in the history
  • Loading branch information
yakky committed Aug 4, 2019
1 parent 77da018 commit f9a0ae2
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
1 change: 1 addition & 0 deletions djangocms_blog/cms_menus.py
Expand Up @@ -191,3 +191,4 @@ def clear_menu_cache(**kwargs):

post_save.connect(clear_menu_cache, sender=BlogCategory)
post_delete.connect(clear_menu_cache, sender=BlogCategory)
post_delete.connect(clear_menu_cache, sender=BlogConfig)
59 changes: 59 additions & 0 deletions tests/test_menu.py
Expand Up @@ -6,6 +6,7 @@
from menus.menu_pool import menu_pool
from parler.utils.context import smart_override, switch_language

from djangocms_blog.cms_appconfig import BlogConfig
from djangocms_blog.models import BlogCategory
from djangocms_blog.settings import (
MENU_TYPE_CATEGORIES, MENU_TYPE_COMPLETE, MENU_TYPE_NONE, MENU_TYPE_POSTS,
Expand All @@ -30,6 +31,64 @@ def setUp(self):
activate('en')
self._reload_menus()

def test_menu_cache_clear_blogconfig(self):
"""
Tests if menu cache is cleared after config deletion
"""

from menus.models import CacheKey
from django.core.cache import cache
pages = self.get_pages()
self.get_posts()
self.reload_urlconf()

app_config_test = BlogConfig.objects.create(namespace='test_config')
app_config_test.app_title = 'appx'
app_config_test.object_name = 'Blogx'
app_config_test.save()
lang = 'en'
with smart_override(lang):
self._reset_menus()
request = self.get_page_request(pages[1], self.user, pages[1].get_absolute_url(lang), edit=True)
self.get_nodes(menu_pool, request)
keys = CacheKey.objects.get_keys().distinct().values_list('key', flat=True)
self.assertTrue(cache.get_many(keys))
app_config_test.delete()
self.assertFalse(cache.get_many(keys))

def test_menu_cache_clear_category(self):
"""
Tests if menu cache is cleared after category deletion
"""

from menus.models import CacheKey
from django.core.cache import cache
pages = self.get_pages()
self.get_posts()
self.reload_urlconf()

lang = 'en'
with smart_override(lang):
self._reset_menus()
request = self.get_page_request(pages[1], self.user, pages[1].get_absolute_url(lang), edit=True)
self.get_nodes(menu_pool, request)
keys = CacheKey.objects.get_keys().distinct().values_list('key', flat=True)
self.assertTrue(cache.get_many(keys))
category_test = BlogCategory.objects.create(
name='category test', app_config=self.app_config_1
)
category_test.set_current_language('it', initialize=True)
category_test.name = 'categoria test'
category_test.save()
self.assertFalse(cache.get_many(keys))
self.get_nodes(menu_pool, request)
keys = CacheKey.objects.get_keys().distinct().values_list('key', flat=True)
self.assertTrue(cache.get_many(keys))
category_test.delete()
self.assertFalse(cache.get_many(keys))
keys = CacheKey.objects.get_keys().distinct().values_list('key', flat=True)
self.assertFalse(keys)

def test_menu_nodes(self):
"""
Tests if all categories are present in the menu
Expand Down

0 comments on commit f9a0ae2

Please sign in to comment.