Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
78 changes: 78 additions & 0 deletions serverless/src/getConcepts/__tests__/handler.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,84 @@ describe('getConcepts', () => {
version: 'published'
})
})

test('converts granuledataformat to dataformat', async () => {
getVersionMetadata.mockResolvedValue({ versionName: '1.0' })
getConceptSchemeDetails.mockResolvedValue({ /* Mock scheme details */ })
getFilteredTriples.mockResolvedValue([])
processTriples.mockReturnValue({
bNodeMap: {},
nodes: {},
conceptURIs: []
})

getTotalConceptCount.mockResolvedValue(0)
getGcmdMetadata.mockResolvedValue({})

const event = {
pathParameters: {
conceptScheme: 'granuledataformat'
},
queryStringParameters: {
version: 'published'
}
}

await getConcepts(event)

// Check if getFilteredTriples was called with 'dataformat' instead of 'granuledataformat'
expect(getFilteredTriples).toHaveBeenCalledWith(
expect.objectContaining({
conceptScheme: 'dataformat',
version: 'published'
})
)

// Also check if getConceptSchemeDetails was called with 'dataformat'
expect(getConceptSchemeDetails).toHaveBeenCalledWith({
schemeName: 'dataformat',
version: 'published'
})
})

test('does not convert other concept schemes', async () => {
getVersionMetadata.mockResolvedValue({ versionName: '1.0' })
getConceptSchemeDetails.mockResolvedValue({ /* Mock scheme details */ })
getFilteredTriples.mockResolvedValue([])
processTriples.mockReturnValue({
bNodeMap: {},
nodes: {},
conceptURIs: []
})

getTotalConceptCount.mockResolvedValue(0)
getGcmdMetadata.mockResolvedValue({})

const event = {
pathParameters: {
conceptScheme: 'otherScheme'
},
queryStringParameters: {
version: 'published'
}
}

await getConcepts(event)

// Check if getFilteredTriples was called with the original scheme name
expect(getFilteredTriples).toHaveBeenCalledWith(
expect.objectContaining({
conceptScheme: 'otherScheme',
version: 'published'
})
)

// Also check if getConceptSchemeDetails was called with the original scheme name
expect(getConceptSchemeDetails).toHaveBeenCalledWith({
schemeName: 'otherScheme',
version: 'published'
})
})
})

describe('when format is CSV', () => {
Expand Down
7 changes: 6 additions & 1 deletion serverless/src/getConcepts/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,8 @@ export const getConcepts = async (event, context) => {

const { defaultResponseHeaders, maxTotalConceptsLimit = 50000 } = getApplicationConfig()
const { queryStringParameters } = event
const { conceptScheme, pattern } = event?.pathParameters || {}
const { pattern } = event?.pathParameters || {}
let { conceptScheme } = event?.pathParameters || {}
const { page_num: pageNumStr = '1', page_size: pageSizeStr = '2000', format = 'rdf' } = event?.queryStringParameters || {}
const version = queryStringParameters?.version || 'published'

Expand All @@ -117,6 +118,10 @@ export const getConcepts = async (event, context) => {

// Check existence of scheme if given
if (conceptScheme) {
if (conceptScheme.toLowerCase() === 'granuledataformat') {
conceptScheme = 'dataformat'
}

const scheme = await getConceptSchemeDetails({
schemeName: conceptScheme,
version
Expand Down
46 changes: 0 additions & 46 deletions serverless/src/shared/__tests__/createCsvForScheme.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -165,52 +165,6 @@ describe('createCsvForScheme', () => {
expect(generateCsvHeaders).toHaveBeenCalledWith(scheme, version, 3)
expect(createCsv).toHaveBeenCalledWith(mockMetadata, mockGeneratedHeaders, mockPaths)
})

test('should handle "granuledataformat" scheme correctly', async () => {
const scheme = 'granuledataformat'
const version = 'draft'
const versionName = 'Test Version'
const versionCreationDate = '2023-01-01'
const mockDefaultHeaders = { 'Default-Header': 'value' }
const mockMetadata = { some: 'metadata' }
const mockHeaders = ['Header1', 'Header2']
const mockPaths = ['path1', 'path2']
const mockCsvContent = 'csv,content'

getApplicationConfig.mockReturnValue({ defaultResponseHeaders: mockDefaultHeaders })
createCsvMetadata.mockReturnValue(mockMetadata)
getCsvHeaders.mockResolvedValue(mockHeaders)
getCsvPaths.mockResolvedValue(mockPaths)
createCsv.mockResolvedValue(mockCsvContent)

const result = await createCsvForScheme({
scheme,
version,
versionName,
versionCreationDate
})

expect(result).toEqual({
statusCode: 200,
body: mockCsvContent,
headers: {
...mockDefaultHeaders,
'Content-Type': 'text/csv',
'Content-Disposition': 'attachment; filename=dataformat.csv'
}
})

// Check if the functions were called with 'dataformat' instead of 'granuledataformat'
expect(createCsvMetadata).toHaveBeenCalledWith({
versionName,
scheme: 'dataformat',
versionCreationDate: '2023-01-01'
})

expect(getCsvHeaders).toHaveBeenCalledWith('dataformat', version)
expect(getCsvPaths).toHaveBeenCalledWith('dataformat', mockHeaders.length, version)
expect(createCsv).toHaveBeenCalledWith(mockMetadata, mockHeaders, mockPaths)
})
})

describe('when unsuccessful', () => {
Expand Down
5 changes: 0 additions & 5 deletions serverless/src/shared/createCsvForScheme.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,6 @@ export const createCsvForScheme = async ({
}) => {
const { defaultResponseHeaders } = getApplicationConfig()
try {
if (scheme.toLowerCase() === 'granuledataformat') {
// eslint-disable-next-line no-param-reassign
scheme = 'dataformat'
}

// Create CSV metadata
const csvMetadata = createCsvMetadata({
versionName,
Expand Down