diff --git a/src/sections/dataset/dataset-action-buttons/edit-dataset-menu/DeaccessionDatasetButton.tsx b/src/sections/dataset/dataset-action-buttons/edit-dataset-menu/DeaccessionDatasetButton.tsx index 686b7ffaa..b343afc94 100644 --- a/src/sections/dataset/dataset-action-buttons/edit-dataset-menu/DeaccessionDatasetButton.tsx +++ b/src/sections/dataset/dataset-action-buttons/edit-dataset-menu/DeaccessionDatasetButton.tsx @@ -1,8 +1,9 @@ import { useState } from 'react' import { toast } from 'react-toastify' import { useContext } from 'react' +import { useForm, SubmitHandler } from 'react-hook-form' import { DatasetContext } from '@/sections/dataset/DatasetContext' -import { Dataset } from '../../../../dataset/domain/models/Dataset' +import { Dataset, DatasetPublishingStatus } from '../../../../dataset/domain/models/Dataset' import { DropdownButtonItem, DropdownSeparator } from '@iqss/dataverse-design-system' import { useTranslation } from 'react-i18next' import { DeaccessionDatasetModal } from '@/sections/dataset/deaccession-dataset/DeaccessionDatasetModal' @@ -10,7 +11,6 @@ import { DatasetRepository } from '@/dataset/domain/repositories/DatasetReposito import { DeaccessionFormData } from '@/sections/dataset/deaccession-dataset/DeaccessionFormData' import { useDeaccessionDataset } from '@/sections/dataset/deaccession-dataset/useDeaccessionDataset' import { ConfirmationModal } from '@/sections/dataset/deaccession-dataset/ConfirmationModal' -import { useForm, SubmitHandler } from 'react-hook-form' interface DeaccessionDatasetButtonProps { dataset: Dataset @@ -48,13 +48,14 @@ export function DeaccessionDatasetButton({ } = useForm({ defaultValues: { versions: defaultVersions, deaccessionForwardUrl: '' } }) + if ( - !dataset.version.someDatasetVersionHasBeenReleased || - !dataset.permissions.canPublishDataset || - publishedVersions.length === 0 + dataset.version.publishingStatus !== DatasetPublishingStatus.RELEASED || + !dataset.permissions.canPublishDataset ) { return <> } + const handleOpen = (e: React.MouseEvent) => { e.stopPropagation() setShowDeaccessionModal(true) diff --git a/tests/component/sections/dataset/dataset-action-buttons/edit-dataset-menu/DeaccessionDatasetButton.spec.tsx b/tests/component/sections/dataset/dataset-action-buttons/edit-dataset-menu/DeaccessionDatasetButton.spec.tsx index e5539b8eb..5248834e1 100644 --- a/tests/component/sections/dataset/dataset-action-buttons/edit-dataset-menu/DeaccessionDatasetButton.spec.tsx +++ b/tests/component/sections/dataset/dataset-action-buttons/edit-dataset-menu/DeaccessionDatasetButton.spec.tsx @@ -232,7 +232,29 @@ describe('DeaccessionDatasetButton', () => { cy.findByTestId('deaccession-forward-url').type('https://example.com') cy.get('button[type="submit"]').click() cy.get('button').contains('Yes').should('exist').click() - cy.wrap(repository.deaccession).should('be.calledTwice') + cy.wrap(repository.deaccession).should('have.been.called') }) }) + + it('does not render the DeaccessionDatasetButton if the dataset is deaccessioned', () => { + const dataset = DatasetMother.create({ + permissions: DatasetPermissionsMother.createWithPublishingDatasetAllowed(), + version: DatasetVersionMother.createDeaccessioned() + }) + + cy.customMount() + + cy.findByRole('button', { name: 'Deaccession Dataset' }).should('not.exist') + }) + + it('does not render the DeaccessionDatasetButton if the dataset is draft', () => { + const dataset = DatasetMother.create({ + permissions: DatasetPermissionsMother.createWithPublishingDatasetAllowed(), + version: DatasetVersionMother.createDraft() + }) + + cy.customMount() + + cy.findByRole('button', { name: 'Deaccession Dataset' }).should('not.exist') + }) })