Skip to content

Commit 26469a9

Browse files
committed
fix: based on reviews
1 parent ec954ac commit 26469a9

File tree

6 files changed

+68
-98
lines changed

6 files changed

+68
-98
lines changed

src/sections/edit-dataset-terms/dataset-terms-tab/DatasetTermsTab.module.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,9 @@
1616
background-color: var(--bs-light);
1717
border-radius: 4px;
1818
}
19+
20+
.license-icon {
21+
margin-top: 0.5rem;
22+
display: flex;
23+
gap: 0.5rem;
24+
}

src/sections/edit-dataset-terms/dataset-terms-tab/DatasetTermsTab.tsx

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { useEffect, useMemo, useRef } from 'react'
22
import { useTranslation } from 'react-i18next'
3+
import { useNavigate } from 'react-router-dom'
34
import { useForm, Controller, FormProvider } from 'react-hook-form'
45
import { toast } from 'react-toastify'
56
import { Form, Row, Col, Button, Alert } from '@iqss/dataverse-design-system'
@@ -9,6 +10,11 @@ import { useGetLicenses } from './useGetLicenses'
910
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
1011
import { useDataset } from '../../dataset/DatasetContext'
1112
import { useUpdateDatasetLicense } from './useUpdateDatasetLicense'
13+
import { Route, QueryParamKey } from '../../Route.enum'
14+
import {
15+
DatasetNonNumericVersionSearchParam,
16+
DatasetPublishingStatus
17+
} from '../../../dataset/domain/models/Dataset'
1218
import styles from './DatasetTermsTab.module.scss'
1319

