Skip to content

Commit fdaa4a6

Browse files
committed
fix: making changes based on reviews
1 parent 843482b commit fdaa4a6

File tree

9 files changed

+41
-34
lines changed

9 files changed

+41
-34
lines changed

docs/useCases.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ The different use cases currently available in the package are classified below,
1818
- [Get Collection Featured Items](#get-collection-featured-items)
1919
- [Get Collections for Linking](#get-collections-for-linking)
2020
- [Collections write use cases](#collections-write-use-cases)
21-
- [Create a Template](#create-a-template)
21+
- [Create a Dataset Template](#create-a-dataset-template)
2222
- [Create a Collection](#create-a-collection)
2323
- [Update a Collection](#update-a-collection)
2424
- [Publish a Collection](#publish-a-collection)
@@ -568,14 +568,14 @@ deleteCollectionFeaturedItem.execute(featuredItemId)
568568

569569
_See [use case](../src/collections/domain/useCases/DeleteCollectionFeaturedItem.ts)_ definition.
570570

571-
#### Create a Template
571+
#### Create a Dataset Template
572572

573-
Creates a template for a given Dataverse collection id or alias.
573+
Creates a dataset template for a given Dataverse collection id or alias.
574574

575575
##### Example call:
576576

577577
```typescript
578-
import { createTemplate } from '@iqss/dataverse-client-javascript'
578+
import { createDatasetTemplate } from '@iqss/dataverse-client-javascript'
579579
import { TemplateCreateDTO } from '@iqss/dataverse-client-javascript'
580580

581581
const collectionAlias = ':root'
@@ -598,10 +598,10 @@ const template: TemplateCreateDTO = {
598598
instructions: [{ instructionField: 'author', instructionText: 'The author data' }]
599599
}
600600

601-
await createTemplate.execute(template, collectionAlias)
601+
await createDatasetTemplate.execute(template, collectionAlias)
602602
```
603603

604-
_See [use case](../src/collections/domain/useCases/CreateTemplate.ts) implementation_.
604+
_See [use case](../src/collections/domain/useCases/CreateDatasetTemplate.ts) implementation_.
605605

606606
## Datasets
607607

src/collections/domain/dtos/TemplateCreateDTO.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ import { MetadataFieldTypeClass } from '../../../metadataBlocks/domain/models/Me
22

33
export interface TemplateCreateDTO {
44
name: string
5-
isDefault: boolean | false // defaults to false if not provided
5+
isDefault?: boolean
66
fields?: TemplateFieldDTO[]
77
instructions?: TemplateInstructionDTO[]
88
}
99

1010
export interface TemplateFieldDTO {
1111
typeName: string
1212
multiple: boolean
13-
typeClass: MetadataFieldTypeClass
14-
value: TemplateFieldValueDTO[]
13+
typeClass?: MetadataFieldTypeClass
14+
value?: TemplateFieldValueDTO[]
1515
}
1616

1717
export interface TemplateFieldValueDTO {

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,8 @@ export interface ICollectionsRepository {
6969
searchTerm: string,
7070
alreadyLinked: boolean
7171
): Promise<CollectionSummary[]>
72-
createTemplate(collectionIdOrAlias: number | string, template: TemplateCreateDTO): Promise<void>
72+
createDatasetTemplate(
73+
collectionIdOrAlias: number | string,
74+
template: TemplateCreateDTO
75+
): Promise<void>
7376
}

src/collections/domain/useCases/CreateTemplate.ts renamed to src/collections/domain/useCases/CreateDatasetTemplate.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { UseCase } from '../../../core/domain/useCases/UseCase'
33
import { ICollectionsRepository } from '../repositories/ICollectionsRepository'
44
import { TemplateCreateDTO } from '../dtos/TemplateCreateDTO'
55

6-
export class CreateTemplate implements UseCase<void> {
6+
export class CreateDatasetTemplate implements UseCase<void> {
77
private collectionsRepository: ICollectionsRepository
88

99
constructor(collectionsRepository: ICollectionsRepository) {
@@ -14,13 +14,14 @@ export class CreateTemplate implements UseCase<void> {
1414
* Creates a Dataset Template in the specified collection.
1515
*
1616
* @param {TemplateCreateDTO} template - Template definition payload.
17-
* @param {number | string} [collectionIdOrAlias = ':root'] - Target collection id or alias.
17+
* @param {number | string} [collectionIdOrAlias = ':root'] - A generic collection identifier, which can be either a string (for queries by CollectionAlias), or a number (for queries by CollectionId)
18+
* If this parameter is not set, the default value is: ':root'.
1819
* @returns {Promise<void>}
1920
*/
2021
async execute(
2122
template: TemplateCreateDTO,
2223
collectionIdOrAlias: number | string = ROOT_COLLECTION_ID
2324
): Promise<void> {
24-
return await this.collectionsRepository.createTemplate(collectionIdOrAlias, template)
25+
return await this.collectionsRepository.createDatasetTemplate(collectionIdOrAlias, template)
2526
}
2627
}

src/collections/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { LinkCollection } from './domain/useCases/LinkCollection'
1616
import { UnlinkCollection } from './domain/useCases/UnlinkCollection'
1717
import { GetCollectionLinks } from './domain/useCases/GetCollectionLinks'
1818
import { GetCollectionsForLinking } from './domain/useCases/GetCollectionsForLinking'
19-
import { CreateTemplate } from './domain/useCases/CreateTemplate'
19+
import { CreateDatasetTemplate } from './domain/useCases/CreateDatasetTemplate'
2020

2121
const collectionsRepository = new CollectionsRepository()
2222

@@ -37,7 +37,7 @@ const linkCollection = new LinkCollection(collectionsRepository)
3737
const unlinkCollection = new UnlinkCollection(collectionsRepository)
3838
const getCollectionLinks = new GetCollectionLinks(collectionsRepository)
3939
const getCollectionsForLinking = new GetCollectionsForLinking(collectionsRepository)
40-
const createTemplate = new CreateTemplate(collectionsRepository)
40+
const createDatasetTemplate = new CreateDatasetTemplate(collectionsRepository)
4141

4242
export {
4343
getCollection,
@@ -57,7 +57,7 @@ export {
5757
unlinkCollection,
5858
getCollectionLinks,
5959
getCollectionsForLinking,
60-
createTemplate
60+
createDatasetTemplate
6161
}
6262
export { Collection, CollectionInputLevel } from './domain/models/Collection'
6363
export { CollectionFacet } from './domain/models/CollectionFacet'

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ export class CollectionsRepository extends ApiRepository implements ICollections
530530
})
531531
}
532532

533-
public async createTemplate(
533+
public async createDatasetTemplate(
534534
collectionIdOrAlias: number | string,
535535
template: TemplateCreateDTO
536536
): Promise<void> {

test/functional/collections/CreateTemplate.test.ts renamed to test/functional/collections/createDatasetTemplate.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/
33
import { TestConstants } from '../../testHelpers/TestConstants'
44
import { getDatasetTemplates } from '../../../src/datasets'
55
import { TemplateCreateDTO } from '../../../src/collections/domain/dtos/TemplateCreateDTO'
6-
import { createTemplate } from '../../../src/collections'
6+
import { createDatasetTemplate } from '../../../src/collections'
77
import { MetadataFieldTypeClass } from '../../../src/metadataBlocks/domain/models/MetadataBlock'
88
import { deleteDatasetTemplateViaApi } from '../../testHelpers/datasets/datasetTemplatesHelper'
99

@@ -48,7 +48,7 @@ describe('CreateTemplate.execute', () => {
4848
}
4949
]
5050
}
51-
await createTemplate.execute(templateDto)
51+
await createDatasetTemplate.execute(templateDto)
5252
const templates = await getDatasetTemplates.execute(':root')
5353

5454
expect(templates[templates.length - 1].name).toBe(templateDto.name)

test/integration/collections/CollectionsRepository.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
restrictFile,
1818
deleteFile,
1919
linkDataset,
20-
createTemplate,
20+
createDatasetTemplate,
2121
MetadataFieldTypeClass
2222
} from '../../../src'
2323
import { ApiConfig } from '../../../src'
@@ -2149,7 +2149,7 @@ describe('CollectionsRepository', () => {
21492149
})
21502150
})
21512151

2152-
describe('createTemplate', () => {
2152+
describe('createDatasetTemplate', () => {
21532153
const templateDto: TemplateCreateDTO = {
21542154
name: 'CollectionsRepository template',
21552155
isDefault: true,
@@ -2182,7 +2182,7 @@ describe('CollectionsRepository', () => {
21822182
]
21832183
}
21842184
test('should create a template in :root with provided JSON', async () => {
2185-
await createTemplate.execute(templateDto)
2185+
await createDatasetTemplate.execute(templateDto)
21862186
const templates = await getDatasetTemplates.execute(':root')
21872187

21882188
expect(templates[templates.length - 1].name).toBe(templateDto.name)
@@ -2198,9 +2198,9 @@ describe('CollectionsRepository', () => {
21982198
const expectedError = new WriteError(
21992199
`[404] Can't find dataverse with identifier='invalidCollectionAlias'`
22002200
)
2201-
await expect(createTemplate.execute(templateDto, 'invalidCollectionAlias')).rejects.toThrow(
2202-
expectedError
2203-
)
2201+
await expect(
2202+
createDatasetTemplate.execute(templateDto, 'invalidCollectionAlias')
2203+
).rejects.toThrow(expectedError)
22042204
})
22052205
})
22062206
})

test/unit/collections/CreateTemplate.test.ts renamed to test/unit/collections/createDatasetTemplate.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { CreateTemplate } from '../../../src/collections/domain/useCases/CreateTemplate'
1+
import { CreateDatasetTemplate } from '../../../src/collections/domain/useCases/CreateDatasetTemplate'
22
import { ICollectionsRepository } from '../../../src/collections/domain/repositories/ICollectionsRepository'
33
import { TemplateCreateDTO } from '../../../src/collections/domain/dtos/TemplateCreateDTO'
44
import { WriteError } from '../../../src'
@@ -9,23 +9,26 @@ describe('execute', () => {
99

1010
test('should return undefined when repository call is successful', async () => {
1111
const collectionRepositoryStub: ICollectionsRepository = {} as ICollectionsRepository
12-
collectionRepositoryStub.createTemplate = jest.fn().mockResolvedValue(testCollectionId)
13-
const sut = new CreateTemplate(collectionRepositoryStub)
12+
collectionRepositoryStub.createDatasetTemplate = jest.fn().mockResolvedValue(testCollectionId)
13+
const sut = new CreateDatasetTemplate(collectionRepositoryStub)
1414

1515
const actual = await sut.execute(testTemplateDTO)
1616

17-
expect(collectionRepositoryStub.createTemplate).toHaveBeenCalledWith(':root', testTemplateDTO)
17+
expect(collectionRepositoryStub.createDatasetTemplate).toHaveBeenCalledWith(
18+
':root',
19+
testTemplateDTO
20+
)
1821
expect(actual).toEqual(testCollectionId)
1922
})
2023

2124
test('should call repository with provided collection id/alias', async () => {
2225
const collectionRepositoryStub: ICollectionsRepository = {} as ICollectionsRepository
23-
collectionRepositoryStub.createTemplate = jest.fn().mockResolvedValue(testCollectionId)
26+
collectionRepositoryStub.createDatasetTemplate = jest.fn().mockResolvedValue(testCollectionId)
2427

25-
const sut = new CreateTemplate(collectionRepositoryStub)
28+
const sut = new CreateDatasetTemplate(collectionRepositoryStub)
2629
const actual = await sut.execute(testTemplateDTO, 'alias123')
2730

28-
expect(collectionRepositoryStub.createTemplate).toHaveBeenCalledWith(
31+
expect(collectionRepositoryStub.createDatasetTemplate).toHaveBeenCalledWith(
2932
'alias123',
3033
testTemplateDTO
3134
)
@@ -35,8 +38,8 @@ describe('execute', () => {
3538

3639
test('should return error result on repository error', async () => {
3740
const collectionRepositoryStub: ICollectionsRepository = {} as ICollectionsRepository
38-
collectionRepositoryStub.createTemplate = jest.fn().mockRejectedValue(new WriteError())
39-
const testCreateTemplate = new CreateTemplate(collectionRepositoryStub)
41+
collectionRepositoryStub.createDatasetTemplate = jest.fn().mockRejectedValue(new WriteError())
42+
const testCreateTemplate = new CreateDatasetTemplate(collectionRepositoryStub)
4043

4144
await expect(testCreateTemplate.execute(testTemplateDTO)).rejects.toThrow(WriteError)
4245
})

0 commit comments

Comments
 (0)