Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add getCollection use case and tests #134

Merged
merged 19 commits into from
Mar 28, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
feat(getCollection use case): add global constant ROOT_COLLECTION_ALIAS
  • Loading branch information
MellyGray committed Mar 25, 2024
commit d4efec4126b67349b78064eef5f1287353159eb6
2 changes: 2 additions & 0 deletions src/collections/domain/models/Collection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ export interface Collection {
description?: string
isPartOf: DvObjectOwnerNode
}

export const ROOT_COLLECTION_ALIAS = 'root'
4 changes: 2 additions & 2 deletions src/collections/domain/useCases/GetCollection.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { UseCase } from '../../../core/domain/useCases/UseCase'
import { ICollectionsRepository } from '../repositories/ICollectionsRepository'
import { Collection } from '../models/Collection'
import { Collection, ROOT_COLLECTION_ALIAS } from '../models/Collection'

export class GetCollection implements UseCase<Collection> {
private collectionsRepository: ICollectionsRepository
Expand All @@ -16,7 +16,7 @@ export class GetCollection implements UseCase<Collection> {
* If this parameter is not set, the default value is: 'root'
* @returns {Promise<Collection>}
*/
async execute(collectionIdOrAlias: number | string = 'root'): Promise<Collection> {
async execute(collectionIdOrAlias: number | string = ROOT_COLLECTION_ALIAS): Promise<Collection> {
return await this.collectionsRepository.getCollection(collectionIdOrAlias)
}
}
6 changes: 4 additions & 2 deletions src/collections/infra/repositories/CollectionsRepository.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { ApiRepository } from '../../../core/infra/repositories/ApiRepository'
import { ICollectionsRepository } from '../../domain/repositories/ICollectionsRepository'
import { transformCollectionResponseToCollection } from './transformers/collectionTransformers'
import { Collection } from '../../domain/models/Collection'
import { Collection, ROOT_COLLECTION_ALIAS } from '../../domain/models/Collection'
export class CollectionsRepository extends ApiRepository implements ICollectionsRepository {
private readonly collectionsResourceName: string = 'dataverses'
private readonly collectionsDefaultOperationType: string = 'get'

public async getCollection(collectionIdOrAlias: number | string = 'root'): Promise<Collection> {
public async getCollection(
collectionIdOrAlias: number | string = ROOT_COLLECTION_ALIAS
): Promise<Collection> {
return this.doGet(
this.buildApiEndpoint(
this.collectionsResourceName,
Expand Down
3 changes: 2 additions & 1 deletion src/datasets/domain/useCases/CreateDataset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { NewResourceValidator } from '../../../core/domain/useCases/validators/N
import { IMetadataBlocksRepository } from '../../../metadataBlocks/domain/repositories/IMetadataBlocksRepository'
import { MetadataBlock } from '../../../metadataBlocks'
import { CreatedDatasetIdentifiers } from '../models/CreatedDatasetIdentifiers'
import { ROOT_COLLECTION_ALIAS } from '../../../collections/domain/models/Collection'

export class CreateDataset implements UseCase<CreatedDatasetIdentifiers> {
private datasetsRepository: IDatasetsRepository
Expand Down Expand Up @@ -33,7 +34,7 @@ export class CreateDataset implements UseCase<CreatedDatasetIdentifiers> {
*/
async execute(
newDataset: NewDatasetDTO,
collectionId = 'root'
collectionId = ROOT_COLLECTION_ALIAS
): Promise<CreatedDatasetIdentifiers> {
const metadataBlocks = await this.getNewDatasetMetadataBlocks(newDataset)

Expand Down
6 changes: 5 additions & 1 deletion test/environment/setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import datasetJson1 from '../testHelpers/datasets/test-dataset-1.json'
import datasetJson2 from '../testHelpers/datasets/test-dataset-2.json'
import datasetJson3 from '../testHelpers/datasets/test-dataset-3.json'
import collectionJson from '../testHelpers/collections/test-collection-1.json'
import { ROOT_COLLECTION_ALIAS } from '../../src/collections/domain/models/Collection'

const COMPOSE_FILE = 'docker-compose.yml'

Expand Down Expand Up @@ -86,7 +87,10 @@ async function createCollectionViaApi(collectionJson: any): Promise<any> {
}

/* eslint-disable @typescript-eslint/no-explicit-any */
async function createDatasetViaApi(datasetJson: any, collectionId = 'root'): Promise<any> {
async function createDatasetViaApi(
datasetJson: any,
collectionId = ROOT_COLLECTION_ALIAS
): Promise<any> {
return await axios.post(
`${TestConstants.TEST_API_URL}/dataverses/${collectionId}/datasets`,
datasetJson,
Expand Down
3 changes: 2 additions & 1 deletion test/integration/datasets/DatasetsRepository.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
DatasetContact,
DatasetDescription
} from '../../../src/datasets/domain/models/Dataset'
import { ROOT_COLLECTION_ALIAS } from '../../../src/collections/domain/models/Collection'

describe('DatasetsRepository', () => {
const sut: DatasetsRepository = new DatasetsRepository()
Expand Down Expand Up @@ -336,7 +337,7 @@ describe('DatasetsRepository', () => {
const createdDataset = await sut.createDataset(
testNewDataset,
[citationMetadataBlock],
'root'
ROOT_COLLECTION_ALIAS
)
const actualCreatedDataset = await sut.getDataset(
createdDataset.numericId,
Expand Down
4 changes: 3 additions & 1 deletion test/testHelpers/TestConstants.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { ROOT_COLLECTION_ALIAS } from '../../src/collections/domain/models/Collection'

export class TestConstants {
static readonly TEST_API_URL = 'http://localhost:8080/api/v1'
static readonly TEST_DUMMY_API_KEY = 'dummyApiKey'
Expand Down Expand Up @@ -50,5 +52,5 @@ export class TestConstants {
static readonly TEST_DUMMY_COLLECTION_ALIAS = 'dummyCollectionId'
static readonly TEST_CREATED_COLLECTION_1_ID = 4
static readonly TEST_CREATED_COLLECTION_1_ALIAS = 'firstCollection'
static readonly TEST_CREATED_COLLECTION_1_ROOT = 'root'
static readonly TEST_CREATED_COLLECTION_1_ROOT = ROOT_COLLECTION_ALIAS
}
5 changes: 3 additions & 2 deletions test/unit/datasets/CreateDataset.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
import { ResourceValidationError } from '../../../src/core/domain/useCases/validators/errors/ResourceValidationError'
import { WriteError, ReadError } from '../../../src'
import { IMetadataBlocksRepository } from '../../../src/metadataBlocks/domain/repositories/IMetadataBlocksRepository'
import { ROOT_COLLECTION_ALIAS } from '../../../src/collections/domain/models/Collection'

describe('execute', () => {
const testDataset = createNewDatasetDTO()
Expand Down Expand Up @@ -50,7 +51,7 @@ describe('execute', () => {
expect(datasetsRepositoryStub.createDataset).toHaveBeenCalledWith(
testDataset,
testMetadataBlocks,
'root'
ROOT_COLLECTION_ALIAS
)
})

Expand Down Expand Up @@ -110,7 +111,7 @@ describe('execute', () => {
expect(datasetsRepositoryStub.createDataset).toHaveBeenCalledWith(
testDataset,
testMetadataBlocks,
'root'
ROOT_COLLECTION_ALIAS
)
})

Expand Down
Loading