1420
interface DatasetTermsFormData {
@@ -25,6 +31,7 @@ export function DatasetTermsTab({ licenseRepository, datasetRepository }: Datase
2531
const { t } = useTranslation('dataset')
2632
const { t: tShared } = useTranslation('shared')
2733
const { dataset, refreshDataset } = useDataset()
34+
const navigate = useNavigate()
2835

2936
const formContainerRef = useRef<HTMLDivElement>(null)
3037

@@ -150,6 +157,21 @@ export function DatasetTermsTab({ licenseRepository, datasetRepository }: Datase
150157
}
151158
}
152159

160+
const handleCancel = () => {
161+
if (!dataset) return
162+
163+
const searchParams = new URLSearchParams()
164+
searchParams.set(QueryParamKey.PERSISTENT_ID, dataset.persistentId)
165+
166+
if (dataset.version.publishingStatus === DatasetPublishingStatus.DRAFT) {
167+
searchParams.set(QueryParamKey.VERSION, DatasetNonNumericVersionSearchParam.DRAFT)
168+
} else {
169+
searchParams.set(QueryParamKey.VERSION, dataset.version.number.toString())
170+
}
171+
172+
navigate(`${Route.DATASETS}?${searchParams.toString()}`)
173+
}
174+
153175
return (
154176
<div ref={formContainerRef} className={styles['dataset-terms-tab']}>
155177
<FormProvider {...form}>
@@ -190,7 +212,7 @@ export function DatasetTermsTab({ licenseRepository, datasetRepository }: Datase
190212
{errorLicenses && <Alert variant="danger">{errorLicenses}</Alert>}
191213

192214
{currentLicenseOption && !isCustomTerms && (
193-
<>
215+
<div className={styles['license-icon']}>
194216
{currentLicenseOption.iconUri && (
195217
<img
196218
src={currentLicenseOption.iconUri}
@@ -203,7 +225,7 @@ export function DatasetTermsTab({ licenseRepository, datasetRepository }: Datase
203225
{currentLicenseOption.label}
204226
</a>
205227
)}
206-
</>
228+
</div>
207229
)}
208230
</Col>
209231
</Row>
@@ -261,16 +283,7 @@ export function DatasetTermsTab({ licenseRepository, datasetRepository }: Datase
261283
<Button type="submit" disabled={!isValid || isLoading}>
262284
{isLoading ? tShared('saving') : tShared('saveChanges')}
263285
</Button>
264-
<Button
265-
variant="secondary"
266-
type="button"
267-
disabled={isLoading}
268-
onClick={() =>
269-
reset({
270-
license: defaultLicenseValue,
271-
customTerms: initialCustomTerms
272-
})
273-
}>
286+
<Button variant="secondary" type="button" disabled={isLoading} onClick={handleCancel}>
274287
{tShared('cancel')}
275288
</Button>
276289
</div>

src/sections/edit-dataset-terms/restricted-files-tab/RestrictedFilesTab.tsx

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,28 @@ import { useForm, Controller, FormProvider, useWatch } from 'react-hook-form'
44
import { toast } from 'react-toastify'
55
import { Form, Row, Col, Button, Alert } from '@iqss/dataverse-design-system'
66
import styles from '../dataset-terms-tab/DatasetTermsTab.module.scss'
7-
import { TermsOfAccess } from '@/dataset/domain/models/Dataset'
7+
import {
8+
DatasetNonNumericVersionSearchParam,
9+
DatasetPublishingStatus,
10+
TermsOfAccess
11+
} from '@/dataset/domain/models/Dataset'
812
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
913
import { useDataset } from '../../dataset/DatasetContext'
1014
import { useUpdateTermsOfAccess } from './useUpdateTermsOfAccess'
15+
import { QueryParamKey, Route } from '@/sections/Route.enum'
16+
import { useNavigate } from 'react-router-dom'
1117

1218
interface RestrictedFilesTabProps {
1319
datasetRepository: DatasetRepository
1420
}
1521

1622
export function RestrictedFilesTab({
17-
datasetRepository: _datasetRepository
23+
datasetRepository: datasetRepository
1824
}: RestrictedFilesTabProps) {
1925
const { t } = useTranslation('dataset')
2026
const { t: tShared } = useTranslation('shared')
2127
const { dataset, refreshDataset } = useDataset()
28+
const navigate = useNavigate()
2229

2330
const defaultTermsOfAccess: TermsOfAccess = {
2431
fileAccessRequest: false,
@@ -36,7 +43,7 @@ export function RestrictedFilesTab({
3643
const formContainerRef = useRef<HTMLDivElement>(null)
3744

3845
const { handleUpdateTermsOfAccess, isLoading, error } = useUpdateTermsOfAccess({
39-
datasetRepository: _datasetRepository,
46+
datasetRepository: datasetRepository,
4047
onSuccessfulUpdateTermsOfAccess: () => {
4148
toast.success(t('alerts.termsUpdated.alertText'))
4249
refreshDataset()
@@ -101,6 +108,20 @@ export function RestrictedFilesTab({
101108
})
102109
}, [initialTermsOfAccess, isRequestAccessEnabled, t])
103110

111+
const handleCancel = () => {
112+
if (!dataset) return
113+
114+
const searchParams = new URLSearchParams()
115+
searchParams.set(QueryParamKey.PERSISTENT_ID, dataset.persistentId)
116+
117+
if (dataset.version.publishingStatus === DatasetPublishingStatus.DRAFT) {
118+
searchParams.set(QueryParamKey.VERSION, DatasetNonNumericVersionSearchParam.DRAFT)
119+
} else {
120+
searchParams.set(QueryParamKey.VERSION, dataset.version.number.toString())
121+
}
122+
123+
navigate(`${Route.DATASETS}?${searchParams.toString()}`)
124+
}
104125
return (
105126
<div ref={formContainerRef}>
106127
{
@@ -199,14 +220,7 @@ export function RestrictedFilesTab({
199220
disabled={isLoading || (!isRequestAccessEnabled && !isTermsOfAccessProvided)}>
200221
{isLoading ? tShared('saving') : tShared('saveChanges')}
201222
</Button>
202-
<Button
203-
variant="secondary"
204-
type="button"
205-
onClick={() => {
206-
const resetValues =
207-
(dataset?.termsOfUse.termsOfAccess as TermsOfAccess) ?? initialTermsOfAccess
208-
reset(resetValues)
209-
}}>
223+
<Button variant="secondary" type="button" onClick={handleCancel}>
210224
{tShared('cancel')}
211225
</Button>
212226
</div>

tests/component/sections/edit-dataset-terms/DatasetTermsTab.spec.tsx

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -180,26 +180,6 @@ describe('DatasetTermsTab', () => {
180180

181181
cy.findByRole('button', { name: 'Save Changes' }).should('be.enabled')
182182
})
183-
184-
it('resets form when cancel is clicked', () => {
185-
cy.customMount(
186-
withProviders(
187-
<DatasetTermsTab
188-
licenseRepository={licenseRepository}
189-
datasetRepository={datasetRepository}
190-
/>,
191-
mockDataset
192-
)
193-
)
194-
195-
cy.findByRole('option', { name: 'Custom Dataset Terms' }).should('be.selected')
196-
cy.findByTestId('customTerms.confidentialityDeclaration')
197-
.clear()
198-
.type('test confidentiality declaration')
199-
200-
cy.findByRole('button', { name: 'Cancel' }).click()
201-
cy.findByText('test confidentiality declaration').should('not.exist')
202-
})
203183
})
204184

205185
describe('Loading States', () => {

tests/component/sections/edit-dataset-terms/RestrictedFilesTab.spec.tsx

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -129,33 +129,6 @@ describe('RestrictedFilesTab', () => {
129129
cy.findByRole('button', { name: 'Save Changes' }).should('be.enabled')
130130
})
131131

132-
it('resets form to initial values when cancel is clicked', () => {
133-
const termsOfAccess = TermsOfAccessMother.create({
134-
termsOfAccessForRestrictedFiles: 'Original terms',
135-
fileAccessRequest: true
136-
})
137-
138-
const datasetWithTerms = DatasetMother.create({
139-
id: 123,
140-
termsOfUse: {
141-
termsOfAccess: termsOfAccess
142-
}
143-
})
144-
145-
cy.customMount(
146-
withProviders(
147-
<RestrictedFilesTab datasetRepository={datasetRepository} />,
148-
datasetWithTerms
149-
)
150-
)
151-
152-
cy.findByLabelText('Terms of Access for Restricted Files').clear().type('Modified terms')
153-
cy.findByDisplayValue('Modified terms').should('exist')
154-
155-
cy.findByRole('button', { name: 'Cancel' }).click()
156-
cy.findByDisplayValue('Original terms').should('exist')
157-
})
158-
159132
it('submits form data when save is clicked', () => {
160133
cy.customMount(
161134
withProviders(<RestrictedFilesTab datasetRepository={datasetRepository} />, mockDataset)

tests/e2e-integration/e2e/sections/edit-dataset-terms/EditDatasetTerms.spec.tsx

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { DatasetNonNumericVersionSearchParam } from '../../../../../src/dataset/
44
import { DatasetHelper } from '../../../shared/datasets/DatasetHelper'
55
import { QueryParamKey, Route } from '../../../../../src/sections/Route.enum'
66

7-
describe('Edit Dataset Terms End-to-End', () => {
7+
describe('Edit Dataset Terms', () => {
88
beforeEach(() => {
99
TestsUtils.login().then((token) => {
1010
cy.wrap(TestsUtils.setup(token))
@@ -48,17 +48,16 @@ describe('Edit Dataset Terms End-to-End', () => {
4848

4949
cy.findByTestId('customTerms.termsOfUse').type('These are custom terms for this dataset')
5050

51-
cy.findByRole('button', { name: 'Save Changes' }).should('be.enabled')
51+
cy.findByRole('button', { name: 'Save Changes' }).click()
5252

53+
cy.findByText(/The license for this dataset has been updated./i).should('exist')
5354
cy.findByRole('button', { name: 'Cancel' }).click()
54-
cy.get('select').should('not.have.value', 'CUSTOM')
55+
cy.findByText('Custom Dataset Terms').should('exist')
5556
})
5657
})
57-
58-
// TODO: Add tests for custom terms requirement and toast messages
5958
})
6059

61-
describe.only('Restricted Files Tab', () => {
60+
describe('Restricted Files Tab', () => {
6261
it('visits the Restricted Files + Terms of Access tab and interacts with form', () => {
6362
const datasetTitle = faker.lorem.sentence()
6463

@@ -106,8 +105,13 @@ describe('Edit Dataset Terms End-to-End', () => {
106105

107106
cy.findByLabelText('Size of Collection').type('500 MB')
108107

109-
cy.findByRole('button', { name: 'Save Changes' }).should('be.enabled')
110-
cy.findByRole('button', { name: 'Cancel' }).should('exist')
108+
cy.findByRole('button', { name: 'Save Changes' }).click()
109+
cy.findByRole('button', { name: 'Cancel' }).click()
110+
111+
cy.findByRole('tab', { name: 'Terms and Guestbook' }).click()
112+
cy.findByText(/Data can be accessed through the university data center/i).should('exist')
113+
cy.findByText(/dataowner@university.edu/i).should('exist')
114+
cy.findByText(/500 MB/i).should('exist')
111115
})
112116
})
113117

@@ -158,7 +162,6 @@ describe('Edit Dataset Terms End-to-End', () => {
158162

159163
cy.visit(editDatasetTermsUrl)
160164

161-
// Should start with restricted files tab active
162165
cy.findByRole('tab', { name: 'Restricted Files + Terms of Access' }).should(
163166
'have.attr',
164167
'aria-selected',
@@ -179,30 +182,11 @@ describe('Edit Dataset Terms End-to-End', () => {
179182
const editDatasetTermsUrl = `/spa${Route.EDIT_DATASET_TERMS}?${searchParams.toString()}`
180183

181184
cy.visit(editDatasetTermsUrl)
182-
183-
// Click on dataset title in breadcrumbs to go back
184185
cy.findByRole('link', { name: datasetTitle }).click()
185186

186-
// Should navigate to dataset page
187187
cy.url().should('include', '/datasets')
188188
cy.findByRole('heading', { name: datasetTitle }).should('exist')
189189
})
190190
})
191-
192-
it('handles non-existent dataset gracefully', () => {
193-
const searchParams = new URLSearchParams()
194-
searchParams.set(QueryParamKey.PERSISTENT_ID, 'non-existent-dataset')
195-
searchParams.set(QueryParamKey.VERSION, DatasetNonNumericVersionSearchParam.DRAFT)
196-
197-
const editDatasetTermsUrl = `/spa${Route.EDIT_DATASET_TERMS}?${searchParams.toString()}`
198-
199-
cy.visit(editDatasetTermsUrl)
200-
201-
cy.findByText('The dataset you are looking for was not found').should('exist')
202-
})
203-
204-
it('handles unauthorized access gracefully', () => {
205-
cy.log('Test for unauthorized access would go here')
206-
})
207191
})
208192
})

0 commit comments

Comments
 (0)