File tree Expand file tree Collapse file tree 11 files changed +194
-0
lines changed
Expand file tree Collapse file tree 11 files changed +194
-0
lines changed Original file line number Diff line number Diff line change 1+ export interface DatasetType {
2+ id : number
3+ name : string
4+ linkedMetadataBlocks ?: string [ ]
5+ availableLicenses ?: string [ ]
6+ }
Original file line number Diff line number Diff line change 1+ import { DatasetType } from '../models/DatasetType'
2+
3+ export interface IDatasetTypesRepository {
4+ getAvailableDatasetTypes ( ) : Promise < DatasetType [ ] >
5+ }
Original file line number Diff line number Diff line change 1+ export interface DatasetTypePayload {
2+ id : number
3+ name : string
4+ linkedMetadataBlocks ?: string [ ]
5+ availableLicenses ?: string [ ]
6+ }
Original file line number Diff line number Diff line change 1+ import { AxiosResponse } from 'axios'
2+ import { DatasetType } from '../../models/DatasetType'
3+ import { DatasetTypePayload } from './DatasetTypePayload'
4+
5+ export const transformPayloadToDatasetType = ( response : AxiosResponse ) : DatasetType [ ] => {
6+ const payload = response . data . data as DatasetTypePayload [ ]
7+
8+ return payload . map ( ( datasetType : DatasetTypePayload ) => ( {
9+ id : datasetType . id ,
10+ name : datasetType . name ,
11+ linkedMetadataBlocks : datasetType . linkedMetadataBlocks ,
12+ availableLicenses : datasetType . availableLicenses
13+ } ) )
14+ }
Original file line number Diff line number Diff line change 1+ import { UseCase } from '../../../core/domain/useCases/UseCase'
2+ import { DatasetType } from '../models/DatasetType'
3+ import { IDatasetTypesRepository } from '../repositories/IDatasetTypesRepository'
4+
5+ export class GetAvailableDatasetTypes implements UseCase < DatasetType [ ] > {
6+ private datasetTypesRepository : IDatasetTypesRepository
7+
8+ constructor ( datasetTypesRepository : IDatasetTypesRepository ) {
9+ this . datasetTypesRepository = datasetTypesRepository
10+ }
11+
12+ /**
13+ * Returns the list of available dataset types that can be selected for a dataset.
14+ *
15+ * @returns {Promise<DatasetType[]> }
16+ */
17+ async execute ( ) : Promise < DatasetType [ ] > {
18+ return await this . datasetTypesRepository . getAvailableDatasetTypes ( )
19+ }
20+ }
Original file line number Diff line number Diff line change 1+ import { DatasetTypesRepository } from './infra/repositories/DatasetTypesRepository'
2+ import { GetAvailableDatasetTypes } from './domain/useCases/GetAvailableDatasetTypes'
3+
4+ const datasetTypesRepository = new DatasetTypesRepository ( )
5+
6+ const getAvailableDatasetTypes = new GetAvailableDatasetTypes ( datasetTypesRepository )
7+
8+ export { getAvailableDatasetTypes }
9+
10+ export { DatasetType } from './domain/models/DatasetType'
Original file line number Diff line number Diff line change 1+ import { ApiRepository } from '../../../core/infra/repositories/ApiRepository'
2+ import { IDatasetTypesRepository } from '../../domain/repositories/IDatasetTypesRepository'
3+ import { DatasetType } from '../../domain/models/DatasetType'
4+
5+ export class DatasetTypesRepository extends ApiRepository implements IDatasetTypesRepository {
6+ private readonly datasetTypesResourceName : string = 'datasets/datasetTypes'
7+
8+ public async getAvailableDatasetTypes ( ) : Promise < DatasetType [ ] > {
9+ return this . doGet ( this . buildApiEndpoint ( this . datasetTypesResourceName ) )
10+ . then ( ( response ) => response . data . data )
11+ . catch ( ( error ) => {
12+ throw error
13+ } )
14+ }
15+ }
Original file line number Diff line number Diff line change @@ -10,3 +10,4 @@ export * from './files'
1010export * from './contactInfo'
1111export * from './notifications'
1212export * from './search'
13+ export * from './datasetTypes'
Original file line number Diff line number Diff line change 1+ import { ApiConfig } from '../../../src'
2+ import { getAvailableDatasetTypes } from '../../../src/datasetTypes'
3+ import { DatasetType } from '../../../src/datasetTypes/domain/models/DatasetType'
4+ import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
5+ import { TestConstants } from '../../testHelpers/TestConstants'
6+
7+ describe ( 'getAvailableDatasetTypes' , ( ) => {
8+ describe ( 'execute' , ( ) => {
9+ beforeAll ( async ( ) => {
10+ ApiConfig . init (
11+ TestConstants . TEST_API_URL ,
12+ DataverseApiAuthMechanism . API_KEY ,
13+ process . env . TEST_API_KEY
14+ )
15+ } )
16+
17+ test ( 'should return available dataset types' , async ( ) => {
18+ const actualDatasetTypes : DatasetType [ ] = await getAvailableDatasetTypes . execute ( )
19+ const expectedDatasetTypes = [
20+ {
21+ id : 1 ,
22+ name : 'dataset' ,
23+ linkedMetadataBlocks : [ ] ,
24+ availableLicenses : [ ]
25+ }
26+ ]
27+
28+ expect ( actualDatasetTypes ) . toEqual ( expectedDatasetTypes )
29+ } )
30+ } )
31+ } )
Original file line number Diff line number Diff line change 1+ import {
2+ ApiConfig ,
3+ DataverseApiAuthMechanism
4+ } from '../../../src/core/infra/repositories/ApiConfig'
5+ import { TestConstants } from '../../testHelpers/TestConstants'
6+ import { DatasetTypesRepository } from '../../../src/datasetTypes/infra/repositories/DatasetTypesRepository'
7+ // import { LicensesRepository } from '../../../src/licenses/infra/repositories/LicensesRepository'
8+
9+ describe ( 'DatasetTypesRepository' , ( ) => {
10+ const sut : DatasetTypesRepository = new DatasetTypesRepository ( )
11+
12+ describe ( 'getAvailableDatasetTypes' , ( ) => {
13+ beforeAll ( async ( ) => {
14+ ApiConfig . init (
15+ TestConstants . TEST_API_URL ,
16+ DataverseApiAuthMechanism . API_KEY ,
17+ process . env . TEST_API_KEY
18+ )
19+ } )
20+
21+ test ( 'should return list of available dataset types' , async ( ) => {
22+ const actual = await sut . getAvailableDatasetTypes ( )
23+
24+ const datasetTypes = [
25+ {
26+ id : 1 ,
27+ name : 'dataset' ,
28+ linkedMetadataBlocks : [ ] ,
29+ availableLicenses : [ ]
30+ }
31+ ]
32+
33+ expect ( actual ) . toEqual ( datasetTypes )
34+ } )
35+ } )
36+ } )
You can’t perform that action at this time.
0 commit comments