diff --git a/app/assets/javascripts/repository/components/blob_viewers/image_viewer.vue b/app/assets/javascripts/repository/components/blob_viewers/image_viewer.vue new file mode 100644 index 0000000000000000000000000000000000000000..83d36209bb30db13bcaf7f2cc0055c336aa33f33 --- /dev/null +++ b/app/assets/javascripts/repository/components/blob_viewers/image_viewer.vue @@ -0,0 +1,19 @@ + + diff --git a/app/assets/javascripts/repository/components/blob_viewers/index.js b/app/assets/javascripts/repository/components/blob_viewers/index.js index 4e16b16041f42f5f3f59dcbab5dec7c30fc9a588..3b4f4eb51fe586aea4ef2415258d8c65f6c6be70 100644 --- a/app/assets/javascripts/repository/components/blob_viewers/index.js +++ b/app/assets/javascripts/repository/components/blob_viewers/index.js @@ -6,6 +6,8 @@ export const loadViewer = (type) => { return () => import(/* webpackChunkName: 'blob_text_viewer' */ './text_viewer.vue'); case 'download': return () => import(/* webpackChunkName: 'blob_download_viewer' */ './download_viewer.vue'); + case 'image': + return () => import(/* webpackChunkName: 'blob_image_viewer' */ './image_viewer.vue'); default: return null; } @@ -23,5 +25,9 @@ export const viewerProps = (type, blob) => { filePath: blob.rawPath, fileSize: blob.rawSize, }, + image: { + url: blob.rawPath, + alt: blob.name, + }, }[type]; }; diff --git a/spec/frontend/repository/components/blob_viewers/image_viewer_spec.js b/spec/frontend/repository/components/blob_viewers/image_viewer_spec.js new file mode 100644 index 0000000000000000000000000000000000000000..6735dddf51e4b57b27d0829178e54dadac2b46c6 --- /dev/null +++ b/spec/frontend/repository/components/blob_viewers/image_viewer_spec.js @@ -0,0 +1,25 @@ +import { shallowMount } from '@vue/test-utils'; +import ImageViewer from '~/repository/components/blob_viewers/image_viewer.vue'; + +describe('Image Viewer', () => { + let wrapper; + + const propsData = { + url: 'some/image.png', + alt: 'image.png', + }; + + const createComponent = () => { + wrapper = shallowMount(ImageViewer, { propsData }); + }; + + const findImage = () => wrapper.find('[data-testid="image"]'); + + it('renders a Source Editor component', () => { + createComponent(); + + expect(findImage().exists()).toBe(true); + expect(findImage().attributes('src')).toBe(propsData.url); + expect(findImage().attributes('alt')).toBe(propsData.alt); + }); +});