diff options
Diffstat (limited to 'spec/frontend/blob/csv/csv_viewer_spec.js')
-rw-r--r-- | spec/frontend/blob/csv/csv_viewer_spec.js | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/spec/frontend/blob/csv/csv_viewer_spec.js b/spec/frontend/blob/csv/csv_viewer_spec.js index 17973c709c1..ff96193a20c 100644 --- a/spec/frontend/blob/csv/csv_viewer_spec.js +++ b/spec/frontend/blob/csv/csv_viewer_spec.js @@ -2,6 +2,7 @@ import { GlLoadingIcon, GlTable } from '@gitlab/ui'; import { getAllByRole } from '@testing-library/dom'; import { shallowMount, mount } from '@vue/test-utils'; import { nextTick } from 'vue'; +import Papa from 'papaparse'; import CsvViewer from '~/blob/csv/csv_viewer.vue'; import PapaParseAlert from '~/vue_shared/components/papa_parse_alert.vue'; @@ -11,10 +12,15 @@ const brokenCsv = '{\n "json": 1,\n "key": [1, 2, 3]\n}'; describe('app/assets/javascripts/blob/csv/csv_viewer.vue', () => { let wrapper; - const createComponent = ({ csv = validCsv, mountFunction = shallowMount } = {}) => { + const createComponent = ({ + csv = validCsv, + remoteFile = false, + mountFunction = shallowMount, + } = {}) => { wrapper = mountFunction(CsvViewer, { propsData: { csv, + remoteFile, }, }); }; @@ -73,4 +79,22 @@ describe('app/assets/javascripts/blob/csv/csv_viewer.vue', () => { expect(getAllByRole(wrapper.element, 'row', { name: /Three/i })).toHaveLength(1); }); }); + + describe('when csv prop is path and indicates a remote file', () => { + it('should render call parse with download flag true', async () => { + const path = 'path/to/remote/file.csv'; + jest.spyOn(Papa, 'parse').mockImplementation((_, { complete }) => { + complete({ data: validCsv.split(','), errors: [] }); + }); + + createComponent({ csv: path, remoteFile: true }); + expect(Papa.parse).toHaveBeenCalledWith(path, { + download: true, + skipEmptyLines: true, + complete: expect.any(Function), + }); + await nextTick; + expect(wrapper.vm.items).toEqual(validCsv.split(',')); + }); + }); }); |