diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/details/metadata/pypi.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/details/metadata/pypi.vue index 498ddbae7b143cc52a565f7c832402d6cccc08a5..d71773adb9d1d9b65b407eac6ed3b7aa5a8a9959 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/components/details/metadata/pypi.vue +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/details/metadata/pypi.vue @@ -8,6 +8,9 @@ import DetailsRow from '~/vue_shared/components/registry/details_row.vue'; export default { i18n: { requiredPython: s__('PackageRegistry|Required Python: %{pythonVersion}'), + summary: s__('PackageRegistry|Summary: %{summary}'), + authorEmail: s__('PackageRegistry|Author email: %{authorEmail}'), + keywords: s__('PackageRegistry|Keywords: %{keywords}'), }, components: { DetailsRow, @@ -24,12 +27,33 @@ export default { <template> <div> - <details-row icon="information-o" padding="gl-p-4" data-testid="pypi-required-python"> + <details-row dashed icon="information-o" padding="gl-p-4" data-testid="pypi-required-python"> <gl-sprintf :message="$options.i18n.requiredPython"> <template #pythonVersion> <strong>{{ packageMetadata.requiredPython }}</strong> </template> </gl-sprintf> </details-row> + <details-row dashed icon="doc-text" padding="gl-p-4" data-testid="pypi-summary"> + <gl-sprintf :message="$options.i18n.summary"> + <template #summary> + <strong>{{ packageMetadata.summary }}</strong> + </template> + </gl-sprintf> + </details-row> + <details-row dashed icon="doc-text" padding="gl-p-4" data-testid="pypi-keywords"> + <gl-sprintf :message="$options.i18n.keywords"> + <template #keywords> + <strong>{{ packageMetadata.keywords }}</strong> + </template> + </gl-sprintf> + </details-row> + <details-row dashed icon="mail" padding="gl-p-4" data-testid="pypi-author-email"> + <gl-sprintf :message="$options.i18n.authorEmail"> + <template #authorEmail> + <strong>{{ packageMetadata.authorEmail }}</strong> + </template> + </gl-sprintf> + </details-row> </div> </template> diff --git a/app/assets/javascripts/packages_and_registries/package_registry/graphql/queries/get_package_metadata.query.graphql b/app/assets/javascripts/packages_and_registries/package_registry/graphql/queries/get_package_metadata.query.graphql index fc8b39b37ab555e490e5130f93f17315a617996f..b95b5c2bc745310c1262a15928fafe316566a645 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/graphql/queries/get_package_metadata.query.graphql +++ b/app/assets/javascripts/packages_and_registries/package_registry/graphql/queries/get_package_metadata.query.graphql @@ -12,7 +12,10 @@ query getPackageMetadata($id: PackagesPackageID!) { } ... on PypiMetadata { id + authorEmail + keywords requiredPython + summary } ... on ConanMetadata { id diff --git a/app/assets/javascripts/vue_shared/components/registry/details_row.vue b/app/assets/javascripts/vue_shared/components/registry/details_row.vue index 72e06b45561073017adaf9932b245d032349be75..85b4ea241ef2d7a3a7f69345143251b571c5e7b9 100644 --- a/app/assets/javascripts/vue_shared/components/registry/details_row.vue +++ b/app/assets/javascripts/vue_shared/components/registry/details_row.vue @@ -32,12 +32,14 @@ export default { <template> <div - class="gl-display-flex gl-align-items-center gl-font-monospace gl-font-sm gl-word-break-all" + class="gl-display-flex gl-align-items-top gl-font-monospace gl-font-sm gl-word-break-all" :class="[padding, borderClass]" > - <gl-icon v-if="icon" :name="icon" class="gl-mr-4" /> - <span> + <div v-if="icon" class="gl-w-5 gl-mr-4"> + <gl-icon :name="icon" /> + </div> + <div> <slot></slot> - </span> + </div> </div> </template> diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 2ebe97ba74bca3b275b1abb80bc0e3bd8bc8b168..741e1b41a1249bf92ef2bddfbe3e6cfdce7df526 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -33966,6 +33966,9 @@ msgstr "" msgid "PackageRegistry|App name: %{name}" msgstr "" +msgid "PackageRegistry|Author email: %{authorEmail}" +msgstr "" + msgid "PackageRegistry|Built by pipeline %{link} triggered %{datetime} by %{author}" msgstr "" @@ -34176,6 +34179,9 @@ msgstr "" msgid "PackageRegistry|Invalid Package: failed metadata extraction" msgstr "" +msgid "PackageRegistry|Keywords: %{keywords}" +msgstr "" + msgid "PackageRegistry|Last downloaded %{dateTime}" msgstr "" @@ -34343,6 +34349,9 @@ msgstr "" msgid "PackageRegistry|Source project located at %{link}" msgstr "" +msgid "PackageRegistry|Summary: %{summary}" +msgstr "" + msgid "PackageRegistry|Target SHA: %{sha}" msgstr "" diff --git a/spec/frontend/packages_and_registries/infrastructure_registry/components/details/components/__snapshots__/file_sha_spec.js.snap b/spec/frontend/packages_and_registries/infrastructure_registry/components/details/components/__snapshots__/file_sha_spec.js.snap index 8e757c136ecc8f2287d31a9d078f9a4409ff3d5a..a544a679ff4af3727c1dab1054fa65483df1c232 100644 --- a/spec/frontend/packages_and_registries/infrastructure_registry/components/details/components/__snapshots__/file_sha_spec.js.snap +++ b/spec/frontend/packages_and_registries/infrastructure_registry/components/details/components/__snapshots__/file_sha_spec.js.snap @@ -2,9 +2,9 @@ exports[`FileSha renders 1`] = ` <div - class="gl-align-items-center gl-border-b-1 gl-border-b-solid gl-border-gray-100 gl-display-flex gl-font-monospace gl-font-sm gl-py-2 gl-word-break-all" + class="gl-align-items-top gl-border-b-1 gl-border-b-solid gl-border-gray-100 gl-display-flex gl-font-monospace gl-font-sm gl-py-2 gl-word-break-all" > - <span> + <div> <div class="gl-px-4" > @@ -23,6 +23,6 @@ exports[`FileSha renders 1`] = ` variant="default" /> </div> - </span> + </div> </div> `; diff --git a/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/file_sha_spec.js.snap b/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/file_sha_spec.js.snap index 8e757c136ecc8f2287d31a9d078f9a4409ff3d5a..a544a679ff4af3727c1dab1054fa65483df1c232 100644 --- a/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/file_sha_spec.js.snap +++ b/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/file_sha_spec.js.snap @@ -2,9 +2,9 @@ exports[`FileSha renders 1`] = ` <div - class="gl-align-items-center gl-border-b-1 gl-border-b-solid gl-border-gray-100 gl-display-flex gl-font-monospace gl-font-sm gl-py-2 gl-word-break-all" + class="gl-align-items-top gl-border-b-1 gl-border-b-solid gl-border-gray-100 gl-display-flex gl-font-monospace gl-font-sm gl-py-2 gl-word-break-all" > - <span> + <div> <div class="gl-px-4" > @@ -23,6 +23,6 @@ exports[`FileSha renders 1`] = ` variant="default" /> </div> - </span> + </div> </div> `; diff --git a/spec/frontend/packages_and_registries/package_registry/components/details/metadata/pypi_spec.js b/spec/frontend/packages_and_registries/package_registry/components/details/metadata/pypi_spec.js index 67f5fbc9e801167152968b41add98015be2051ab..39b525efdbc7fc30bd4731bdf7bcb2ec20efb8e4 100644 --- a/spec/frontend/packages_and_registries/package_registry/components/details/metadata/pypi_spec.js +++ b/spec/frontend/packages_and_registries/package_registry/components/details/metadata/pypi_spec.js @@ -21,14 +21,20 @@ describe('Package Additional Metadata', () => { }; const findPypiRequiredPython = () => wrapper.findByTestId('pypi-required-python'); + const findPypiAuthorEmail = () => wrapper.findByTestId('pypi-author-email'); + const findPypiSummary = () => wrapper.findByTestId('pypi-summary'); + const findPypiKeywords = () => wrapper.findByTestId('pypi-keywords'); beforeEach(() => { mountComponent(); }); it.each` - name | finderFunction | text | icon - ${'pypi-required-python'} | ${findPypiRequiredPython} | ${'Required Python: 1.0.0'} | ${'information-o'} + name | finderFunction | text | icon + ${'pypi-required-python'} | ${findPypiRequiredPython} | ${'Required Python: 1.0.0'} | ${'information-o'} + ${'pypi-author-email'} | ${findPypiAuthorEmail} | ${'Author email: "C. Schultz" <cschultz@example.com>'} | ${'mail'} + ${'pypi-summary'} | ${findPypiSummary} | ${'Summary: A module for collecting votes from beagles.'} | ${'doc-text'} + ${'pypi-keywords'} | ${findPypiKeywords} | ${'Keywords: dog,puppy,voting,election'} | ${'doc-text'} `('$name element', ({ finderFunction, text, icon }) => { const element = finderFunction(); expect(element.exists()).toBe(true); 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 6c03f91b73d12a02c02bab3dba5d749cf79595ab..fdd64cbe6a5ea9f9a042b214549167e2038a7170 100644 --- a/spec/frontend/packages_and_registries/package_registry/mock_data.js +++ b/spec/frontend/packages_and_registries/package_registry/mock_data.js @@ -183,7 +183,10 @@ export const composerMetadata = () => ({ export const pypiMetadata = () => ({ __typename: 'PypiMetadata', id: 'pypi-1', + authorEmail: '"C. Schultz" <cschultz@example.com>', + keywords: 'dog,puppy,voting,election', requiredPython: '1.0.0', + summary: 'A module for collecting votes from beagles.', }); export const mavenMetadata = () => ({