From f3a7310344b760bc8b4246bf69f47912068d6d90 Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Wed, 13 Sep 2023 12:37:23 +0300 Subject: [PATCH 1/4] Fix crash in dataset view --- .../ItemView/Datasets/DatasetEsri.jsx | 30 ++--- .../ItemView/Datasets/DatasetHttpLinks.jsx | 116 +++++++++--------- .../Datasets/DatasetItemDownloadList.jsx | 13 +- 3 files changed, 80 insertions(+), 79 deletions(-) diff --git a/src/components/ItemView/Datasets/DatasetEsri.jsx b/src/components/ItemView/Datasets/DatasetEsri.jsx index b527699..3ea862c 100644 --- a/src/components/ItemView/Datasets/DatasetEsri.jsx +++ b/src/components/ItemView/Datasets/DatasetEsri.jsx @@ -18,25 +18,25 @@ const ItemLink = ({ item }) => ( > {item.protocol} {item.name || item.description} - {isInternalURL(item.url) && } + {isInternalURL(item.url) ? ( + + ) : null} ); export default function DatasetEsri({ dataset }) { - return ( - (dataset['ESRI:REST'] || dataset['OGC:WMS']) && ( - <> -
Services:
- - {[...(dataset['ESRI:REST'] || []), ...(dataset['OGC:WMS'] || [])].map( - (item, i) => ( - - ), - )} - - - ) - ); + return dataset['ESRI:REST'] || dataset['OGC:WMS'] ? ( + <> +
Services:
+ + {[...(dataset['ESRI:REST'] || []), ...(dataset['OGC:WMS'] || [])].map( + (item, i) => ( + + ), + )} + + + ) : null; } diff --git a/src/components/ItemView/Datasets/DatasetHttpLinks.jsx b/src/components/ItemView/Datasets/DatasetHttpLinks.jsx index c8ea8aa..e56f861 100644 --- a/src/components/ItemView/Datasets/DatasetHttpLinks.jsx +++ b/src/components/ItemView/Datasets/DatasetHttpLinks.jsx @@ -5,63 +5,61 @@ import { SVGIcon } from '../utils.js'; import lockSVG from 'remixicon/icons/System/lock-line.svg'; export default function DatasetHttpLinks({ dataset }) { - return ( - (dataset['WWW:LINK-1.0-http--link'] || dataset['DOI']) && ( - <> -
Links:
- - {(dataset['WWW:LINK-1.0-http--link'] || []).map((item, i) => { - return ( - - -
- - - {item.name || item.url} - - {isInternalURL(item.url) && ( - - )} -
-
- {item.description && ( - {item.description} - )} -
- ); - })} - {(dataset['DOI'] || []).map((item, i) => { - return ( - - -
- - - {item.name || item.url} - - {isInternalURL(item.url) && ( - - )} -
-
- {item.description && ( - {item.description} - )} -
- ); - })} -
- - ) - ); + return dataset['WWW:LINK-1.0-http--link'] || dataset['DOI'] ? ( + <> +
Links:
+ + {(dataset['WWW:LINK-1.0-http--link'] || []).map((item, i) => { + return ( + + +
+ + + {item.name || item.url} + + {isInternalURL(item.url) ? ( + + ) : null} +
+
+ {item.description ? ( + {item.description} + ) : null} +
+ ); + })} + {(dataset['DOI'] || []).map((item, i) => { + return ( + + +
+ + + {item.name || item.url} + + {isInternalURL(item.url) ? ( + + ) : null} +
+
+ {item.description ? ( + {item.description} + ) : null} +
+ ); + })} +
+ + ) : null; } diff --git a/src/components/ItemView/Datasets/DatasetItemDownloadList.jsx b/src/components/ItemView/Datasets/DatasetItemDownloadList.jsx index 44f942d..e3db3f7 100644 --- a/src/components/ItemView/Datasets/DatasetItemDownloadList.jsx +++ b/src/components/ItemView/Datasets/DatasetItemDownloadList.jsx @@ -10,13 +10,16 @@ import DatasetHttpLinks from './DatasetHttpLinks'; const DatasetItemDownloadList = (props) => { const { link } = props; const dataset = groupBy(link, 'protocol'); + const showDownload = !!( + dataset['WWW:URL'] || + dataset['WWW:LINK'] || + dataset['EEA:FILEPATH'] || + dataset['EEA:FOLDERPATH'] + ); return (
- {(dataset['WWW:URL'] || - dataset['WWW:LINK'] || - dataset['EEA:FILEPATH'] || - dataset['EEA:FOLDERPATH']) && ( + {showDownload ? ( <>
Download:
@@ -24,7 +27,7 @@ const DatasetItemDownloadList = (props) => { - )} + ) : null} From 568338374247690706c4b5b1b766e1663602ace9 Mon Sep 17 00:00:00 2001 From: kreafox Date: Wed, 13 Sep 2023 13:31:50 +0300 Subject: [PATCH 2/4] Add test --- .../ItemView/Datasets/DatasetUrls.test.jsx | 25 +++++++++++ .../__snapshots__/DatasetUrls.test.jsx.snap | 41 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/components/ItemView/Datasets/DatasetUrls.test.jsx create mode 100644 src/components/ItemView/Datasets/__snapshots__/DatasetUrls.test.jsx.snap diff --git a/src/components/ItemView/Datasets/DatasetUrls.test.jsx b/src/components/ItemView/Datasets/DatasetUrls.test.jsx new file mode 100644 index 0000000..080517e --- /dev/null +++ b/src/components/ItemView/Datasets/DatasetUrls.test.jsx @@ -0,0 +1,25 @@ +import React from 'react'; +import renderer from 'react-test-renderer'; + +import DatasetUrls from './DatasetUrls'; + +jest.mock('@eeacms/search', () => ({ + runRequest: jest.fn(), +})); + +const dataset = { + 'WWW:URL': [ + { + url: 'https://example.org/1', + name: 'Direct download', + description: 'Download link description', + }, + ], +}; + +describe('DatasetUrl', () => { + it('renders correctly', () => { + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); + }); +}); diff --git a/src/components/ItemView/Datasets/__snapshots__/DatasetUrls.test.jsx.snap b/src/components/ItemView/Datasets/__snapshots__/DatasetUrls.test.jsx.snap new file mode 100644 index 0000000..68e0cc8 --- /dev/null +++ b/src/components/ItemView/Datasets/__snapshots__/DatasetUrls.test.jsx.snap @@ -0,0 +1,41 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DatasetEsri renders correctly 1`] = `null`; + +exports[`DatasetUrl renders correctly 1`] = ` +
+