Skip to content

Commit 2ba066c

Browse files
authored
Merge pull request #2382 from tf/file-display-name-media-event
Include file display names in media event context data
2 parents 9538fd8 + df7c7b4 commit 2ba066c

File tree

6 files changed

+83
-1
lines changed

6 files changed

+83
-1
lines changed

entry_types/scrolled/package/spec/frontend/AudioPlayer-spec.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,36 @@ describe('AudioPlayer', () => {
110110
);
111111
});
112112

113+
it('passes displayName from audio file as media events context data', () => {
114+
const spyMedia = jest.spyOn(media, 'getPlayer');
115+
116+
renderInEntry(
117+
() => <AudioPlayer {...requiredProps()}
118+
audioFile={useFile({collectionName: 'audioFiles', permaId: 100})} />,
119+
{
120+
seed: {
121+
fileUrlTemplates: {
122+
audioFiles: {
123+
mp3: ':id_partition/:basename.mp3'
124+
}
125+
},
126+
audioFiles: [
127+
{id: 1, permaId: 100, isReady: true, displayName: 'Podcast.mp3'}
128+
]
129+
}
130+
}
131+
);
132+
133+
expect(spyMedia).toHaveBeenCalledWith(
134+
expect.anything(),
135+
expect.objectContaining({
136+
mediaEventsContextData: expect.objectContaining({
137+
fileDisplayName: 'Podcast.mp3'
138+
})
139+
})
140+
);
141+
});
142+
113143
it('without id no media player is requested', () => {
114144
const spyMedia = jest.spyOn(media, 'getPlayer');
115145

entry_types/scrolled/package/spec/frontend/MediaPlayer-spec.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,26 @@ describe('MediaPlayer', () => {
277277
));
278278
});
279279

280+
it('merges mediaEventsContextData prop into EventContext data for getPlayer', () => {
281+
const eventContextData = {some: 'data'};
282+
283+
render(<MediaPlayer {...requiredProps()}
284+
type={'video'}
285+
mediaEventsContextData={{fileDisplayName: 'my-video.mp4'}}
286+
sources={getVideoSources()} />,
287+
{
288+
wrapper: ({children}) =>
289+
<EventContext.Provider value={eventContextData}>{children}</EventContext.Provider>
290+
});
291+
292+
expect(media.getPlayer).toHaveBeenCalledWith(
293+
expect.anything(),
294+
expect.objectContaining({
295+
mediaEventsContextData: {some: 'data', fileDisplayName: 'my-video.mp4'}
296+
})
297+
);
298+
});
299+
280300
it('does not request new Player for same sources', () => {
281301
const {rerender} =
282302
render(<MediaPlayer {...requiredProps()}

entry_types/scrolled/package/spec/frontend/VideoPlayer-spec.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,36 @@ describe('VideoPlayer', () => {
161161
);
162162
});
163163

164+
it('passes displayName from video file as media events context data', () => {
165+
const spyMedia = jest.spyOn(media, 'getPlayer');
166+
167+
renderInEntry(
168+
() => <VideoPlayer {...requiredProps()}
169+
videoFile={useFile({collectionName: 'videoFiles', permaId: 100})} />,
170+
{
171+
seed: {
172+
fileUrlTemplates: {
173+
videoFiles: {
174+
high: ':id_partition/high/:basename.mp4'
175+
}
176+
},
177+
videoFiles: [
178+
{id: 1, permaId: 100, isReady: true, displayName: 'Interview.mp4'}
179+
]
180+
}
181+
}
182+
);
183+
184+
expect(spyMedia).toHaveBeenCalledWith(
185+
expect.anything(),
186+
expect.objectContaining({
187+
mediaEventsContextData: expect.objectContaining({
188+
fileDisplayName: 'Interview.mp4'
189+
})
190+
})
191+
);
192+
});
193+
164194
it('without id no media player is request', () => {
165195
const spyMedia = jest.spyOn(media, 'getPlayer');
166196
renderInEntry(<VideoPlayer {...requiredProps()} />);

entry_types/scrolled/package/src/frontend/AudioPlayer/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export function AudioPlayer({audioFile, posterImageFile, ...props}) {
3838
posterImageUrl={posterImageFile && posterImageFile.isReady ?
3939
posterImageFile.urls.large : undefined}
4040
altText={audioFile.configuration.alt}
41+
mediaEventsContextData={{fileDisplayName: audioFile.displayName}}
4142
{...props} />
4243
<AudioStructuredData file={audioFile} />
4344
</div>

entry_types/scrolled/package/src/frontend/MediaPlayer/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ function PreparedMediaPlayer(props){
108108
loop={props.loop}
109109
controls={props.controls}
110110
playsInline={props.playsInline}
111-
mediaEventsContextData={eventContextData}
111+
mediaEventsContextData={{...eventContextData, ...props.mediaEventsContextData}}
112112
atmoDuringPlayback={props.atmoDuringPlayback}
113113
onSetup={onSetup}
114114
altText={props.altText} />

entry_types/scrolled/package/src/frontend/VideoPlayer/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export function VideoPlayer({videoFile, posterImageFile, adaptiveMinQuality, ...
4040
posterImageFile.urls.large : videoFile.urls.posterLarge}
4141
altText={videoFile.configuration.alt}
4242
objectPosition={props.fit === 'cover' ? videoFile.cropPosition : undefined}
43+
mediaEventsContextData={{fileDisplayName: videoFile.displayName}}
4344
{...props} />
4445
<VideoStructuredData file={videoFile} />
4546
</>

0 commit comments

Comments
 (0)