Source code for geonode.geoserver.tests.test_tasks

from unittest.mock import create_autospec, patch

from geonode.base.populate_test_data import all_public, create_models, remove_models
from geonode.geoserver.tasks import geoserver_create_style, geoserver_set_style
from geonode.geoserver.signals import geoserver_automatic_default_style_set
from geonode.layers.models import Dataset
from geonode.layers.populate_datasets_data import create_dataset_data
from geonode.tests.base import GeoNodeBaseTestSupport


[docs] class TasksTest(GeoNodeBaseTestSupport):
[docs] type = "dataset"
[docs] fixtures = ["initial_data.json", "group_test_data.json", "default_oauth_apps.json"]
@classmethod
[docs] def setUpClass(cls): super().setUpClass() create_models(type=cls.get_type, integration=cls.get_integration) all_public()
@classmethod
[docs] def tearDownClass(cls): super().tearDownClass() remove_models(cls.get_obj_ids, type=cls.get_type, integration=cls.get_integration)
[docs] def setUp(self): super().setUp() create_dataset_data()
[docs] def mock_signal_callback(self, instance, **kwargs): pass
[docs] def test_geoserver_style_visual_mode_automatically_with_sld_file(self): dataset = Dataset.objects.first() sld_file = "geonode/base/fixtures/test_sld.sld" handler = create_autospec(self.mock_signal_callback) geoserver_automatic_default_style_set.connect(handler) with patch("geoserver.catalog.Catalog.get_style") as style_mck: style_mck.return_value = True geoserver_create_style(dataset.id, dataset.name, sld_file=sld_file, tempdir=None) self.assertEqual(handler.call_count, 0)
[docs] def test_geoserver_style_visual_mode_automatically_without_sld_file(self): dataset = Dataset.objects.first() handler = create_autospec(self.mock_signal_callback) geoserver_automatic_default_style_set.connect(handler) geoserver_create_style(dataset.id, dataset.name, sld_file=None, tempdir=None) handler.assert_called_once_with(signal=geoserver_automatic_default_style_set, sender=dataset, instance=dataset)
@patch("geonode.geoserver.tasks.set_dataset_style")
[docs] def test_geoserver_set_style_with_real_file(self, mocked_set_dataset_style): dataset = Dataset.objects.first() sld_file = "geonode/base/fixtures/test_sld.sld" geoserver_set_style(instance_id=dataset.id, base_file=sld_file) mocked_set_dataset_style.assert_called_once() args_list = mocked_set_dataset_style.call_args_list[0].args kwargs_list = mocked_set_dataset_style.call_args_list[0].kwargs self.assertEqual(args_list[0].id, dataset.id) self.assertEqual(args_list[1], dataset.alternate) self.assertIsInstance(args_list[2], bytes) self.assertDictEqual({"base_file": sld_file}, kwargs_list)
@patch("geonode.geoserver.tasks.set_dataset_style")
[docs] def test_geoserver_set_style_with_xml(self, mocked_set_dataset_style): dataset = Dataset.objects.first() with open("geonode/base/fixtures/test_sld.sld", "r+") as _file: geoserver_set_style(instance_id=dataset.id, base_file=_file.read()) mocked_set_dataset_style.assert_called_once() args_list = mocked_set_dataset_style.call_args_list[0].args kwargs_list = mocked_set_dataset_style.call_args_list[0].kwargs self.assertEqual(args_list[0].id, dataset.id) self.assertEqual(args_list[1], dataset.alternate) self.assertIsInstance(args_list[2], str) self.assertDictEqual({"base_file": None}, kwargs_list)