Skip to content

Commit

Permalink
Merge pull request #344 from samvera-labs/no_items
Browse files Browse the repository at this point in the history
Add safe navigation and fallback in case there aren't any canvases in manifest
  • Loading branch information
cjcolvar authored Jan 23, 2024
2 parents b1dbf10 + a544858 commit 24655a1
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/components/MetadataDisplay/MetadataDisplay.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ const MetadataDisplay = ({
*/
const setCanvasMetadataInState = () => {
let canvasData = canvasesMetadataRef.current
.filter((m) => m.canvasindex === canvasIndex)[0].metadata;
.filter((m) => m.canvasindex === canvasIndex)[0]?.metadata || [];
if (!displayTitle) {
canvasData = canvasData.filter(md => md.label.toLowerCase() != 'title');
}
Expand Down
18 changes: 16 additions & 2 deletions src/components/MetadataDisplay/MetadataDisplay.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import React from 'react';
import { render, screen } from '@testing-library/react';
import MetadataDisplay from './MetadataDisplay';
import manifest from '@TestData/lunchroom-manners';
import manfiestWoMetadata from '@TestData/volleyball-for-boys';
import manifestWoMetadata from '@TestData/volleyball-for-boys';
import manifestWoCanvases from '@TestData/empty-playlist';
import playlistManifest from '@TestData/playlist';
import { withManifestProvider } from '../../services/testing-helpers';

Expand Down Expand Up @@ -174,12 +175,25 @@ describe('MetadataDisplay component', () => {

it('with manifest without metadata renders a message', () => {
const MetadataDisp = withManifestProvider(MetadataDisplay, {
initialState: { manifest: manfiestWoMetadata },
initialState: { manifest: manifestWoMetadata },
});
render(<MetadataDisp />);
expect(screen.queryByTestId('metadata-display')).toBeInTheDocument();
expect(screen.queryByTestId('metadata-display-message')).toBeInTheDocument();
expect(screen.getByText('No valid Metadata is in the Manifest/Canvas(es)')).toBeInTheDocument();
expect(console.log).toBeCalledTimes(1);
});

it('with manifest without canavses renders a message', () => {
const MetadataDisp = withManifestProvider(MetadataDisplay, {
initialState: { manifest: manifestWoCanvases },
displayOnlyCanvasMetadata: true,
displayTitle: false
});
render(<MetadataDisp />);
expect(screen.queryByTestId('metadata-display')).toBeInTheDocument();
expect(screen.queryByTestId('metadata-display-message')).toBeInTheDocument();
expect(screen.getByText('No valid Metadata is in the Manifest/Canvas(es)')).toBeInTheDocument();
expect(console.log).toBeCalledTimes(0);
});
});
58 changes: 58 additions & 0 deletions src/test_data/empty-playlist.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
export default {
'@context': [
"http://www.w3.org/ns/anno.jsonld",
"http://iiif.io/api/presentation/3/context.json"
],
type: "Manifest",
id: "https://example.com/manifest/empty-playlist",
label: {
none: [
"Empty playlist [Playlist]"
]
},
behavior: [
"auto-advance"
],
metadata: [
{
label: {
none: [
"Title"
]
},
value: {
none: [
"Empty playlist [Playlist]"
]
}
}
],
service: [
{
id: "https://example.com/avalon_marker",
type: "AnnotationService0"
}
],
homepage: [
{
id: "https://example.com/playlists/1",
type: "Text",
label: {
none: [
"View in Repository"
]
},
format: "text/html"
}
],
items: [],
structures: [
{
type: "Range",
id: "https://example.com/playlists/1/manifest/range/1",
label: null,
behavior: "top",
items: []
}
]
};

0 comments on commit 24655a1

Please sign in to comment.