Skip to content

Commit e9c4f98

Browse files
committed
fix: change the names and stringify json object
1 parent a3abce0 commit e9c4f98

File tree

9 files changed

+45
-37
lines changed

9 files changed

+45
-37
lines changed

docs/useCases.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ const datasetVersionId = '1.0'
580580

581581
getDatasetCitationInOtherFormats
582582
.execute(datasetId, datasetVersionId, format)
583-
.then((citationText: CitationResponse) => {
583+
.then((citationText: FormattedCitation) => {
584584
/* ... */
585585
})
586586

src/datasets/domain/models/CitationFormats.ts renamed to src/datasets/domain/models/CitationFormat.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export enum CitationFormats {
1+
export enum CitationFormat {
22
Internal = 'Internal',
33
EndNote = 'EndNote',
44
RIS = 'RIS',

src/datasets/domain/models/CitationResponse.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export type FormattedCitation = {
2+
content: string
3+
contentType: string
4+
}

src/datasets/domain/repositories/IDatasetsRepository.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import { DatasetVersionDiff } from '../models/DatasetVersionDiff'
1010
import { DatasetDownloadCount } from '../models/DatasetDownloadCount'
1111
import { DatasetVersionSummaryInfo } from '../models/DatasetVersionSummaryInfo'
1212
import { DatasetLinkedCollection } from '../models/DatasetLinkedCollection'
13-
import { CitationFormats } from '../models/CitationFormats'
14-
import { CitationResponse } from '../models/CitationResponse'
13+
import { CitationFormat } from '../models/CitationFormat'
14+
import { FormattedCitation } from '../models/FormattedCitation'
1515

1616
export interface IDatasetsRepository {
1717
getDataset(
@@ -70,7 +70,7 @@ export interface IDatasetsRepository {
7070
getDatasetCitationInOtherFormats(
7171
datasetId: number,
7272
datasetVersionId: string,
73-
format: CitationFormats,
73+
format: CitationFormat,
7474
includeDeaccessioned?: boolean
75-
): Promise<CitationResponse>
75+
): Promise<FormattedCitation>
7676
}

src/datasets/domain/useCases/GetDatasetCitationInOtherFormats.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { UseCase } from '../../../core/domain/useCases/UseCase'
22
import { IDatasetsRepository } from '../repositories/IDatasetsRepository'
33
import { DatasetNotNumberedVersion } from '../models/DatasetNotNumberedVersion'
4-
import { CitationResponse } from '../models/CitationResponse'
5-
import { CitationFormats } from '../models/CitationFormats'
4+
import { FormattedCitation } from '../models/FormattedCitation'
5+
import { CitationFormat } from '../models/CitationFormat'
66

7-
export class GetDatasetCitationInOtherFormats implements UseCase<CitationResponse> {
7+
export class GetDatasetCitationInOtherFormats implements UseCase<FormattedCitation> {
88
private datasetsRepository: IDatasetsRepository
99

1010
constructor(datasetsRepository: IDatasetsRepository) {
@@ -16,16 +16,16 @@ export class GetDatasetCitationInOtherFormats implements UseCase<CitationRespons
1616
*
1717
* @param {number} datasetId - The dataset identifier.
1818
* @param {string | DatasetNotNumberedVersion} [datasetVersionId=DatasetNotNumberedVersion.LATEST] - The dataset version identifier, which can be a version-specific string (e.g., '1.0') or a DatasetNotNumberedVersion enum value. Defaults to LATEST.
19-
* @param {CitationFormats} format - The citation format to return. One of: 'EndNote', 'RIS', 'BibTeX', 'CSLJson', 'Internal'.
19+
* @param {CitationFormat} format - The citation format to return. One of: 'EndNote', 'RIS', 'BibTeX', 'CSLJson', 'Internal'.
2020
* @param {boolean} [includeDeaccessioned=false] - Whether to include deaccessioned versions in the search. Defaults to false.
21-
* @returns {Promise<CitationResponse>} The citation content, format, and content type.
21+
* @returns {Promise<FormattedCitation>} The citation content, format, and content type.
2222
*/
2323
async execute(
2424
datasetId: number,
2525
datasetVersionId: string | DatasetNotNumberedVersion = DatasetNotNumberedVersion.LATEST,
26-
format: CitationFormats,
26+
format: CitationFormat,
2727
includeDeaccessioned = false
28-
): Promise<CitationResponse> {
28+
): Promise<FormattedCitation> {
2929
return await this.datasetsRepository.getDatasetCitationInOtherFormats(
3030
datasetId,
3131
datasetVersionId,

src/datasets/infra/repositories/DatasetsRepository.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ import { transformDatasetVersionDiffResponseToDatasetVersionDiff } from './trans
2121
import { DatasetDownloadCount } from '../../domain/models/DatasetDownloadCount'
2222
import { DatasetVersionSummaryInfo } from '../../domain/models/DatasetVersionSummaryInfo'
2323
import { DatasetLinkedCollection } from '../../domain/models/DatasetLinkedCollection'
24-
import { CitationFormats } from '../../domain/models/CitationFormats'
24+
import { CitationFormat } from '../../domain/models/CitationFormat'
2525
import { transformDatasetLinkedCollectionsResponseToDatasetLinkedCollection } from './transformers/datasetLinkedCollectionsTransformers'
26-
import { CitationResponse } from '../../domain/models/CitationResponse'
26+
import { FormattedCitation } from '../../domain/models/FormattedCitation'
2727

2828
export interface GetAllDatasetPreviewsQueryParams {
2929
per_page?: number
@@ -100,19 +100,27 @@ export class DatasetsRepository extends ApiRepository implements IDatasetsReposi
100100
public async getDatasetCitationInOtherFormats(
101101
datasetId: number,
102102
datasetVersionId: string | 'LATEST' = 'LATEST',
103-
format: CitationFormats,
103+
format: CitationFormat,
104104
includeDeaccessioned = false
105-
): Promise<CitationResponse> {
105+
): Promise<FormattedCitation> {
106106
const endpoint = this.buildApiEndpoint(
107107
this.datasetsResourceName,
108108
`versions/${datasetVersionId}/citation/${format}`,
109109
datasetId
110110
)
111111
const response = await this.doGet(endpoint, true, { includeDeaccessioned })
112112

113+
const contentType = response.headers['content-type']
114+
let content: string
115+
if (contentType && contentType.includes('application/json')) {
116+
content = JSON.stringify(response.data)
117+
} else {
118+
content = response.data
119+
}
120+
113121
return {
114-
content: response.data,
115-
contentType: response.headers['content-type']
122+
content,
123+
contentType
116124
}
117125
}
118126

test/integration/datasets/DatasetsRepository.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ import {
5151
import { FilesRepository } from '../../../src/files/infra/repositories/FilesRepository'
5252
import { DirectUploadClient } from '../../../src/files/infra/clients/DirectUploadClient'
5353
import { createTestFileUploadDestination } from '../../testHelpers/files/fileUploadDestinationHelper'
54-
import { CitationFormats } from '../../../src/datasets/domain/models/CitationFormats'
54+
import { CitationFormat } from '../../../src/datasets/domain/models/CitationFormat'
5555

5656
const TEST_DIFF_DATASET_DTO: DatasetDTO = {
5757
license: {
@@ -508,7 +508,7 @@ describe('DatasetsRepository', () => {
508508
const citation = await sut.getDatasetCitationInOtherFormats(
509509
testDatasetIds.numericId,
510510
DatasetNotNumberedVersion.LATEST,
511-
CitationFormats.BibTeX
511+
CitationFormat.BibTeX
512512
)
513513

514514
expect(typeof citation.content).toBe('string')
@@ -519,7 +519,7 @@ describe('DatasetsRepository', () => {
519519
const citation = await sut.getDatasetCitationInOtherFormats(
520520
testDatasetIds.numericId,
521521
DatasetNotNumberedVersion.LATEST,
522-
CitationFormats.RIS
522+
CitationFormat.RIS
523523
)
524524

525525
expect(typeof citation.content).toBe('string')
@@ -530,18 +530,18 @@ describe('DatasetsRepository', () => {
530530
const citation = await sut.getDatasetCitationInOtherFormats(
531531
testDatasetIds.numericId,
532532
DatasetNotNumberedVersion.LATEST,
533-
CitationFormats.CSLJson
533+
CitationFormat.CSLJson
534534
)
535535

536-
expect(typeof citation.content).toBe('object')
536+
expect(typeof citation.content).toBe('string')
537537
expect(citation.contentType).toMatch(/application\/json/)
538538
})
539539

540540
test('should return citation in EndNote format', async () => {
541541
const citation = await sut.getDatasetCitationInOtherFormats(
542542
testDatasetIds.numericId,
543543
DatasetNotNumberedVersion.LATEST,
544-
CitationFormats.EndNote
544+
CitationFormat.EndNote
545545
)
546546

547547
expect(typeof citation.content).toBe('string')
@@ -552,7 +552,7 @@ describe('DatasetsRepository', () => {
552552
const citation = await sut.getDatasetCitationInOtherFormats(
553553
testDatasetIds.numericId,
554554
DatasetNotNumberedVersion.LATEST,
555-
CitationFormats.Internal
555+
CitationFormat.Internal
556556
)
557557

558558
expect(typeof citation.content).toBe('string')
@@ -567,7 +567,7 @@ describe('DatasetsRepository', () => {
567567
sut.getDatasetCitationInOtherFormats(
568568
nonExistentId,
569569
DatasetNotNumberedVersion.LATEST,
570-
CitationFormats.RIS
570+
CitationFormat.RIS
571571
)
572572
).rejects.toThrow(expectedError)
573573
})
@@ -580,7 +580,7 @@ describe('DatasetsRepository', () => {
580580
const citation = await sut.getDatasetCitationInOtherFormats(
581581
testDatasetIds.numericId,
582582
DatasetNotNumberedVersion.LATEST,
583-
CitationFormats.RIS,
583+
CitationFormat.RIS,
584584
true
585585
)
586586

test/unit/datasets/GetDatasetCitationInOtherFormats.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import { GetDatasetCitationInOtherFormats } from '../../../src/datasets/domain/useCases/GetDatasetCitationInOtherFormats'
22
import { IDatasetsRepository } from '../../../src/datasets/domain/repositories/IDatasetsRepository'
33
import { ReadError } from '../../../src/core/domain/repositories/ReadError'
4-
import { CitationFormats } from '../../../src/datasets/domain/models/CitationFormats'
4+
import { CitationFormat } from '../../../src/datasets/domain/models/CitationFormat'
55
import { DatasetNotNumberedVersion } from '../../../src/datasets/domain/models/DatasetNotNumberedVersion'
6-
import { CitationResponse } from '../../../src/datasets/domain/models/CitationResponse'
6+
import { FormattedCitation } from '../../../src/datasets/domain/models/FormattedCitation'
77

88
describe('GetDatasetCitationInOtherFormats.execute', () => {
99
const testDatasetId = 1
10-
const testFormat: CitationFormats = CitationFormats.BibTeX
10+
const testFormat: CitationFormat = CitationFormat.BibTeX
1111
const testVersion: DatasetNotNumberedVersion = DatasetNotNumberedVersion.LATEST
1212

1313
test('should return citation response on repository success', async () => {
14-
const expectedCitation: CitationResponse = {
14+
const expectedCitation: FormattedCitation = {
1515
content: '@data{example, ...}',
1616
contentType: 'text/plain'
1717
}
@@ -22,7 +22,7 @@ describe('GetDatasetCitationInOtherFormats.execute', () => {
2222

2323
const sut = new GetDatasetCitationInOtherFormats(datasetsRepositoryStub)
2424

25-
const actual = await sut.execute(testDatasetId, testVersion, testFormat as CitationFormats)
25+
const actual = await sut.execute(testDatasetId, testVersion, testFormat as CitationFormat)
2626
expect(actual).toEqual(expectedCitation)
2727
})
2828

0 commit comments

Comments
 (0)