|
36 | 36 |
|
37 | 37 | from geonode import geoserver |
38 | 38 | from geonode.layers.models import Layer |
| 39 | +from geonode.tests.base import GeoNodeBaseTestSupport |
39 | 40 | from geonode.utils import check_ogc_backend, set_resource_default_links |
40 | 41 | from geonode.favorite.models import Favorite |
41 | 42 | from geonode.documents.models import Document |
42 | 43 | from geonode.base.utils import build_absolute_uri |
43 | 44 | from geonode.thumbs.exceptions import ThumbnailError |
44 | | -from geonode.base.populate_test_data import create_models |
| 45 | +from geonode.base.populate_test_data import create_models, create_single_layer |
45 | 46 | from geonode.security.utils import get_resources_with_perms |
46 | 47 |
|
47 | 48 | from geonode.base.models import ( |
48 | 49 | CuratedThumbnail, |
| 50 | + ExtraMetadata, |
49 | 51 | HierarchicalKeyword, |
50 | 52 | Region, |
51 | 53 | ResourceBase, |
@@ -1021,3 +1023,64 @@ def test_set_thumbnail_from_bbox_from_logged_user_for_existing_dataset_raise_exp |
1021 | 1023 | } |
1022 | 1024 | self.assertEqual(response.status_code, 500) |
1023 | 1025 | self.assertEqual(expected, response.json()) |
| 1026 | + |
| 1027 | + |
| 1028 | +class TestExtraMetadataBaseApi(GeoNodeBaseTestSupport): |
| 1029 | + def setUp(self): |
| 1030 | + self.layer = create_single_layer('single_layer') |
| 1031 | + self.metadata = { |
| 1032 | + "filter_header": "Foo Filter header", |
| 1033 | + "field_name": "metadata-name", |
| 1034 | + "field_label": "this is the help text", |
| 1035 | + "field_value": "foo" |
| 1036 | + } |
| 1037 | + m = ExtraMetadata.objects.create( |
| 1038 | + resource=self.layer, |
| 1039 | + metadata=self.metadata |
| 1040 | + ) |
| 1041 | + self.layer.metadata.add(m) |
| 1042 | + self.mdata = ExtraMetadata.objects.first() |
| 1043 | + |
| 1044 | + def test_get_will_return_the_list_of_extra_metadata(self): |
| 1045 | + self.client.login(username="admin", password="admin") |
| 1046 | + url = reverse('base-resources-extra-metadata', args=[self.layer.id]) |
| 1047 | + response = self.client.get(url, content_type='application/json') |
| 1048 | + self.assertTrue(200, response.status_code) |
| 1049 | + expected = [ |
| 1050 | + {**{"id": self.mdata.id}, **self.metadata} |
| 1051 | + ] |
| 1052 | + self.assertEqual(expected, response.json()) |
| 1053 | + |
| 1054 | + def test_put_will_update_the_whole_metadata(self): |
| 1055 | + self.client.login(username="admin", password="admin") |
| 1056 | + url = reverse('base-resources-extra-metadata', args=[self.layer.id]) |
| 1057 | + input_metadata = { |
| 1058 | + "id": self.mdata.id, |
| 1059 | + "filter_header": "Foo Filter header", |
| 1060 | + "field_name": "metadata-updated", |
| 1061 | + "field_label": "this is the help text", |
| 1062 | + "field_value": "foo" |
| 1063 | + } |
| 1064 | + response = self.client.put(url, data=[input_metadata], content_type='application/json') |
| 1065 | + self.assertTrue(200, response.status_code) |
| 1066 | + self.assertEqual([input_metadata], response.json()) |
| 1067 | + |
| 1068 | + def test_post_will_add_new_metadata(self): |
| 1069 | + self.client.login(username="admin", password="admin") |
| 1070 | + url = reverse('base-resources-extra-metadata', args=[self.layer.id]) |
| 1071 | + input_metadata = { |
| 1072 | + "filter_header": "Foo Filter header", |
| 1073 | + "field_name": "metadata-updated", |
| 1074 | + "field_label": "this is the help text", |
| 1075 | + "field_value": "foo" |
| 1076 | + } |
| 1077 | + response = self.client.post(url, data=[input_metadata], content_type='application/json') |
| 1078 | + self.assertTrue(201, response.status_code) |
| 1079 | + self.assertEqual(2, len(response.json())) |
| 1080 | + |
| 1081 | + def test_delete_will_delete_single_metadata(self): |
| 1082 | + self.client.login(username="admin", password="admin") |
| 1083 | + url = reverse('base-resources-extra-metadata', args=[self.layer.id]) |
| 1084 | + response = self.client.delete(url, data=[self.mdata.id], content_type='application/json') |
| 1085 | + self.assertTrue(200, response.status_code) |
| 1086 | + self.assertEqual([], response.json()) |
0 commit comments