Skip to content

Commit 33ce816

Browse files
committed
test: unit cases
1 parent bfd73c9 commit 33ce816

3 files changed

Lines changed: 157 additions & 1 deletion

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { DatasetVersionSummaryInfo } from '../../../src/datasets/domain/models/DatasetVersionSummaryInfo'
2+
3+
export const createDatasetVersionSummaryModel = (
4+
props?: Partial<DatasetVersionSummaryInfo>
5+
): DatasetVersionSummaryInfo => ({
6+
id: 1,
7+
contributors: 'John Doe',
8+
versionNumber: 'DRAFT',
9+
publishedOn: '2021-01-01',
10+
summary: {
11+
'Citation Metadata': {
12+
Title: {
13+
added: 0,
14+
deleted: 0,
15+
changed: 1
16+
}
17+
},
18+
files: {
19+
added: 0,
20+
removed: 0,
21+
replaced: 0,
22+
changedFileMetaData: 0,
23+
changedVariableMetadata: 0
24+
},
25+
termsAccessChanged: false
26+
},
27+
...props
28+
})

test/unit/datasets/DatasetsRepository.test.ts

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import {
3030
} from '../../testHelpers/datasets/datasetHelper'
3131
import { WriteError } from '../../../src'
3232
import { VersionUpdateType } from '../../../src/datasets/domain/models/Dataset'
33+
import { createDatasetVersionSummaryModel } from '../../testHelpers/datasets/datasetVersionsSummariesHelper'
3334

3435
describe('DatasetsRepository', () => {
3536
const sut: DatasetsRepository = new DatasetsRepository()
@@ -962,7 +963,7 @@ describe('DatasetsRepository', () => {
962963
})
963964
})
964965

