Skip to content

Commit 35a5baf

Browse files
committed
test: add cases
1 parent 63fd221 commit 35a5baf

File tree

4 files changed

+156
-21
lines changed

4 files changed

+156
-21
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
import { ApiConfig, createDataset, getDataset, ReadError } from '../../../src'
2+
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
3+
import { DatasetDescription } from '../../../src/datasets/domain/models/Dataset'
4+
import { deleteUnpublishedDatasetViaApi } from '../../testHelpers/datasets/datasetHelper'
5+
import { TestConstants } from '../../testHelpers/TestConstants'
6+
7+
const testNewDataset = {
8+
metadataBlockValues: [
9+
{
10+
name: 'citation',
11+
fields: {
12+
title: 'Dataset created using the createDataset use case',
13+
author: [
14+
{
15+
authorName: 'Admin, Dataverse',
16+
authorAffiliation: 'Dataverse.org'
17+
},
18+
{
19+
authorName: 'Owner, Dataverse',
20+
authorAffiliation: 'Dataversedemo.org'
21+
}
22+
],
23+
datasetContact: [
24+
{
25+
datasetContactEmail: '[email protected]',
26+
datasetContactName: 'Finch, Fiona'
27+
}
28+
],
29+
dsDescription: [
30+
{
31+
dsDescriptionValue: 'Hello <b>world</b>'
32+
}
33+
],
34+
subject: ['Medicine, Health and Life Sciences']
35+
}
36+
}
37+
]
38+
}
39+
40+
describe('execute', () => {
41+
beforeEach(async () => {
42+
ApiConfig.init(
43+
TestConstants.TEST_API_URL,
44+
DataverseApiAuthMechanism.API_KEY,
45+
process.env.TEST_API_KEY
46+
)
47+
})
48+
49+
test('should successfully get a dataset when a valid id is sent', async () => {
50+
const createdDatasetIdentifiers = await createDataset.execute(testNewDataset)
51+
52+
const dataset = await getDataset.execute(createdDatasetIdentifiers.numericId)
53+
expect(dataset).not.toBeNull()
54+
expect(dataset.id).toBe(createdDatasetIdentifiers.numericId)
55+
56+
await deleteUnpublishedDatasetViaApi(createdDatasetIdentifiers.numericId)
57+
})
58+
59+
test('should successfully get a dataset when a valid persistent id is sent', async () => {
60+
const createdDatasetIdentifiers = await createDataset.execute(testNewDataset)
61+
62+
const dataset = await getDataset.execute(createdDatasetIdentifiers.persistentId)
63+
expect(dataset).not.toBeNull()
64+
expect(dataset.id).toBe(createdDatasetIdentifiers.numericId)
65+
66+
await deleteUnpublishedDatasetViaApi(createdDatasetIdentifiers.numericId)
67+
})
68+
69+
test('should throw an error when an invalid id is sent', async () => {
70+
const nonExistentTestDatasetId = 'non-existent-dataset'
71+
const expectedError = new ReadError(`[400] Bad dataset ID number: ${nonExistentTestDatasetId}.`)
72+
73+
await expect(getDataset.execute(nonExistentTestDatasetId)).rejects.toThrow(expectedError)
74+
})
75+
76+
test('should return metadata fields in markdown format when keepRawFields is false', async () => {
77+
const createdDatasetIdentifiers = await createDataset.execute(testNewDataset)
78+
79+
const dataset = await getDataset.execute(
80+
createdDatasetIdentifiers.numericId,
81+
undefined,
82+
false,
83+
false
84+
)
85+
86+
expect(
87+
(dataset.metadataBlocks[0].fields.dsDescription[0] as DatasetDescription).dsDescriptionValue
88+
).toBe('Hello **world**')
89+
90+
await deleteUnpublishedDatasetViaApi(createdDatasetIdentifiers.numericId)
91+
})
92+
93+
test('should not return metadata fields in markdown format when keepRawFields is true', async () => {
94+
const createdDatasetIdentifiers = await createDataset.execute(testNewDataset)
95+
96+
const dataset = await getDataset.execute(
97+
createdDatasetIdentifiers.numericId,
98+
undefined,
99+
false,
100+
true
101+
)
102+
103+
expect(
104+
(dataset.metadataBlocks[0].fields.dsDescription[0] as DatasetDescription).dsDescriptionValue
105+
).toBe('Hello <b>world</b>')
106+
107+
await deleteUnpublishedDatasetViaApi(createdDatasetIdentifiers.numericId)
108+
})
109+
})

