Skip to content

Commit 08f0fa5

Browse files
committed
Stash: create collection data access logic WIP
1 parent 3fe0ecb commit 08f0fa5

File tree

5 files changed

+32
-7
lines changed

5 files changed

+32
-7
lines changed

src/collections/domain/repositories/ICollectionsRepository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ import { Collection } from '../models/Collection'
33

44
export interface ICollectionsRepository {
55
getCollection(collectionIdOrAlias: number | string): Promise<Collection>
6-
createCollection(collectionDTO: CollectionDTO): Promise<void>
6+
createCollection(collectionDTO: CollectionDTO, parentCollectionId: string): Promise<void>
77
}

src/collections/domain/useCases/CreateCollection.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export class CreateCollection implements UseCase<void> {
1212
/**
1313
* TODO
1414
*/
15-
async execute(newCollection: CollectionDTO): Promise<void> {
16-
await this.collectionsRepository.createCollection(newCollection)
15+
async execute(newCollection: CollectionDTO, parentCollectionId = 'root'): Promise<void> {
16+
await this.collectionsRepository.createCollection(newCollection, parentCollectionId)
1717
}
1818
}

src/collections/infra/repositories/CollectionsRepository.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,25 @@ export class CollectionsRepository extends ApiRepository implements ICollections
1919
})
2020
}
2121

22-
public async createCollection(collectionDTO: CollectionDTO): Promise<void> {
23-
console.log(collectionDTO.alias)
24-
// TODO
22+
public async createCollection(
23+
collectionDTO: CollectionDTO,
24+
parentCollectionId = 'root'
25+
): Promise<void> {
26+
const dataverseContacts = collectionDTO.contacts.map((contact) => ({
27+
contactEmail: contact
28+
}))
29+
30+
const requestBody = {
31+
alias: collectionDTO.alias,
32+
name: collectionDTO.name,
33+
dataverseContacts: dataverseContacts,
34+
dataverseType: collectionDTO.type.toString()
35+
}
36+
37+
return this.doPost(`/${this.collectionsResourceName}/${parentCollectionId}`, requestBody)
38+
.then(() => undefined)
39+
.catch((error) => {
40+
throw error
41+
})
2542
}
2643
}

test/integration/collections/CollectionsRepository.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { ReadError } from '../../../src'
44
import { ApiConfig } from '../../../src'
55
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
66
import {
7+
createCollectionDTO,
78
createCollectionViaApi,
89
deleteCollectionViaApi
910
} from '../../testHelpers/collections/collectionHelper'
@@ -85,4 +86,11 @@ describe('CollectionsRepository', () => {
8586
})
8687
})
8788
})
89+
90+
describe('createCollection', () => {
91+
test('should create collection in root when no parent collection is set', async () => {
92+
const newCollectionDTO = createCollectionDTO()
93+
await sut.createCollection(newCollectionDTO)
94+
})
95+
})
8896
})

test/integration/files/DirectUploadClient.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222
} from '../../testHelpers/files/filesHelper'
2323
import { FileUploadCancelError } from '../../../src/files/infra/clients/errors/FileUploadCancelError'
2424

25-
describe('DirectUploadClient', () => {
25+
describe.skip('DirectUploadClient', () => {
2626
const testCollectionAlias = 'directUploadTestCollection'
2727
let testDataset1Ids: CreatedDatasetIdentifiers
2828
let testDataset2Ids: CreatedDatasetIdentifiers

0 commit comments

Comments
 (0)