diff options
Diffstat (limited to 'spec/frontend/ci/pipelines_page/components/pipelines_artifacts_spec.js')
-rw-r--r-- | spec/frontend/ci/pipelines_page/components/pipelines_artifacts_spec.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/spec/frontend/ci/pipelines_page/components/pipelines_artifacts_spec.js b/spec/frontend/ci/pipelines_page/components/pipelines_artifacts_spec.js new file mode 100644 index 00000000000..557403b3de9 --- /dev/null +++ b/spec/frontend/ci/pipelines_page/components/pipelines_artifacts_spec.js @@ -0,0 +1,64 @@ +import { + GlDisclosureDropdown, + GlDisclosureDropdownItem, + GlDisclosureDropdownGroup, + GlSprintf, +} from '@gitlab/ui'; +import { shallowMount } from '@vue/test-utils'; +import PipelineArtifacts from '~/ci/pipelines_page/components/pipelines_artifacts.vue'; + +describe('Pipelines Artifacts dropdown', () => { + let wrapper; + + const artifacts = [ + { + name: 'job my-artifact', + path: '/download/path', + }, + { + name: 'job-2 my-artifact-2', + path: '/download/path-two', + }, + ]; + const pipelineId = 108; + + const createComponent = ({ mockArtifacts = artifacts } = {}) => { + wrapper = shallowMount(PipelineArtifacts, { + propsData: { + pipelineId, + artifacts: mockArtifacts, + }, + stubs: { + GlSprintf, + GlDisclosureDropdown, + GlDisclosureDropdownItem, + GlDisclosureDropdownGroup, + }, + }); + }; + + const findGlDropdown = () => wrapper.findComponent(GlDisclosureDropdown); + const findFirstGlDropdownItem = () => wrapper.findComponent(GlDisclosureDropdownItem); + + it('should render a dropdown with all the provided artifacts', () => { + createComponent(); + + const [{ items }] = findGlDropdown().props('items'); + expect(items).toHaveLength(artifacts.length); + }); + + it('should render a link with the provided path', () => { + createComponent(); + + expect(findFirstGlDropdownItem().props('item').href).toBe(artifacts[0].path); + expect(findFirstGlDropdownItem().text()).toBe(artifacts[0].name); + }); + + describe('with no artifacts', () => { + it('should not render the dropdown', () => { + createComponent({ mockArtifacts: [] }); + + expect(findGlDropdown().exists()).toBe(false); + }); + }); +}); |