965-
describe('deaccsionDataset', () => {
966+
describe('deaccessionDataset', () => {
966967
const version = '1.0'
967968
const expectedApiEndpoint = `${TestConstants.TEST_API_URL}/datasets/${testDatasetModel.id}/versions/${version}/deaccession`
968969
const expectedApiKeyRequestConfig = {
@@ -1014,4 +1015,99 @@ describe('DatasetsRepository', () => {
10141015
expect(error).toBeInstanceOf(Error)
10151016
})
10161017
})
1018+
1019+
describe('getDatasetVersionSummaries', () => {
1020+
const testDatasetVersionSummaries = createDatasetVersionSummaryModel()
1021+
1022+
const testDatasetVersionSummariesResponse = {
1023+
data: {
1024+
status: 'OK',
1025+
data: [testDatasetVersionSummaries]
1026+
}
1027+
}
1028+
1029+
describe('by numeric id', () => {
1030+
const expectedApiEndpoint = `${TestConstants.TEST_API_URL}/datasets/${testDatasetModel.id}/versions/compareSummary`
1031+
1032+
test('should return dataset version summaries when providing id and response is successful', async () => {
1033+
jest.spyOn(axios, 'get').mockResolvedValue(testDatasetVersionSummariesResponse)
1034+
1035+
// API Key auth
1036+
let actual = await sut.getDatasetVersionsSummaries(testDatasetModel.id)
1037+
1038+
expect(axios.get).toHaveBeenCalledWith(
1039+
expectedApiEndpoint,
1040+
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY
1041+
)
1042+
expect(actual).toStrictEqual([testDatasetVersionSummaries])
1043+
1044+
// Session cookie auth
1045+
ApiConfig.init(TestConstants.TEST_API_URL, DataverseApiAuthMechanism.SESSION_COOKIE)
1046+
1047+
actual = await sut.getDatasetVersionsSummaries(testDatasetModel.id)
1048+
1049+
expect(axios.get).toHaveBeenCalledWith(
1050+
expectedApiEndpoint,
1051+
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_SESSION_COOKIE
1052+
)
1053+
expect(actual).toStrictEqual([testDatasetVersionSummaries])
1054+
})
1055+
1056+
test('should return error result on error response', async () => {
1057+
jest.spyOn(axios, 'get').mockRejectedValue(TestConstants.TEST_ERROR_RESPONSE)
1058+
1059+
let error = undefined as unknown as ReadError
1060+
await sut.getDatasetVersionsSummaries(testDatasetModel.id).catch((e) => (error = e))
1061+
1062+
expect(axios.get).toHaveBeenCalledWith(
1063+
expectedApiEndpoint,
1064+
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY
1065+
)
1066+
expect(error).toBeInstanceOf(ReadError)
1067+
})
1068+
})
1069+
1070+
describe('by persistent id', () => {
1071+
const expectedApiEndpoint = `${TestConstants.TEST_API_URL}/datasets/:persistentId/versions/compareSummary?persistentId=${TestConstants.TEST_DUMMY_PERSISTENT_ID}`
1072+
1073+
test('should return dataset version summaries when providing persistent id and response is successful', async () => {
1074+
jest.spyOn(axios, 'get').mockResolvedValue(testDatasetVersionSummariesResponse)
1075+
1076+
// API Key auth
1077+
let actual = await sut.getDatasetVersionsSummaries(TestConstants.TEST_DUMMY_PERSISTENT_ID)
1078+
1079+
expect(axios.get).toHaveBeenCalledWith(
1080+
expectedApiEndpoint,
1081+
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY
1082+
)
1083+
expect(actual).toStrictEqual([testDatasetVersionSummaries])
1084+
1085+
// Session cookie auth
1086+
ApiConfig.init(TestConstants.TEST_API_URL, DataverseApiAuthMechanism.SESSION_COOKIE)
1087+
1088+
actual = await sut.getDatasetVersionsSummaries(TestConstants.TEST_DUMMY_PERSISTENT_ID)
1089+
1090+
expect(axios.get).toHaveBeenCalledWith(
1091+
expectedApiEndpoint,
1092+
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_SESSION_COOKIE
1093+
)
1094+
expect(actual).toStrictEqual([testDatasetVersionSummaries])
1095+
})
1096+
1097+
test('should return error result on error response', async () => {
1098+
jest.spyOn(axios, 'get').mockRejectedValue(TestConstants.TEST_ERROR_RESPONSE)
1099+
1100+
let error = undefined as unknown as ReadError
1101+
await sut
1102+
.getDatasetVersionsSummaries(TestConstants.TEST_DUMMY_PERSISTENT_ID)
1103+
.catch((e) => (error = e))
1104+
1105+
expect(axios.get).toHaveBeenCalledWith(
1106+
expectedApiEndpoint,
1107+
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY
1108+
)
1109+
expect(error).toBeInstanceOf(ReadError)
1110+
})
1111+
})
1112+
})
10171113
})
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { ReadError } from '../../../src/core/domain/repositories/ReadError'
2+
import { IDatasetsRepository } from '../../../src/datasets/domain/repositories/IDatasetsRepository'
3+
import { createDatasetVersionSummaryModel } from '../../testHelpers/datasets/datasetVersionsSummariesHelper'
4+
import { GetDatasetVersionsSummaries } from '../../../src/datasets/domain/useCases/GetDatasetVersionsSummaries'
5+
6+
const testDatasetId = 1
7+
8+
describe('execute', () => {
9+
test('should return dataset versions summaries on repository success', async () => {
10+
const testDatasetVersionsSummaries = [createDatasetVersionSummaryModel()]
11+
const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository
12+
datasetsRepositoryStub.getDatasetVersionsSummaries = jest
13+
.fn()
14+
.mockResolvedValue(testDatasetVersionsSummaries)
15+
const sut = new GetDatasetVersionsSummaries(datasetsRepositoryStub)
16+
17+
const actual = await sut.execute(testDatasetId)
18+
19+
expect(actual).toEqual(testDatasetVersionsSummaries)
20+
expect(datasetsRepositoryStub.getDatasetVersionsSummaries).toHaveBeenCalledWith(testDatasetId)
21+
})
22+
23+
test('should return error result on repository error', async () => {
24+
const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository
25+
datasetsRepositoryStub.getDatasetVersionsSummaries = jest
26+
.fn()
27+
.mockRejectedValue(new ReadError())
28+
const sut = new GetDatasetVersionsSummaries(datasetsRepositoryStub)
29+
30+
await expect(sut.execute(testDatasetId)).rejects.toThrow(ReadError)
31+
})
32+
})

0 commit comments

Comments
 (0)