Skip to content

Commit

Permalink
test: unit cases
Browse files Browse the repository at this point in the history
  • Loading branch information
g-saracca committed Feb 27, 2025
1 parent bfd73c9 commit 33ce816
Show file tree
Hide file tree
Showing 3 changed files with 157 additions and 1 deletion.
28 changes: 28 additions & 0 deletions test/testHelpers/datasets/datasetVersionsSummariesHelper.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { DatasetVersionSummaryInfo } from '../../../src/datasets/domain/models/DatasetVersionSummaryInfo'

export const createDatasetVersionSummaryModel = (
props?: Partial<DatasetVersionSummaryInfo>
): DatasetVersionSummaryInfo => ({
id: 1,
contributors: 'John Doe',
versionNumber: 'DRAFT',
publishedOn: '2021-01-01',
summary: {
'Citation Metadata': {
Title: {
added: 0,
deleted: 0,
changed: 1
}
},
files: {
added: 0,
removed: 0,
replaced: 0,
changedFileMetaData: 0,
changedVariableMetadata: 0
},
termsAccessChanged: false
},
...props
})
98 changes: 97 additions & 1 deletion test/unit/datasets/DatasetsRepository.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
} from '../../testHelpers/datasets/datasetHelper'
import { WriteError } from '../../../src'
import { VersionUpdateType } from '../../../src/datasets/domain/models/Dataset'
import { createDatasetVersionSummaryModel } from '../../testHelpers/datasets/datasetVersionsSummariesHelper'

describe('DatasetsRepository', () => {
const sut: DatasetsRepository = new DatasetsRepository()
Expand Down Expand Up @@ -962,7 +963,7 @@ describe('DatasetsRepository', () => {
})
})

describe('deaccsionDataset', () => {
describe('deaccessionDataset', () => {
const version = '1.0'
const expectedApiEndpoint = `${TestConstants.TEST_API_URL}/datasets/${testDatasetModel.id}/versions/${version}/deaccession`
const expectedApiKeyRequestConfig = {
Expand Down Expand Up @@ -1014,4 +1015,99 @@ describe('DatasetsRepository', () => {
expect(error).toBeInstanceOf(Error)
})
})

describe('getDatasetVersionSummaries', () => {
const testDatasetVersionSummaries = createDatasetVersionSummaryModel()

const testDatasetVersionSummariesResponse = {
data: {
status: 'OK',
data: [testDatasetVersionSummaries]
}
}

describe('by numeric id', () => {
const expectedApiEndpoint = `${TestConstants.TEST_API_URL}/datasets/${testDatasetModel.id}/versions/compareSummary`

test('should return dataset version summaries when providing id and response is successful', async () => {
jest.spyOn(axios, 'get').mockResolvedValue(testDatasetVersionSummariesResponse)

// API Key auth
let actual = await sut.getDatasetVersionsSummaries(testDatasetModel.id)

expect(axios.get).toHaveBeenCalledWith(
expectedApiEndpoint,
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY
)
expect(actual).toStrictEqual([testDatasetVersionSummaries])

// Session cookie auth
ApiConfig.init(TestConstants.TEST_API_URL, DataverseApiAuthMechanism.SESSION_COOKIE)

actual = await sut.getDatasetVersionsSummaries(testDatasetModel.id)

expect(axios.get).toHaveBeenCalledWith(
expectedApiEndpoint,
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_SESSION_COOKIE
)
expect(actual).toStrictEqual([testDatasetVersionSummaries])
})

test('should return error result on error response', async () => {
jest.spyOn(axios, 'get').mockRejectedValue(TestConstants.TEST_ERROR_RESPONSE)

let error = undefined as unknown as ReadError
await sut.getDatasetVersionsSummaries(testDatasetModel.id).catch((e) => (error = e))

expect(axios.get).toHaveBeenCalledWith(
expectedApiEndpoint,
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY
)
expect(error).toBeInstanceOf(ReadError)
})
})

describe('by persistent id', () => {
const expectedApiEndpoint = `${TestConstants.TEST_API_URL}/datasets/:persistentId/versions/compareSummary?persistentId=${TestConstants.TEST_DUMMY_PERSISTENT_ID}`

test('should return dataset version summaries when providing persistent id and response is successful', async () => {
jest.spyOn(axios, 'get').mockResolvedValue(testDatasetVersionSummariesResponse)

// API Key auth
let actual = await sut.getDatasetVersionsSummaries(TestConstants.TEST_DUMMY_PERSISTENT_ID)

expect(axios.get).toHaveBeenCalledWith(
expectedApiEndpoint,
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY
)
expect(actual).toStrictEqual([testDatasetVersionSummaries])

// Session cookie auth
ApiConfig.init(TestConstants.TEST_API_URL, DataverseApiAuthMechanism.SESSION_COOKIE)

actual = await sut.getDatasetVersionsSummaries(TestConstants.TEST_DUMMY_PERSISTENT_ID)

expect(axios.get).toHaveBeenCalledWith(
expectedApiEndpoint,
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_SESSION_COOKIE
)
expect(actual).toStrictEqual([testDatasetVersionSummaries])
})

test('should return error result on error response', async () => {
jest.spyOn(axios, 'get').mockRejectedValue(TestConstants.TEST_ERROR_RESPONSE)

let error = undefined as unknown as ReadError
await sut
.getDatasetVersionsSummaries(TestConstants.TEST_DUMMY_PERSISTENT_ID)
.catch((e) => (error = e))

expect(axios.get).toHaveBeenCalledWith(
expectedApiEndpoint,
TestConstants.TEST_EXPECTED_AUTHENTICATED_REQUEST_CONFIG_API_KEY
)
expect(error).toBeInstanceOf(ReadError)
})
})
})
})
32 changes: 32 additions & 0 deletions test/unit/datasets/GetDatasetVersionsSummaries.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { ReadError } from '../../../src/core/domain/repositories/ReadError'
import { IDatasetsRepository } from '../../../src/datasets/domain/repositories/IDatasetsRepository'
import { createDatasetVersionSummaryModel } from '../../testHelpers/datasets/datasetVersionsSummariesHelper'
import { GetDatasetVersionsSummaries } from '../../../src/datasets/domain/useCases/GetDatasetVersionsSummaries'

const testDatasetId = 1

describe('execute', () => {
test('should return dataset versions summaries on repository success', async () => {
const testDatasetVersionsSummaries = [createDatasetVersionSummaryModel()]
const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository
datasetsRepositoryStub.getDatasetVersionsSummaries = jest
.fn()
.mockResolvedValue(testDatasetVersionsSummaries)
const sut = new GetDatasetVersionsSummaries(datasetsRepositoryStub)

const actual = await sut.execute(testDatasetId)

expect(actual).toEqual(testDatasetVersionsSummaries)
expect(datasetsRepositoryStub.getDatasetVersionsSummaries).toHaveBeenCalledWith(testDatasetId)
})

test('should return error result on repository error', async () => {
const datasetsRepositoryStub: IDatasetsRepository = {} as IDatasetsRepository
datasetsRepositoryStub.getDatasetVersionsSummaries = jest
.fn()
.mockRejectedValue(new ReadError())
const sut = new GetDatasetVersionsSummaries(datasetsRepositoryStub)

await expect(sut.execute(testDatasetId)).rejects.toThrow(ReadError)
})
})

0 comments on commit 33ce816

Please sign in to comment.