diff options
Diffstat (limited to 'spec/frontend/vue_shared/components/source_viewer/plugins')
3 files changed, 40 insertions, 29 deletions
diff --git a/spec/frontend/vue_shared/components/source_viewer/plugins/link_dependencies_spec.js b/spec/frontend/vue_shared/components/source_viewer/plugins/link_dependencies_spec.js index a7b55d7332f..4d38e8ef25d 100644 --- a/spec/frontend/vue_shared/components/source_viewer/plugins/link_dependencies_spec.js +++ b/spec/frontend/vue_shared/components/source_viewer/plugins/link_dependencies_spec.js @@ -4,15 +4,16 @@ import gemspecLinker from '~/vue_shared/components/source_viewer/plugins/utils/g import gemfileLinker from '~/vue_shared/components/source_viewer/plugins/utils/gemfile_linker'; import podspecJsonLinker from '~/vue_shared/components/source_viewer/plugins/utils/podspec_json_linker'; import composerJsonLinker from '~/vue_shared/components/source_viewer/plugins/utils/composer_json_linker'; +import goSumLinker from '~/vue_shared/components/source_viewer/plugins/utils/go_sum_linker'; import linkDependencies from '~/vue_shared/components/source_viewer/plugins/link_dependencies'; import { PACKAGE_JSON_FILE_TYPE, - PACKAGE_JSON_CONTENT, GEMSPEC_FILE_TYPE, GODEPS_JSON_FILE_TYPE, GEMFILE_FILE_TYPE, PODSPEC_JSON_FILE_TYPE, COMPOSER_JSON_FILE_TYPE, + GO_SUM_FILE_TYPE, } from './mock_data'; jest.mock('~/vue_shared/components/source_viewer/plugins/utils/package_json_linker'); @@ -21,37 +22,31 @@ jest.mock('~/vue_shared/components/source_viewer/plugins/utils/godeps_json_linke jest.mock('~/vue_shared/components/source_viewer/plugins/utils/gemfile_linker'); jest.mock('~/vue_shared/components/source_viewer/plugins/utils/podspec_json_linker'); jest.mock('~/vue_shared/components/source_viewer/plugins/utils/composer_json_linker'); +jest.mock('~/vue_shared/components/source_viewer/plugins/utils/go_sum_linker'); describe('Highlight.js plugin for linking dependencies', () => { const hljsResultMock = { value: 'test' }; - it('calls packageJsonLinker for package_json file types', () => { - linkDependencies(hljsResultMock, PACKAGE_JSON_FILE_TYPE, PACKAGE_JSON_CONTENT); - expect(packageJsonLinker).toHaveBeenCalled(); - }); - - it('calls gemspecLinker for gemspec file types', () => { - linkDependencies(hljsResultMock, GEMSPEC_FILE_TYPE); - expect(gemspecLinker).toHaveBeenCalled(); - }); - - it('calls godepsJsonLinker for godeps_json file types', () => { - linkDependencies(hljsResultMock, GODEPS_JSON_FILE_TYPE); - expect(godepsJsonLinker).toHaveBeenCalled(); - }); - - it('calls gemfileLinker for gemfile file types', () => { - linkDependencies(hljsResultMock, GEMFILE_FILE_TYPE); - expect(gemfileLinker).toHaveBeenCalled(); - }); - - it('calls podspecJsonLinker for podspec_json file types', () => { - linkDependencies(hljsResultMock, PODSPEC_JSON_FILE_TYPE); - expect(podspecJsonLinker).toHaveBeenCalled(); - }); - - it('calls composerJsonLinker for composer_json file types', () => { - linkDependencies(hljsResultMock, COMPOSER_JSON_FILE_TYPE); - expect(composerJsonLinker).toHaveBeenCalled(); + describe.each` + fileType | linker + ${PACKAGE_JSON_FILE_TYPE} | ${packageJsonLinker} + ${GEMSPEC_FILE_TYPE} | ${gemspecLinker} + ${GODEPS_JSON_FILE_TYPE} | ${godepsJsonLinker} + ${GEMFILE_FILE_TYPE} | ${gemfileLinker} + ${PODSPEC_JSON_FILE_TYPE} | ${podspecJsonLinker} + ${COMPOSER_JSON_FILE_TYPE} | ${composerJsonLinker} + ${GO_SUM_FILE_TYPE} | ${goSumLinker} + `('$fileType file type', ({ fileType, linker }) => { + it('calls the correct linker', () => { + linkDependencies(hljsResultMock, fileType); + expect(linker).toHaveBeenCalled(); + }); + + it('does not call the linker for non-matching file types', () => { + const unknownFileType = 'unknown'; + + linkDependencies(hljsResultMock, unknownFileType); + expect(linker).not.toHaveBeenCalled(); + }); }); }); diff --git a/spec/frontend/vue_shared/components/source_viewer/plugins/mock_data.js b/spec/frontend/vue_shared/components/source_viewer/plugins/mock_data.js index 5455479ec71..631baf19a2d 100644 --- a/spec/frontend/vue_shared/components/source_viewer/plugins/mock_data.js +++ b/spec/frontend/vue_shared/components/source_viewer/plugins/mock_data.js @@ -32,3 +32,5 @@ export const PODSPEC_JSON_CONTENT = `{ }`; export const COMPOSER_JSON_FILE_TYPE = 'composer_json'; + +export const GO_SUM_FILE_TYPE = 'go_sum'; diff --git a/spec/frontend/vue_shared/components/source_viewer/plugins/utils/go_sum_linker_spec.js b/spec/frontend/vue_shared/components/source_viewer/plugins/utils/go_sum_linker_spec.js new file mode 100644 index 00000000000..cc3ee41523f --- /dev/null +++ b/spec/frontend/vue_shared/components/source_viewer/plugins/utils/go_sum_linker_spec.js @@ -0,0 +1,14 @@ +import goSumLinker from '~/vue_shared/components/source_viewer/plugins/utils/go_sum_linker'; + +describe('Highlight.js plugin for linking go.sum dependencies', () => { + it('mutates the input value by wrapping dependencies and tags in anchors', () => { + const inputValue = + '<span class="">cloud.google.com/Go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=</span>'; + const outputValue = + '<span class=""><a href="https://pkg.go.dev/cloud.google.com/go/bigquery" target="_blank" rel="nofollow noreferrer noopener">cloud.google.com/Go/bigquery</a> v1.0.1/go.mod h1:<a href="https://sum.golang.org/lookup/cloud.google.com/go/bigquery@v1.0.1" target="_blank" rel="nofollow noreferrer noopener">i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=</a></span>'; + const hljsResultMock = { value: inputValue }; + + const output = goSumLinker(hljsResultMock); + expect(output).toBe(outputValue); + }); +}); |