test/integration/datasets/DatasetsRepository.test.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ describe('DatasetsRepository', () => {
157157
const actual = await sut.getDataset(
158158
testDatasetIds.numericId,
159159
DatasetNotNumberedVersion.LATEST,
160+
false,
160161
false
161162
)
162163
expect(actual.id).toBe(testDatasetIds.numericId)
@@ -170,7 +171,8 @@ describe('DatasetsRepository', () => {
170171
const actual = await sut.getDataset(
171172
testDatasetIds.numericId,
172173
DatasetNotNumberedVersion.LATEST,
173-
true
174+
true,
175+
false
174176
)
175177

176178
expect(actual.id).toBe(testDatasetIds.numericId)
@@ -181,7 +183,8 @@ describe('DatasetsRepository', () => {
181183
const actual = await sut.getDataset(
182184
testDatasetIds.numericId,
183185
DatasetNotNumberedVersion.LATEST,
184-
true
186+
true,
187+
false
185188
)
186189
expect(actual.id).toBe(testDatasetIds.numericId)
187190
ApiConfig.init(
@@ -196,7 +199,7 @@ describe('DatasetsRepository', () => {
196199
`[404] Dataset version ${DatasetNotNumberedVersion.LATEST} of dataset ${testDatasetIds.numericId} not found`
197200
)
198201
await expect(
199-
sut.getDataset(testDatasetIds.numericId, DatasetNotNumberedVersion.LATEST, false)
202+
sut.getDataset(testDatasetIds.numericId, DatasetNotNumberedVersion.LATEST, false, false)
200203
).rejects.toThrow(expectedError)
201204
})
202205

@@ -206,7 +209,7 @@ describe('DatasetsRepository', () => {
206209
)
207210

208211
await expect(
209-
sut.getDataset(nonExistentTestDatasetId, DatasetNotNumberedVersion.LATEST, false)
212+
sut.getDataset(nonExistentTestDatasetId, DatasetNotNumberedVersion.LATEST, false, false)
210213
).rejects.toThrow(expectedError)
211214
})
212215
})
@@ -226,11 +229,13 @@ describe('DatasetsRepository', () => {
226229
const createdDataset = await sut.getDataset(
227230
testDatasetIds.numericId,
228231
DatasetNotNumberedVersion.LATEST,
232+
false,
229233
false
230234
)
231235
const actual = await sut.getDataset(
232236
createdDataset.persistentId,
233237
DatasetNotNumberedVersion.LATEST,
238+
false,
234239
false
235240
)
236241
expect(actual.id).toBe(testDatasetIds.numericId)
@@ -242,7 +247,7 @@ describe('DatasetsRepository', () => {
242247
`[400] Bad dataset ID number: ${testWrongPersistentId}.`
243248
)
244249
await expect(
245-
sut.getDataset(testWrongPersistentId, DatasetNotNumberedVersion.LATEST, false)
250+
sut.getDataset(testWrongPersistentId, DatasetNotNumberedVersion.LATEST, false, false)
246251
).rejects.toThrow(expectedError)
247252
})
248253
})
@@ -263,6 +268,7 @@ describe('DatasetsRepository', () => {
263268
const actual = await sut.getDataset(
264269
createdDatasetNumericId,
265270
DatasetNotNumberedVersion.LATEST,
271+
false,
266272
false
267273
)
268274

@@ -294,13 +300,13 @@ describe('DatasetsRepository', () => {
294300

295301
describe('getPrivateUrlDataset', () => {
296302
test('should return dataset when token is valid', async () => {
297-
const actual = await sut.getPrivateUrlDataset(privateUrlToken)
303+
const actual = await sut.getPrivateUrlDataset(privateUrlToken, false)
298304
expect(actual.id).toBe(testDatasetIds.numericId)
299305
})
300306

301307
test('should return error when token is not valid', async () => {
302308
const expectedError = new ReadError(expectedErrorInvalidToken)
303-
await expect(sut.getPrivateUrlDataset('invalidToken')).rejects.toThrow(expectedError)
309+
await expect(sut.getPrivateUrlDataset('invalidToken', false)).rejects.toThrow(expectedError)
304310
})
305311
})
306312

@@ -471,6 +477,7 @@ describe('DatasetsRepository', () => {
471477
const actualCreatedDataset = await sut.getDataset(
472478
createdDataset.numericId,
473479
DatasetNotNumberedVersion.LATEST,
480+
false,
474481
false
475482
)
476483

@@ -528,6 +535,7 @@ describe('DatasetsRepository', () => {
528535
const newDatasetVersion = await sut.getDataset(
529536
testDatasetIds.numericId,
530537
DatasetNotNumberedVersion.LATEST,
538+
false,
531539
false
532540
)
533541

@@ -568,6 +576,7 @@ describe('DatasetsRepository', () => {
568576
const datasetAfterFirstPublish = await sut.getDataset(
569577
testDatasetIds.numericId,
570578
DatasetNotNumberedVersion.LATEST,
579+
false,
571580
false
572581
)
573582

@@ -587,6 +596,7 @@ describe('DatasetsRepository', () => {
587596
const datasetAfterUpdatingCurrentVersion = await sut.getDataset(
588597
testDatasetIds.numericId,
589598
DatasetNotNumberedVersion.LATEST,
599+
false,
590600
false
591601
)
592602

@@ -651,6 +661,7 @@ describe('DatasetsRepository', () => {
651661
const actualCreatedDataset = await sut.getDataset(
652662
createdDataset.numericId,
653663
DatasetNotNumberedVersion.LATEST,
664+
false,
654665
false
655666
)
656667

@@ -668,6 +679,7 @@ describe('DatasetsRepository', () => {
668679
const actualUpdatedDataset = await sut.getDataset(
669680
createdDataset.numericId,
670681
DatasetNotNumberedVersion.LATEST,
682+
false,
671683
false
672684
)
673685

test/unit/datasets/DatasetsRepository.test.ts

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,21 @@ describe('DatasetsRepository', () => {
125125
let actual = await sut.getDataset(
126126
testDatasetModel.id,
127127
testVersionId,
128-
testIncludeDeaccessioned
128+
testIncludeDeaccessioned,
129+
false
129130
)
130131

131132
expect(axios.get).toHaveBeenCalledWith(expectedApiEndpoint, expectedRequestConfigApiKey)
132133
expect(actual).toStrictEqual(testDatasetModel)
133134

134135
// Session cookie auth
135136
ApiConfig.init(TestConstants.TEST_API_URL, DataverseApiAuthMechanism.SESSION_COOKIE)
136-
actual = await sut.getDataset(testDatasetModel.id, testVersionId, testIncludeDeaccessioned)
137+
actual = await sut.getDataset(
138+
testDatasetModel.id,
139+
testVersionId,
140+
testIncludeDeaccessioned,
141+
false
142+
)
137143
expect(axios.get).toHaveBeenCalledWith(
138144
expectedApiEndpoint,
139145
expectedRequestConfigSessionCookie
@@ -154,7 +160,8 @@ describe('DatasetsRepository', () => {
154160
const actual = await sut.getDataset(
155161
testDatasetModel.id,
156162
testVersionId,
157-
testIncludeDeaccessioned
163+
testIncludeDeaccessioned,
164+
false
158165
)
159166

160167
expect(axios.get).toHaveBeenCalledWith(
@@ -177,7 +184,8 @@ describe('DatasetsRepository', () => {
177184
const actual = await sut.getDataset(
178185
testDatasetModel.id,
179186
testVersionId,
180-
testIncludeDeaccessioned
187+
testIncludeDeaccessioned,
188+
false
181189
)
182190

183191
expect(axios.get).toHaveBeenCalledWith(
@@ -203,7 +211,8 @@ describe('DatasetsRepository', () => {
203211
const actual = await sut.getDataset(
204212
testDatasetModel.id,
205213
testVersionId,
206-
testIncludeDeaccessioned
214+
testIncludeDeaccessioned,
215+
false
207216
)
208217

209218
expect(axios.get).toHaveBeenCalledWith(
@@ -218,7 +227,7 @@ describe('DatasetsRepository', () => {
218227

219228
let error = undefined as unknown as ReadError
220229
await sut
221-
.getDataset(testDatasetModel.id, testVersionId, testIncludeDeaccessioned)
230+
.getDataset(testDatasetModel.id, testVersionId, testIncludeDeaccessioned, false)
222231
.catch((e) => (error = e))
223232

224233
expect(axios.get).toHaveBeenCalledWith(
@@ -237,7 +246,8 @@ describe('DatasetsRepository', () => {
237246
let actual = await sut.getDataset(
238247
testDatasetModel.persistentId,
239248
testVersionId,
240-
testIncludeDeaccessioned
249+
testIncludeDeaccessioned,
250+
false
241251
)
242252

243253
expect(axios.get).toHaveBeenCalledWith(expectedApiEndpoint, expectedRequestConfigApiKey)
@@ -249,7 +259,8 @@ describe('DatasetsRepository', () => {
249259
actual = await sut.getDataset(
250260
testDatasetModel.persistentId,
251261
testVersionId,
252-
testIncludeDeaccessioned
262+
testIncludeDeaccessioned,
263+
false
253264
)
254265

255266
expect(axios.get).toHaveBeenCalledWith(
@@ -264,7 +275,7 @@ describe('DatasetsRepository', () => {
264275

265276
let error = undefined as unknown as ReadError
266277
await sut
267-
.getDataset(testDatasetModel.persistentId, testVersionId, testIncludeDeaccessioned)
278+
.getDataset(testDatasetModel.persistentId, testVersionId, testIncludeDeaccessioned, false)
268279
.catch((e) => (error = e))
269280

270281
expect(axios.get).toHaveBeenCalledWith(
@@ -284,7 +295,7 @@ describe('DatasetsRepository', () => {
284295
test('should return Dataset when response is successful', async () => {
285296
jest.spyOn(axios, 'get').mockResolvedValue(testDatasetVersionSuccessfulResponse)
286297

287-
const actual = await sut.getPrivateUrlDataset(testPrivateUrlToken)
298+
const actual = await sut.getPrivateUrlDataset(testPrivateUrlToken, false)
288299

289300
expect(axios.get).toHaveBeenCalledWith(
290301
`${TestConstants.TEST_API_URL}/datasets/privateUrlDatasetVersion/${testPrivateUrlToken}`,
@@ -297,7 +308,7 @@ describe('DatasetsRepository', () => {
297308
jest.spyOn(axios, 'get').mockRejectedValue(TestConstants.TEST_ERROR_RESPONSE)
298309

299310
let error = undefined as unknown as ReadError
300-
await sut.getPrivateUrlDataset(testPrivateUrlToken).catch((e) => (error = e))
311+
await sut.getPrivateUrlDataset(testPrivateUrlToken, false).catch((e) => (error = e))
301312

302313
expect(axios.get).toHaveBeenCalledWith(
303314
`${TestConstants.TEST_API_URL}/datasets/privateUrlDatasetVersion/${testPrivateUrlToken}`,
@@ -821,7 +832,7 @@ describe('DatasetsRepository', () => {
821832
test('should return error result on error response', async () => {
822833
jest.spyOn(axios, 'post').mockRejectedValue(TestConstants.TEST_ERROR_RESPONSE)
823834

824-
let error: WriteError = undefined
835+
let error: WriteError | undefined = undefined
825836
await sut.publishDataset(testDatasetModel.id, testVersionUpdateType).catch((e) => (error = e))
826837

827838
expect(axios.post).toHaveBeenCalledWith(
@@ -878,7 +889,7 @@ describe('DatasetsRepository', () => {
878889
test('should return error result on error response', async () => {
879890
jest.spyOn(axios, 'put').mockRejectedValue(TestConstants.TEST_ERROR_RESPONSE)
880891

881-
let error: WriteError = undefined
892+
let error: WriteError | undefined = undefined
882893
await sut
883894
.updateDataset(testDatasetModel.id, testNewDataset, testMetadataBlocks)
884895
.catch((e) => (error = e))

test/unit/datasets/GetPrivateUrlDataset.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ describe('execute', () => {
1515
const actual = await sut.execute(testPrivateUrlToken)
1616

1717
expect(actual).toEqual(testDataset)
18-
expect(datasetsRepositoryStub.getPrivateUrlDataset).toHaveBeenCalledWith(testPrivateUrlToken)
18+
expect(datasetsRepositoryStub.getPrivateUrlDataset).toHaveBeenCalledWith(
19+
testPrivateUrlToken,
20+
false
21+
)
1922
})
2023

2124
test('should return error result on repository error', async () => {

0 commit comments

Comments
 (0)