Source code for geonode.themes.tests

#########################################################################
#
# Copyright (C) 2018 OSGeo
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#########################################################################
import logging
from deprecated import deprecated

from geonode import __version__
from geonode.tests.base import GeoNodeBaseTestSupport

from .models import GeoNodeThemeCustomization

[docs] logger = logging.getLogger(__name__)
[docs] class ThemeLibraryTest(GeoNodeBaseTestSupport): @deprecated(version="3.2.0", reason="New geonode-mapstore-client landing page")
[docs] def test_theme_customization(self): # By default, the homepage should use default welcome text response = self.client.get("/") logger.error("!! With the new geonode-mapstore-client landing page, this test must be changed.") logger.error("WARNING: different for 3.2.x and 3.1.x") if __version__[0] == 3 and (__version__[1] == 1 or (__version__[1] == 2 and __version__[3] != "unstable")): self.assertContains(response, "GeoNode is an open source platform for sharing geospatial data and maps.") # Creating a theme should change the welcome text GeoNodeThemeCustomization.objects.create( name="theme_1", jumbotron_welcome_content="welcome_1", is_enabled=True, ) response = self.client.get("/") self.assertNotContains(response, "GeoNode is an open source platform for sharing geospatial data and maps.") self.assertContains(response, "welcome_1") # Creating another theme should replace the welcome text GeoNodeThemeCustomization.objects.create( name="theme_2", jumbotron_welcome_content="welcome_2", is_enabled=True, ) response = self.client.get("/") self.assertNotContains(response, "welcome_1") self.assertContains(response, "welcome_2") # Creating a disabled theme should not replace the welcome text theme_3 = GeoNodeThemeCustomization.objects.create( name="theme_3", jumbotron_welcome_content="welcome_3", is_enabled=False, ) response = self.client.get("/") self.assertNotContains(response, "welcome_3") self.assertContains(response, "welcome_2") # Playing a bit with colors theme_3.search_bg_color = "#000001" theme_3.search_title_color = "#000002" theme_3.search_link_color = "#000003" theme_3.footer_text_color = "#000004" theme_3.footer_href_color = "#000005" # Enabling that theme afterwards should replace the welcome text theme_3.is_enabled = True theme_3.save() response = self.client.get("/") self.assertNotContains(response, "welcome_2") self.assertContains(response, "welcome_3") self.assertContains(response, f"background: {theme_3.search_bg_color};") self.assertContains(response, f"color: {theme_3.search_title_color};") self.assertContains(response, f"color: {theme_3.search_link_color};") self.assertContains(response, f"color: {theme_3.footer_text_color};") self.assertContains(response, f"color: {theme_3.footer_href_color};") # We should have only one active theme active_themes = GeoNodeThemeCustomization.objects.filter(is_enabled=True) self.assertEqual(active_themes.count(), 1) # Deleting that theme should revert to default theme_3.delete() response = self.client.get("/") self.assertNotContains(response, "welcome_3") self.assertContains(response, "GeoNode is an open source platform for sharing geospatial data and maps.")