Skip to content

Commit acf5b17

Browse files
committed
fix: some tests error
1 parent 6469d8b commit acf5b17

File tree

13 files changed

+139
-453
lines changed

13 files changed

+139
-453
lines changed

src/dataset/infrastructure/mappers/JSDatasetMapper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export class JSDatasetMapper {
7676
),
7777
JSDatasetMapper.toDatasetPermissions(jsDatasetPermissions),
7878
JSDatasetMapper.toLocks(jsDatasetLocks),
79-
jsDataset.termsOfUse.termsOfAccess.termsOfAccessForRestrictedFiles !== undefined,
79+
true, // TODO Connect with dataset hasValidTermsOfAccess
8080
true, // TODO Connect with dataset hasOneTabularFileAtLeast
8181
true, // TODO Connect with dataset isValid
8282
JSDatasetMapper.toDownloadUrls(jsDataset.persistentId, version),

src/sections/edit-dataset-terms/EditDatasetTerms.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,7 @@ export const EditDatasetTerms = ({
120120
</Accordion>
121121
) : (
122122
<Tabs activeKey={activeKey} onSelect={updateTabOnSelect}>
123-
<Tabs.Tab
124-
eventKey={tabsKeys.datasetTerms}
125-
title={t('editTerms.tabs.datasetTerms')}
126-
disabled={true}>
123+
<Tabs.Tab eventKey={tabsKeys.datasetTerms} title={t('editTerms.tabs.datasetTerms')}>
127124
<div className={styles['tab-container']}>
128125
<DatasetTermsTab
129126
licenseRepository={licenseRepository}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ export function DatasetTermsTab({
243243
<Row>
244244
<Col>
245245
<Form.Group.TextArea
246+
data-testid={`customTerms.${field.name}`}
246247
value={value as string}
247248
onChange={onChange}
248249
isInvalid={invalid}

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

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ import { DatasetRepository } from '@/dataset/domain/repositories/DatasetReposito
99
import { useDataset } from '../../dataset/DatasetContext'
1010
import { useUpdateTermsOfAccess } from './useUpdateTermsOfAccess'
1111

12-
// Use TermsOfAccess directly from model
13-
type RestrictedFilesFormData = TermsOfAccess
14-
1512
interface RestrictedFilesTabProps {
1613
datasetRepository: DatasetRepository
1714
initialTermsOfAccess: TermsOfAccess
@@ -37,26 +34,21 @@ export function RestrictedFilesTab({
3734
}
3835
})
3936

40-
const form = useForm<RestrictedFilesFormData>({
41-
defaultValues:
42-
(dataset?.termsOfUse.termsOfAccess as RestrictedFilesFormData) ?? initialTermsOfAccess,
37+
const form = useForm<TermsOfAccess>({
38+
defaultValues: (dataset?.termsOfUse.termsOfAccess as TermsOfAccess) ?? initialTermsOfAccess,
4339
mode: 'onChange'
4440
})
4541

4642
const { control, handleSubmit, reset, watch } = form
4743

48-
// When the dataset loads/changes, reset the form to the original terms from dataset first
4944
useEffect(() => {
50-
const original = (dataset?.termsOfUse.termsOfAccess as RestrictedFilesFormData) ?? null
45+
const original = (dataset?.termsOfUse.termsOfAccess as TermsOfAccess) ?? null
5146
if (original) {
5247
reset(original)
5348
}
5449
}, [dataset, reset])
5550

56-
// Watch the fileAccessRequest field to show/hide info alert
57-
const watchedFileAccessRequest = watch('fileAccessRequest')
58-
59-
const onSubmit = async (data: RestrictedFilesFormData) => {
51+
const onSubmit = async (data: TermsOfAccess) => {
6052
if (!dataset) return
6153

6254
setIsSubmitting(true)
@@ -91,7 +83,7 @@ export function RestrictedFilesTab({
9183
// Generate terms of access fields dynamically from the actual termsOfAccess (excluding fileAccessRequest)
9284
const termsOfAccessFields = useMemo(() => {
9385
const termsOfAccess =
94-
(dataset?.termsOfUse.termsOfAccess as RestrictedFilesFormData) ?? initialTermsOfAccess
86+
(dataset?.termsOfUse.termsOfAccess as TermsOfAccess) ?? initialTermsOfAccess
9587
return Object.keys(termsOfAccess)
9688
.filter((fieldName) => fieldName !== 'fileAccessRequest') // Exclude checkbox field
9789
.map((fieldName) => ({
@@ -107,12 +99,11 @@ export function RestrictedFilesTab({
10799

108100
return (
109101
<div ref={formContainerRef}>
110-
{/* Show info alert when access request is enabled */}
111-
{watchedFileAccessRequest && (
102+
{
112103
<Alert variant="info" dismissible={false}>
113104
{t('termsTab.termsOfAccessInfo')}
114105
</Alert>
115-
)}
106+
}
116107

117108
<FormProvider {...form}>
118109
<form onSubmit={handleSubmit(onSubmit)} onKeyDown={preventEnterSubmit} noValidate={true}>
@@ -127,12 +118,12 @@ export function RestrictedFilesTab({
127118
name="fileAccessRequest"
128119
control={control}
129120
render={({ field: { onChange, value } }) => (
130-
<Form.Group>
121+
<Form.Group style={{ margin: '5px' }}>
131122
<Form.Group.Checkbox
132123
id="fileAccessRequest"
133124
checked={value}
134125
onChange={onChange}
135-
label={t('termsTab.requestAccess')}
126+
label={t('editTerms.restrictedFiles.enableAccessRequest')}
136127
/>
137128
</Form.Group>
138129
)}
@@ -150,7 +141,7 @@ export function RestrictedFilesTab({
150141
{t(`termsTab.${field.translationKey}`)}
151142
</Form.Group.Label>
152143
<Controller
153-
name={field.name as keyof RestrictedFilesFormData}
144+
name={field.name as keyof TermsOfAccess}
154145
control={control}
155146
rules={field.rules}
156147
render={({ field: { onChange, value, ref }, fieldState: { invalid, error } }) => (
@@ -202,10 +193,7 @@ export function RestrictedFilesTab({
202193
type="button"
203194
disabled={isSubmitting}
204195
onClick={() =>
205-
reset(
206-
(dataset?.termsOfUse.termsOfAccess as RestrictedFilesFormData) ??
207-
initialTermsOfAccess
208-
)
196+
reset((dataset?.termsOfUse.termsOfAccess as TermsOfAccess) ?? initialTermsOfAccess)
209197
}>
210198
{tShared('cancel')}
211199
</Button>

src/stories/dataset/DatasetErrorMockRepository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export class DatasetErrorMockRepository implements DatasetMockRepository {
8888
})
8989
}
9090

91-
updateLicense(
91+
updateDatasetLicense(
9292
_datasetId: string | number,
9393
_licenseUpdateRequest: DatasetLicenseUpdateRequest
9494
): Promise<void> {

tests/component/dataset/infrastructure/mappers/JSDatasetMapper.spec.ts

Lines changed: 8 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
CitationMetadataBlock,
1212
DatasetMetadataBlock
1313
} from '@iqss/dataverse-client-javascript/dist/datasets/domain/models/Dataset'
14-
import { DatasetLockReason } from '../../../../../src/dataset/domain/models/Dataset'
14+
import { DatasetLockReason, TermsOfAccess } from '../../../../../src/dataset/domain/models/Dataset'
1515
import {
1616
FileDownloadMode,
1717
FileDownloadSize,
@@ -25,9 +25,9 @@ import {
2525
chai.use(chaiAsPromised)
2626
const expect = chai.expect
2727

28-
const termsOfAccess = {
28+
const termsOfAccess: TermsOfAccess = {
2929
fileAccessRequest: true,
30-
termsOfAccess: 'New terms',
30+
termsOfAccessForRestrictedFiles: 'New terms',
3131
dataAccessPlace: 'New place',
3232
originalArchive: 'New archive',
3333
availabilityStatus: 'New status',
@@ -50,16 +50,7 @@ const jsDataset = {
5050
},
5151
internalVersionNumber: 1,
5252
termsOfUse: {
53-
termsOfAccess: {
54-
fileAccessRequest: true,
55-
termsOfAccess: 'New terms',
56-
dataAccessPlace: 'New place',
57-
originalArchive: 'New archive',
58-
availabilityStatus: 'New status',
59-
contactForAccess: 'New contact',
60-
sizeOfCollection: 'New size',
61-
studyCompletion: 'New completion'
62-
}
53+
termsOfAccess: termsOfAccess
6354
},
6455
metadataBlocks: [
6556
{
@@ -261,16 +252,7 @@ const expectedDataset = {
261252
iconUri: 'https://licensebuttons.net/p/zero/1.0/88x31.png'
262253
},
263254
termsOfUse: {
264-
termsOfAccess: {
265-
fileAccessRequest: true,
266-
termsOfAccess: 'New terms',
267-
dataAccessPlace: 'New place',
268-
originalArchive: 'New archive',
269-
availabilityStatus: 'New status',
270-
contactForAccess: 'New contact',
271-
sizeOfCollection: 'New size',
272-
studyCompletion: 'New completion'
273-
}
255+
termsOfAccess: termsOfAccess
274256
},
275257
metadataBlocks: [
276258
{
@@ -378,16 +360,7 @@ const expectedDatasetWithPublicationDate = {
378360
iconUri: 'https://licensebuttons.net/p/zero/1.0/88x31.png'
379361
},
380362
termsOfUse: {
381-
termsOfAccess: {
382-
fileAccessRequest: true,
383-
termsOfAccess: 'New terms',
384-
dataAccessPlace: 'New place',
385-
originalArchive: 'New archive',
386-
availabilityStatus: 'New status',
387-
contactForAccess: 'New contact',
388-
sizeOfCollection: 'New size',
389-
studyCompletion: 'New completion'
390-
}
363+
termsOfAccess: termsOfAccess
391364
},
392365
metadataBlocks: [
393366
{
@@ -496,16 +469,7 @@ const expectedDatasetWithNextVersionNumbers = {
496469
iconUri: 'https://licensebuttons.net/p/zero/1.0/88x31.png'
497470
},
498471
termsOfUse: {
499-
termsOfAccess: {
500-
fileAccessRequest: true,
501-
termsOfAccess: 'New terms',
502-
dataAccessPlace: 'New place',
503-
originalArchive: 'New archive',
504-
availabilityStatus: 'New status',
505-
contactForAccess: 'New contact',
506-
sizeOfCollection: 'New size',
507-
studyCompletion: 'New completion'
508-
}
472+
termsOfAccess: termsOfAccess
509473
},
510474
metadataBlocks: [
511475
{
@@ -637,16 +601,7 @@ const expectedDatasetAlternateVersion = {
637601
iconUri: 'https://licensebuttons.net/p/zero/1.0/88x31.png'
638602
},
639603
termsOfUse: {
640-
termsOfAccess: {
641-
fileAccessRequest: true,
642-
termsOfAccess: 'New terms',
643-
dataAccessPlace: 'New place',
644-
originalArchive: 'New archive',
645-
availabilityStatus: 'New status',
646-
contactForAccess: 'New contact',
647-
sizeOfCollection: 'New size',
648-
studyCompletion: 'New completion'
649-
}
604+
termsOfAccess: termsOfAccess
650605
},
651606
locks: [
652607
{

tests/component/sections/dataset/Dataset.spec.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ describe('Dataset', () => {
445445

446446
cy.findAllByText(testDataset.version.title).should('exist')
447447

448-
const termsTab = cy.findByRole('tab', { name: 'Terms' })
448+
const termsTab = cy.findByRole('tab', { name: 'Terms and Guestbook' })
449449
termsTab.should('exist')
450450

451451
termsTab.click()
@@ -532,7 +532,7 @@ describe('Dataset', () => {
532532

533533
cy.findAllByText(testDataset.version.title).should('exist')
534534
cy.findByRole('tab', { name: 'Files' }).should('exist')
535-
cy.findByRole('tab', { name: 'Terms' }).should('exist')
535+
cy.findByRole('tab', { name: 'Terms and Guestbook' }).should('exist')
536536
cy.findByRole('tab', { name: 'Metadata' }).should('exist')
537537
cy.findByRole('tab', { name: 'Versions' }).should('exist')
538538
})

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

Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -140,37 +140,32 @@ describe('DatasetTermsTab', () => {
140140
cy.findByText(customTerms?.disclaimer as string).should('exist')
141141
})
142142

143-
// it('validates required fields in custom terms', () => {
144-
// // Create custom terms with empty termsOfUse to trigger validation
145-
// const customTerms = CustomTermsMother.create({
146-
// termsOfUse: ''
147-
// })
148-
// datasetRepository.updateLicense = cy.stub().resolves()
149-
150-
// cy.customMount(
151-
// withProviders(
152-
// <DatasetTermsTab
153-
// initialLicense={customTerms}
154-
// licenseRepository={licenseRepository}
155-
// datasetRepository={datasetRepository}
156-
// isInitialCustomTerms={true}
157-
// />,
158-
// mockDataset
159-
// )
160-
// )
161-
162-
// cy.findByLabelText('Terms of Use').should('exist')
163-
// cy.findByRole('button', { name: 'Save Changes' }).should('be.disabled')
164-
165-
// cy.findByRole('button', { name: 'Save Changes' }).click()
166-
167-
// cy.findByText('Custom terms are required when Custom Dataset Terms is selected').should(
168-
// 'exist'
169-
// )
170-
171-
// cy.findByLabelText('Terms of Use').type('Some custom terms')
172-
// cy.findByRole('button', { name: 'Save Changes' }).should('be.enabled')
173-
// })
143+
it('validates required fields in custom terms', () => {
144+
const customTerms = CustomTermsMother.create({
145+
termsOfUse: ''
146+
})
147+
datasetRepository.updateDatasetLicense = cy.stub().resolves()
148+
149+
cy.customMount(
150+
withProviders(
151+
<DatasetTermsTab
152+
initialLicense={customTerms}
153+
licenseRepository={licenseRepository}
154+
datasetRepository={datasetRepository}
155+
isInitialCustomTerms={true}
156+
/>,
157+
mockDataset
158+
)
159+
)
160+
161+
cy.findByTestId('customTerms.termsOfUse').should('exist')
162+
cy.findByRole('button', { name: 'Save Changes' }).should('be.disabled')
163+
cy.findByTestId('customTerms.termsOfUse').type('temp').clear()
164+
cy.findByText('Terms of use is required.').should('exist')
165+
166+
cy.findByTestId('customTerms.termsOfUse').type('Some custom terms')
167+
cy.findByRole('button', { name: 'Save Changes' }).should('be.enabled')
168+
})
174169

175170
it('allows switching between license and custom terms', () => {
176171
const license = mockLicenses[0]
@@ -263,7 +258,7 @@ describe('DatasetTermsTab', () => {
263258
it('shows saving state during form submission', () => {
264259
const license = mockLicenses[0]
265260
// Set up stub that never resolves to test loading state
266-
datasetRepository.updateLicense = cy.stub().returns(new Promise(() => {}))
261+
datasetRepository.updateDatasetLicense = cy.stub().returns(new Promise(() => {}))
267262

268263
cy.customMount(
269264
withProviders(
@@ -308,12 +303,12 @@ describe('DatasetTermsTab', () => {
308303
)
309304
)
310305

311-
cy.findByText('Error').should('exist')
306+
cy.findByText(/Something went wrong getting the licenses. Try again later./i).should('exist')
312307
})
313308

314309
it('displays error message when license update fails', () => {
315310
const license = mockLicenses[0]
316-
datasetRepository.updateLicense = cy.stub().rejects(new Error())
311+
datasetRepository.updateDatasetLicense = cy.stub().rejects(new Error())
317312

318313
cy.customMount(
319314
withProviders(
@@ -327,14 +322,12 @@ describe('DatasetTermsTab', () => {
327322
)
328323
)
329324

330-
// Wait for component to load
331325
cy.findByDisplayValue('CC0 1.0').should('exist')
332326

333-
// Submit form
334327
cy.findByRole('button', { name: 'Save Changes' }).click()
335-
336-
// Should show error message
337-
cy.findByText('Error').should('exist')
328+
cy.findByText(
329+
/An error occurred while updating the dataset license. Please try again./i
330+
).should('exist')
338331
})
339332
})
340333
})

0 commit comments

Comments
 (0)