Skip to content

Commit

Permalink
[Fixes #12924] cleanup legacy metadata code
Browse files Browse the repository at this point in the history
  • Loading branch information
mattiagiupponi committed Feb 24, 2025
1 parent cee17f2 commit 4082e1f
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 365 deletions.
75 changes: 0 additions & 75 deletions geonode/base/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
from geonode.storage.manager import storage_manager
from django.test import Client, TestCase, override_settings, SimpleTestCase
from django.shortcuts import reverse
from django.utils import translation
from django.core.files import File
from django.core.management import call_command
from django.core.management.base import CommandError
Expand Down Expand Up @@ -79,7 +78,6 @@
from geonode.base.templatetags.user_messages import show_notification
from geonode import geoserver
from geonode.decorators import on_ogc_backend
from geonode.base.forms import ThesaurusAvailableForm, THESAURUS_RESULT_LIST_SEPERATOR
from geonode.resource.manager import resource_manager

test_image = Image.new("RGBA", size=(50, 50), color=(155, 0, 0))
Expand Down Expand Up @@ -899,79 +897,6 @@ def __get_last_thesaurus():
return Thesaurus.objects.all().order_by("id")[0]


@override_settings(THESAURUS_DEFAULT_LANG="en")
class TestThesaurusAvailableForm(TestCase):
# loading test thesausurs
fixtures = ["test_thesaurus.json"]

def setUp(self):
self.sut = ThesaurusAvailableForm

def test_form_is_valid_if_all_fields_are_missing(self):
# is now always true since the required is moved to the UI
# (like the other fields)
actual = self.sut(data={})
self.assertTrue(actual.is_valid())

def test_form_is_invalid_if_fileds_send_unexpected_values(self):
actual = self.sut(data={"1": [1, 2]})
self.assertFalse(actual.is_valid())

def test_form_is_valid_if_fileds_send_expected_values(self):
actual = self.sut(data={"1": 1})
self.assertTrue(actual.is_valid())

def test_field_class_treq_is_correctly_set_when_field_is_required(self):
actual = self.sut(data={"1": 1})
required = actual.fields.get("1")
obj_class = required.widget.attrs.get("class")
self.assertTrue(obj_class == "treq")

def test_field_class_treq_is_not_set_when_field_is_optional(self):
actual = self.sut(data={"1": 1})
required = actual.fields.get("2")
obj_class = required.widget.attrs.get("class")
self.assertTrue(obj_class == "")

def test_will_return_thesaurus_with_the_expected_defined_order(self):
actual = self.sut(data={"1": 1})
fields = list(actual.fields.items())
# will check if the first element of the tuple is the thesaurus_id = 2
self.assertEqual(fields[0][0], "2")
# will check if the second element of the tuple is the thesaurus_id = 1
self.assertEqual(fields[1][0], "1")

def test_will_return_thesaurus_with_the_defaul_order_as_0(self):
# Update thesaurus order to 0 in order to check if the default order by id is observed
t = Thesaurus.objects.get(identifier="inspire-theme")
t.order = 0
t.save()
actual = ThesaurusAvailableForm(data={"1": 1})
fields = list(actual.fields.items())
# will check if the first element of the tuple is the thesaurus_id = 2
self.assertEqual(fields[0][0], "1")
# will check if the second element of the tuple is the thesaurus_id = 1
self.assertEqual(fields[1][0], "2")

def test_get_thesuro_key_label_with_cmd_language_code(self):
# in python test language code look like 'en' this test checks if key label result function
# returns correct results
tid = 1
translation.activate("en")
t_available_form = ThesaurusAvailableForm(data={"1": tid})
results = t_available_form._get_thesauro_keyword_label(tid, translation.get_language())
self.assertNotEqual(results[1], THESAURUS_RESULT_LIST_SEPERATOR)

def test_get_thesuro_key_label_with_browser_language_code(self):
# in browser scenario language does not look like "it", but rather include coutry code
# like "it-it" this test checks if _get_thesauro_keyword_label can handle this
tid = 1
translation.activate("en-us")
t_available_form = ThesaurusAvailableForm(data={"1": tid})
results = t_available_form._get_thesauro_keyword_label(tid, translation.get_language())
self.assertNotEqual(results[1], THESAURUS_RESULT_LIST_SEPERATOR)


class TestFacets(TestCase):
def setUp(self):
self.user = get_user_model().objects.create(username="test", email="test@test.com")
Expand Down
28 changes: 0 additions & 28 deletions geonode/documents/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -559,34 +559,6 @@ def setUp(self):
self.perm_spec = {"users": {"AnonymousUser": []}}
self.doc_link_url = reverse("document_link", args=(self.test_doc.pk,))

def test_that_featured_enabling_and_disabling_for_users(self):
# Non Admins
self.client.login(username=self.not_admin.username, password="very-secret")
url = reverse("document_metadata", args=(self.test_doc.pk,))
response = self.client.get(url)
self.assertFalse(self.not_admin.is_superuser)
self.assertEqual(response.status_code, 200)
self.assertTrue(response.context["form"]["featured"].field.disabled)
# Admin
self.client.login(username="admin", password="admin")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertFalse(response.context["form"]["featured"].field.disabled)

def test_that_keyword_multiselect_is_not_disabled_for_admin_users(self):
"""
Test that only admin users can create/edit keywords
"""
admin = self.not_admin
admin.is_superuser = True
admin.save()
self.client.login(username=admin.username, password="very-secret")
url = reverse("document_metadata", args=(self.test_doc.pk,))
response = self.client.get(url)
self.assertTrue(admin.is_superuser)
self.assertEqual(response.status_code, 200)
self.assertFalse(response.context["form"]["keywords"].field.disabled)

def test_document_link_with_permissions(self):
self.test_doc.set_permissions(self.perm_spec)
# Get link as Anonymous user
Expand Down
143 changes: 1 addition & 142 deletions geonode/layers/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
from django.test import TestCase
from django.test.client import RequestFactory
from django.core.management import call_command
from django.contrib.auth.models import Group
from django.contrib.gis.geos import Polygon
from django.db.models import Count
from django.contrib.auth import get_user_model
Expand Down Expand Up @@ -58,7 +57,7 @@
from geonode.tests.utils import NotificationsTestsHelper
from geonode.layers.models import Dataset, Style, Attribute
from geonode.layers.populate_datasets_data import create_dataset_data
from geonode.base.models import TopicCategory, License, Region, Link
from geonode.base.models import TopicCategory, Link
from geonode.utils import check_ogc_backend, set_resource_default_links
from geonode.layers.metadata import convert_keyword, set_metadata, parse_metadata
from geonode.groups.models import GroupProfile
Expand Down Expand Up @@ -126,42 +125,6 @@ def test_default_sourcetype(self):
obj = Dataset.objects.first()
self.assertEqual(obj.sourcetype, enumerations.SOURCE_TYPE_LOCAL)

# Data Tests

def test_describe_data_2(self):
"""/data/geonode:CA/metadata -> Test accessing the description of a layer"""
self.assertEqual(10, get_user_model().objects.all().count())
response = self.client.get(reverse("dataset_metadata", args=("geonode:CA",)))
# Since we are not authenticated, we should not be able to access it
self.assertEqual(response.status_code, 302)
# but if we log in ...
self.client.login(username="admin", password="admin")
# ... all should be good
response = self.client.get(reverse("dataset_metadata", args=("geonode:CA",)))
self.assertEqual(response.status_code, 200)

def test_describe_data_3(self):
"""/data/geonode:CA/metadata_detail -> Test accessing the description of a layer"""
self.client.login(username="admin", password="admin")
# ... all should be good
response = self.client.get(reverse("dataset_metadata_detail", args=("geonode:CA",)))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Approved", count=1, status_code=200, msg_prefix="", html=False)
self.assertContains(response, "Published", count=1, status_code=200, msg_prefix="", html=False)
self.assertContains(response, "Featured", count=1, status_code=200, msg_prefix="", html=False)
self.assertContains(response, "<dt>Group</dt>", count=0, status_code=200, msg_prefix="", html=False)

# ... now assigning a Group to the Dataset
lyr = Dataset.objects.get(alternate="geonode:CA")
group = Group.objects.first()
lyr.group = group
lyr.save()
response = self.client.get(reverse("dataset_metadata_detail", args=("geonode:CA",)))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<dt>Group</dt>", count=1, status_code=200, msg_prefix="", html=False)
lyr.group = None
lyr.save()

# Dataset Tests

def test_dataset_name_clash(self):
Expand Down Expand Up @@ -190,18 +153,6 @@ def test_dataset_name_clash(self):
self.assertIsNotNone(_ll)
self.assertEqual(_ll.name, _ll_1.name)

def test_describe_data(self):
"""/data/geonode:CA/metadata -> Test accessing the description of a layer"""
self.assertEqual(10, get_user_model().objects.all().count())
response = self.client.get(reverse("dataset_metadata", args=("geonode:CA",)))
# Since we are not authenticated, we should not be able to access it
self.assertEqual(response.status_code, 302)
# but if we log in ...
self.client.login(username="admin", password="admin")
# ... all should be good
response = self.client.get(reverse("dataset_metadata", args=("geonode:CA",)))
self.assertEqual(response.status_code, 200)

def test_dataset_attributes(self):
lyr = Dataset.objects.all().first()
# There should be a total of 3 attributes
Expand Down Expand Up @@ -621,80 +572,6 @@ def test_assign_change_dataset_data_perm(self):
self.assertNotIn(user, perms["users"])
self.assertNotIn(user.username, perms["users"])

def test_batch_edit(self):
"""
Test batch editing of metadata fields.
"""
Model = Dataset
view = "dataset_batch_metadata"
resources = Model.objects.all()[:3]
ids = ",".join(str(element.pk) for element in resources)
# test non-admin access
self.client.login(username="bobby", password="bob")
response = self.client.get(reverse(view))
self.assertTrue(response.status_code in (401, 403))
# test group change
group = Group.objects.first()
self.client.login(username="admin", password="admin")
response = self.client.post(
reverse(view),
data={"group": group.pk, "ids": ids, "regions": 1},
)
self.assertEqual(response.status_code, 302)
resources = Model.objects.filter(id__in=[r.pk for r in resources])
for resource in resources:
self.assertEqual(resource.group, group)
# test owner change
owner = get_user_model().objects.first()
response = self.client.post(
reverse(view),
data={"owner": owner.pk, "ids": ids, "regions": 1},
)
self.assertEqual(response.status_code, 302)
resources = Model.objects.filter(id__in=[r.pk for r in resources])
for resource in resources:
self.assertEqual(resource.owner, owner)
# test license change
license = License.objects.first()
response = self.client.post(
reverse(view),
data={"license": license.pk, "ids": ids, "regions": 1},
)
self.assertEqual(response.status_code, 302)
resources = Model.objects.filter(id__in=[r.pk for r in resources])
for resource in resources:
self.assertEqual(resource.license, license)
# test regions change
region = Region.objects.first()
response = self.client.post(
reverse(view),
data={"region": region.pk, "ids": ids, "regions": 1},
)
self.assertEqual(response.status_code, 302)
resources = Model.objects.filter(id__in=[r.pk for r in resources])
for resource in resources:
if resource.regions.all():
self.assertTrue(region in resource.regions.all())
# test language change
language = "eng"
response = self.client.post(
reverse(view),
data={"language": language, "ids": ids, "regions": 1},
)
resources = Model.objects.filter(id__in=[r.pk for r in resources])
for resource in resources:
self.assertEqual(resource.language, language)
# test keywords change
keywords = "some,thing,new"
response = self.client.post(
reverse(view),
data={"keywords": keywords, "ids": ids, "regions": 1},
)
resources = Model.objects.filter(id__in=[r.pk for r in resources])
for resource in resources:
for word in resource.keywords.all():
self.assertTrue(word.name in keywords.split(","))

def test_surrogate_escape_string(self):
surrogate_escape_raw = "Zo\udcc3\udcab"
surrogate_escape_expected = "Zoë"
Expand Down Expand Up @@ -983,24 +860,6 @@ def setUp(self):
map=self.map,
)

def test_that_featured_enabling_and_disabling_for_users(self):
self.test_dataset = resource_manager.create(
None, resource_type=Dataset, defaults=dict(owner=self.not_admin, title="test", is_approved=True)
)

url = reverse("dataset_metadata", args=(self.test_dataset.alternate,))
# Non Admins
self.client.login(username=self.not_admin.username, password="very-secret")
response = self.client.get(url)
self.assertFalse(self.not_admin.is_superuser)
self.assertEqual(response.status_code, 200)
self.assertTrue(response.context["form"]["featured"].field.disabled)
# Admin
self.client.login(username="admin", password="admin")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertFalse(response.context["form"]["featured"].field.disabled)

def test_that_only_users_with_permissions_can_view_maps_in_dataset_view(self):
"""
Test only users with view permissions to a map can view them in layer detail view
Expand Down
Loading

0 comments on commit 4082e1f

Please sign in to comment.