diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-28 21:10:23 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-28 21:10:23 +0300 |
commit | a66948df0c3fda7764965f8cf4c9c99226c0d44d (patch) | |
tree | 36d0534d5c03a4ccbbd6da091ba32b96ca27a51b /spec/frontend/packages_and_registries | |
parent | 1d9f78b3a4ecd36806890e80e513242d0fdf7b6e (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/packages_and_registries')
3 files changed, 76 insertions, 34 deletions
diff --git a/spec/frontend/packages_and_registries/package_registry/components/details/app_spec.js b/spec/frontend/packages_and_registries/package_registry/components/details/app_spec.js index 65048d63be5..4be4733b3b0 100644 --- a/spec/frontend/packages_and_registries/package_registry/components/details/app_spec.js +++ b/spec/frontend/packages_and_registries/package_registry/components/details/app_spec.js @@ -6,10 +6,11 @@ import waitForPromises from 'helpers/wait_for_promises'; import createFlash from '~/flash'; import PackagesApp from '~/packages_and_registries/package_registry/components/details/app.vue'; +import PackageHistory from '~/packages_and_registries/package_registry/components/details/package_history.vue'; import PackageTitle from '~/packages_and_registries/package_registry/components/details/package_title.vue'; import { FETCH_PACKAGE_DETAILS_ERROR_MESSAGE } from '~/packages_and_registries/package_registry/constants'; import getPackageDetails from '~/packages_and_registries/package_registry/graphql/queries/get_package_details.query.graphql'; -import { packageDetailsQuery, packageData } from '../../mock_data'; +import { packageDetailsQuery, packageData, emptyPackageDetailsQuery } from '../../mock_data'; jest.mock('~/flash'); @@ -19,6 +20,18 @@ describe('PackagesApp', () => { let wrapper; let apolloProvider; + const provide = { + packageId: '111', + titleComponent: 'PackageTitle', + projectName: 'projectName', + canDelete: 'canDelete', + svgPath: 'svgPath', + npmPath: 'npmPath', + npmHelpPath: 'npmHelpPath', + projectListUrl: 'projectListUrl', + groupListUrl: 'groupListUrl', + }; + function createComponent({ resolver = jest.fn().mockResolvedValue(packageDetailsQuery()) } = {}) { localVue.use(VueApollo); @@ -28,29 +41,22 @@ describe('PackagesApp', () => { wrapper = shallowMount(PackagesApp, { localVue, apolloProvider, - provide: { - packageId: '111', - titleComponent: 'PackageTitle', - projectName: 'projectName', - canDelete: 'canDelete', - svgPath: 'svgPath', - npmPath: 'npmPath', - npmHelpPath: 'npmHelpPath', - projectListUrl: 'projectListUrl', - groupListUrl: 'groupListUrl', - }, + provide, }); } const findEmptyState = () => wrapper.findComponent(GlEmptyState); const findPackageTitle = () => wrapper.findComponent(PackageTitle); + const findPackageHistory = () => wrapper.findComponent(PackageHistory); afterEach(() => { wrapper.destroy(); }); - it('renders an empty state component', () => { - createComponent(); + it('renders an empty state component', async () => { + createComponent({ resolver: jest.fn().mockResolvedValue(emptyPackageDetailsQuery) }); + + await waitForPromises(); expect(findEmptyState().exists()).toBe(true); }); @@ -77,4 +83,16 @@ describe('PackagesApp', () => { }), ); }); + + it('renders history and has the right props', async () => { + createComponent(); + + await waitForPromises(); + + expect(findPackageHistory().exists()).toBe(true); + expect(findPackageHistory().props()).toMatchObject({ + packageEntity: expect.objectContaining(packageData()), + projectName: provide.projectName, + }); + }); }); diff --git a/spec/frontend/packages_and_registries/package_registry/components/details/package_history_spec.js b/spec/frontend/packages_and_registries/package_registry/components/details/package_history_spec.js index b0b6224916c..b69008f04f0 100644 --- a/spec/frontend/packages_and_registries/package_registry/components/details/package_history_spec.js +++ b/spec/frontend/packages_and_registries/package_registry/components/details/package_history_spec.js @@ -1,7 +1,10 @@ import { GlLink, GlSprintf } from '@gitlab/ui'; -import { shallowMount } from '@vue/test-utils'; import { stubComponent } from 'helpers/stub_component'; -import { mavenPackage, mockPipelineInfo } from 'jest/packages/mock_data'; +import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; +import { + packageData, + packagePipelines, +} from 'jest/packages_and_registries/package_registry/mock_data'; import { HISTORY_PIPELINES_LIMIT } from '~/packages/details/constants'; import component from '~/packages_and_registries/package_registry/components/details/package_history.vue'; import HistoryItem from '~/vue_shared/components/registry/history_item.vue'; @@ -11,14 +14,16 @@ describe('Package History', () => { let wrapper; const defaultProps = { projectName: 'baz project', - packageEntity: { ...mavenPackage }, + packageEntity: { ...packageData() }, }; + const [onePipeline] = packagePipelines(); + const createPipelines = (amount) => - [...Array(amount)].map((x, index) => ({ ...mockPipelineInfo, id: index + 1 })); + [...Array(amount)].map((x, index) => packagePipelines({ id: index + 1 })[0]); const mountComponent = (props) => { - wrapper = shallowMount(component, { + wrapper = shallowMountExtended(component, { propsData: { ...defaultProps, ...props }, stubs: { HistoryItem: stubComponent(HistoryItem, { @@ -31,14 +36,13 @@ describe('Package History', () => { afterEach(() => { wrapper.destroy(); - wrapper = null; }); - const findHistoryElement = (testId) => wrapper.find(`[data-testid="${testId}"]`); - const findElementLink = (container) => container.find(GlLink); - const findElementTimeAgo = (container) => container.find(TimeAgoTooltip); - const findTitle = () => wrapper.find('[data-testid="title"]'); - const findTimeline = () => wrapper.find('[data-testid="timeline"]'); + const findHistoryElement = (testId) => wrapper.findByTestId(testId); + const findElementLink = (container) => container.findComponent(GlLink); + const findElementTimeAgo = (container) => container.findComponent(TimeAgoTooltip); + const findTitle = () => wrapper.findByTestId('title'); + const findTimeline = () => wrapper.findByTestId('timeline'); it('has the correct title', () => { mountComponent(); @@ -59,23 +63,25 @@ describe('Package History', () => { expect.arrayContaining(['timeline', 'main-notes-list', 'notes']), ); }); + describe.each` - name | amount | icon | text | timeAgoTooltip | link - ${'created-on'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'clock'} | ${'Test package version 1.0.0 was first created'} | ${mavenPackage.created_at} | ${null} - ${'first-pipeline-commit'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'commit'} | ${'Created by commit #sha-baz on branch branch-name'} | ${null} | ${mockPipelineInfo.project.commit_url} - ${'first-pipeline-pipeline'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'pipeline'} | ${'Built by pipeline #1 triggered by foo'} | ${mockPipelineInfo.created_at} | ${mockPipelineInfo.project.pipeline_url} - ${'published'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'package'} | ${'Published to the baz project Package Registry'} | ${mavenPackage.created_at} | ${null} - ${'archived'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'history'} | ${'Package has 1 archived update'} | ${null} | ${null} - ${'archived'} | ${HISTORY_PIPELINES_LIMIT + 3} | ${'history'} | ${'Package has 2 archived updates'} | ${null} | ${null} - ${'pipeline-entry'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'pencil'} | ${'Package updated by commit #sha-baz on branch branch-name, built by pipeline #3, and published to the registry'} | ${mavenPackage.created_at} | ${mockPipelineInfo.project.commit_url} + name | amount | icon | text | timeAgoTooltip | link + ${'created-on'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'clock'} | ${'@gitlab-org/package-15 version 1.0.0 was first created'} | ${packageData().createdAt} | ${null} + ${'first-pipeline-commit'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'commit'} | ${'Created by commit #b83d6e39 on branch master'} | ${null} | ${onePipeline.commitPath} + ${'first-pipeline-pipeline'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'pipeline'} | ${'Built by pipeline #1 triggered by Administrator'} | ${onePipeline.createdAt} | ${onePipeline.path} + ${'published'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'package'} | ${'Published to the baz project Package Registry'} | ${packageData().createdAt} | ${null} + ${'archived'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'history'} | ${'Package has 1 archived update'} | ${null} | ${null} + ${'archived'} | ${HISTORY_PIPELINES_LIMIT + 3} | ${'history'} | ${'Package has 2 archived updates'} | ${null} | ${null} + ${'pipeline-entry'} | ${HISTORY_PIPELINES_LIMIT + 2} | ${'pencil'} | ${'Package updated by commit #b83d6e39 on branch master, built by pipeline #3, and published to the registry'} | ${packageData().createdAt} | ${onePipeline.commitPath} `( 'with $amount pipelines history element $name', ({ name, icon, text, timeAgoTooltip, link, amount }) => { let element; beforeEach(() => { + const packageEntity = { ...packageData(), pipelines: { nodes: createPipelines(amount) } }; mountComponent({ - packageEntity: { ...mavenPackage, pipelines: createPipelines(amount) }, + packageEntity, }); element = findHistoryElement(name); }); diff --git a/spec/frontend/packages_and_registries/package_registry/mock_data.js b/spec/frontend/packages_and_registries/package_registry/mock_data.js index 2fb03cd9559..9de3dee0738 100644 --- a/spec/frontend/packages_and_registries/package_registry/mock_data.js +++ b/spec/frontend/packages_and_registries/package_registry/mock_data.js @@ -6,11 +6,21 @@ export const packageTags = () => [ export const packagePipelines = (extend) => [ { + commitPath: '/namespace14/project14/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0', + createdAt: '2020-08-17T14:23:32Z', + id: 'gid://gitlab/Ci::Pipeline/36', + path: '/namespace14/project14/-/pipelines/36', + name: 'project14', + ref: 'master', + sha: 'b83d6e391c22777fca1ed3012fce84f633d7fed0', project: { name: 'project14', webUrl: 'http://gdk.test:3000/namespace14/project14', __typename: 'Project', }, + user: { + name: 'Administrator', + }, ...extend, __typename: 'Pipeline', }, @@ -68,3 +78,11 @@ export const packageDetailsQuery = () => ({ }, }, }); + +export const emptyPackageDetailsQuery = () => ({ + data: { + package: { + __typename: 'PackageDetailsType', + }, + }, +}); |