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
103 changes: 101 additions & 2 deletions dashboard/src/api/apiMethods/__tests__/glossaryApiMethod.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@
import {
removeTerm,
getGlossary,
getGlossaryTermsForGlossary,
getGlossaryCategoriesForGlossary,
searchGlossary,
createGlossaryExportFile,
getGlossaryDownloadStatus,
getGlossaryImportTmpl,
getGlossaryImport,
getGlossaryType,
Expand Down Expand Up @@ -57,7 +62,10 @@ import {
assignTermtoEntitiesUrl,
assignTermtoCategoryUrl,
assignGlossaryTypeUrl,
removeTermorCatgeoryUrl
removeTermorCatgeoryUrl,
glossaryTermsUrl,
glossaryCategoriesUrl,
glossarySearchUrl
} from '../../../api/apiUrlLinks/glossaryUrl'

// Mock dependencies
Expand All @@ -81,6 +89,11 @@ const mockAssignTermtoEntitiesUrl = jest.fn((termId: string) => `/api/glossary/t
const mockAssignTermtoCategoryUrl = jest.fn((categoryId: string) => `/api/glossary/category/${categoryId}`)
const mockAssignGlossaryTypeUrl = jest.fn((guid: string) => `/api/glossary/type/${guid}`)
const mockRemoveTermorCatgeoryUrl = jest.fn((guid: string, type: string) => `/api/glossary/${type}/${guid}`)
const mockGlossaryTermsUrl = jest.fn((guid: string) => `/api/glossary/${guid}/terms`)
const mockGlossaryCategoriesUrl = jest.fn((guid: string) => `/api/glossary/${guid}/categories`)
const mockGlossarySearchUrl = jest.fn(() => '/api/glossary/search')
const mockGlossaryCreateFileUrl = jest.fn(() => '/api/glossary/create_file')
const mockGlossaryDownloadStatusUrl = jest.fn(() => '/api/glossary/download/status')

jest.mock('../../../api/apiUrlLinks/glossaryUrl', () => ({
removeTermUrl: (...args: any[]) => mockRemoveTermUrl(...args),
Expand All @@ -95,7 +108,12 @@ jest.mock('../../../api/apiUrlLinks/glossaryUrl', () => ({
assignTermtoEntitiesUrl: (...args: any[]) => mockAssignTermtoEntitiesUrl(...args),
assignTermtoCategoryUrl: (...args: any[]) => mockAssignTermtoCategoryUrl(...args),
assignGlossaryTypeUrl: (...args: any[]) => mockAssignGlossaryTypeUrl(...args),
removeTermorCatgeoryUrl: (...args: any[]) => mockRemoveTermorCatgeoryUrl(...args)
removeTermorCatgeoryUrl: (...args: any[]) => mockRemoveTermorCatgeoryUrl(...args),
glossaryTermsUrl: (...args: any[]) => mockGlossaryTermsUrl(...args),
glossaryCategoriesUrl: (...args: any[]) => mockGlossaryCategoriesUrl(...args),
glossarySearchUrl: (...args: any[]) => mockGlossarySearchUrl(...args),
glossaryCreateFileUrl: (...args: any[]) => mockGlossaryCreateFileUrl(...args),
glossaryDownloadStatusUrl: (...args: any[]) => mockGlossaryDownloadStatusUrl(...args)
}))

describe('glossaryApiMethod', () => {
Expand Down Expand Up @@ -132,6 +150,8 @@ describe('glossaryApiMethod', () => {
mockAssignTermtoCategoryUrl.mockImplementation((categoryId: string) => `/api/glossary/category/${categoryId}`)
mockAssignGlossaryTypeUrl.mockImplementation((guid: string) => `/api/glossary/type/${guid}`)
mockRemoveTermorCatgeoryUrl.mockImplementation((guid: string, type: string) => `/api/glossary/${type}/${guid}`)
mockGlossaryTermsUrl.mockImplementation((guid: string) => `/api/glossary/${guid}/terms`)
mockGlossaryCategoriesUrl.mockImplementation((guid: string) => `/api/glossary/${guid}/categories`)
})

describe('removeTerm', () => {
Expand Down Expand Up @@ -163,6 +183,85 @@ describe('glossaryApiMethod', () => {
})
})

describe('getGlossaryTermsForGlossary', () => {
it('should call _get with terms URL and list params', async () => {
const result = await getGlossaryTermsForGlossary('g-1')

expect(mockGlossaryTermsUrl).toHaveBeenCalledWith('g-1')
expect(mockGet).toHaveBeenCalledWith('/api/glossary/g-1/terms', {
method: 'GET',
params: { limit: -1, offset: 0, sort: 'ASC' }
})
expect(result).toEqual(mockResponse)
})
})

describe('getGlossaryCategoriesForGlossary', () => {
it('should call _get with categories URL and list params', async () => {
const result = await getGlossaryCategoriesForGlossary('g-2')

expect(mockGlossaryCategoriesUrl).toHaveBeenCalledWith('g-2')
expect(mockGet).toHaveBeenCalledWith('/api/glossary/g-2/categories', {
method: 'GET',
params: { limit: -1, offset: 0, sort: 'ASC' }
})
expect(result).toEqual(mockResponse)
})
})

describe('searchGlossary', () => {
it('should POST search parameters to glossary search URL', async () => {
const params = {
limit: 25,
offset: 0,
sortBy: 'glossaryName',
sortOrder: 'ASCENDING'
}
const result = await searchGlossary(params)

expect(mockGlossarySearchUrl).toHaveBeenCalled()
expect(mockPost).toHaveBeenCalledWith('/api/glossary/search', {
method: 'POST',
params: {},
data: params
})
expect(result).toEqual(mockResponse)
})
})

describe('createGlossaryExportFile', () => {
it('should POST export parameters to glossary create_file URL', async () => {
const params = {
limit: 0,
offset: 0,
sortBy: 'glossaryName',
sortOrder: 'DESCENDING'
}
const result = await createGlossaryExportFile(params)

expect(mockGlossaryCreateFileUrl).toHaveBeenCalled()
expect(mockPost).toHaveBeenCalledWith('/api/glossary/create_file', {
method: 'POST',
params: {},
data: params
})
expect(result).toEqual(mockResponse)
})
})

describe('getGlossaryDownloadStatus', () => {
it('should GET glossary download status URL', async () => {
const result = await getGlossaryDownloadStatus({})

expect(mockGlossaryDownloadStatusUrl).toHaveBeenCalled()
expect(mockGet).toHaveBeenCalledWith('/api/glossary/download/status', {
method: 'GET',
params: {}
})
expect(result).toEqual(mockResponse)
})
})

describe('getGlossaryImportTmpl', () => {
it('should call _get with correct URL and params', async () => {
const params = { type: 'glossary' }
Expand Down
52 changes: 52 additions & 0 deletions dashboard/src/api/apiMethods/glossaryApiMethod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ import {
glossaryImportUrl,
glossaryTypeUrl,
glossaryUrl,
glossaryTermsUrl,
glossaryCategoriesUrl,
glossarySearchUrl,
glossaryCreateFileUrl,
glossaryDownloadStatusUrl,
removeTermorCatgeoryUrl,
removeTermUrl
} from "../apiUrlLinks/glossaryUrl";
Expand Down Expand Up @@ -93,6 +98,48 @@ const getGlossaryType = (glossaryType: string, guid: string) => {
return _get(glossaryTypeUrl(glossaryType, guid), config);
};

const getGlossaryTermsForGlossary = (glossaryGuid: string) => {
const config: configs = {
method: "GET",
params: { limit: -1, offset: 0, sort: "ASC" }
};
return _get(glossaryTermsUrl(glossaryGuid), config);
};

const getGlossaryCategoriesForGlossary = (glossaryGuid: string) => {
const config: configs = {
method: "GET",
params: { limit: -1, offset: 0, sort: "ASC" }
};
return _get(glossaryCategoriesUrl(glossaryGuid), config);
};

const searchGlossary = (params: object) => {
const config: importConfigs = {
method: "POST",
params: {},
data: params
};
return _post(glossarySearchUrl(), config);
};

const createGlossaryExportFile = (params: object) => {
const config: importConfigs = {
method: "POST",
params: {},
data: params
};
return _post(glossaryCreateFileUrl(), config);
};

const getGlossaryDownloadStatus = (params: object) => {
const config: configs = {
method: "GET",
params: params
};
return _get(glossaryDownloadStatusUrl(), config);
};

const createGlossary = (params: any) => {
const config: importConfigs = {
method: "POST",
Expand Down Expand Up @@ -182,6 +229,11 @@ const removeTermorCategory = (
export {
removeTerm,
getGlossary,
getGlossaryTermsForGlossary,
getGlossaryCategoriesForGlossary,
searchGlossary,
createGlossaryExportFile,
getGlossaryDownloadStatus,
getGlossaryImportTmpl,
getGlossaryImport,
getGlossaryType,
Expand Down
56 changes: 55 additions & 1 deletion dashboard/src/api/apiUrlLinks/__tests__/glossaryUrl.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,13 @@ import {
assignTermtoEntitiesUrl,
assignTermtoCategoryUrl,
assignGlossaryTypeUrl,
removeTermorCatgeoryUrl
removeTermorCatgeoryUrl,
glossaryTermsUrl,
glossaryCategoriesUrl,
glossarySearchUrl,
glossaryCreateFileUrl,
glossaryDownloadStatusUrl,
glossaryDownloadFileUrl
} from '../glossaryUrl'
import { getBaseApiUrl } from '../commonApiUrl'

Expand Down Expand Up @@ -289,6 +295,54 @@ describe('glossaryUrl', () => {
})
})

describe('glossaryTermsUrl', () => {
it('should return terms URL for a glossary guid', () => {
const result = glossaryTermsUrl('glossary-guid-1')
expect(result).toBe(
'/mock-base-url/api/atlas/v2/glossary/glossary-guid-1/terms'
)
})
})

describe('glossaryCategoriesUrl', () => {
it('should return categories URL for a glossary guid', () => {
const result = glossaryCategoriesUrl('glossary-guid-2')
expect(result).toBe(
'/mock-base-url/api/atlas/v2/glossary/glossary-guid-2/categories'
)
})
})

describe('glossarySearchUrl', () => {
it('should return glossary search URL', () => {
const result = glossarySearchUrl()
expect(result).toBe('/mock-base-url/api/atlas/v2/glossary/search')
})
})

describe('glossaryCreateFileUrl', () => {
it('should return glossary create_file URL', () => {
const result = glossaryCreateFileUrl()
expect(result).toBe('/mock-base-url/api/atlas/v2/glossary/create_file')
})
})

describe('glossaryDownloadStatusUrl', () => {
it('should return glossary download status URL', () => {
const result = glossaryDownloadStatusUrl()
expect(result).toBe('/mock-base-url/api/atlas/v2/glossary/download/status')
})
})

describe('glossaryDownloadFileUrl', () => {
it('should return glossary download file URL', () => {
const result = glossaryDownloadFileUrl('glossary-export.csv')
expect(result).toBe(
'/mock-base-url/api/atlas/v2/glossary/download/glossary-export.csv'
)
})
})

describe('removeTermorCatgeoryUrl', () => {
it('should return correct URL for removing term', () => {
const guid = 'term-guid-123'
Expand Down
30 changes: 30 additions & 0 deletions dashboard/src/api/apiUrlLinks/glossaryUrl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,30 @@ const glossaryTypeUrl = (glossaryType: string, guid: string) => {
return `${glossaryUrl()}/${glossaryType}/${guid}`;
};

const glossaryTermsUrl = (glossaryGuid: string) => {
return `${glossaryUrl()}/${glossaryGuid}/terms`;
};

const glossaryCategoriesUrl = (glossaryGuid: string) => {
return `${glossaryUrl()}/${glossaryGuid}/categories`;
};

const glossarySearchUrl = () => {
return `${glossaryUrl()}/search`;
};

const glossaryCreateFileUrl = () => {
return `${glossaryUrl()}/create_file`;
};

const glossaryDownloadStatusUrl = () => {
return `${glossaryUrl()}/download/status`;
};

const glossaryDownloadFileUrl = (fileName: string) => {
return `${glossaryUrl()}/download/${fileName}`;
};

const editGlossaryUrl = (guid: string) => {
return `${glossaryUrl()}/${guid}`;
};
Expand Down Expand Up @@ -83,6 +107,12 @@ export {
glossaryImportTempUrl,
glossaryImportUrl,
glossaryTypeUrl,
glossaryTermsUrl,
glossaryCategoriesUrl,
glossarySearchUrl,
glossaryCreateFileUrl,
glossaryDownloadStatusUrl,
glossaryDownloadFileUrl,
editGlossaryUrl,
deleteGlossaryorTermUrl,
createTermorCategoryUrl,
Expand Down
5 changes: 4 additions & 1 deletion dashboard/src/components/ImportDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,14 @@ interface CustomModalProps {
open: boolean;
onClose: () => void;
title: string;
onImportSuccess?: () => void;
}

export const ImportDialog: React.FC<CustomModalProps> = ({
open,
onClose,
title
title,
onImportSuccess
}) => {
const [fileData, setFileData] = useState<any>([]);
const [progress, setProgress] = useState(0);
Expand Down Expand Up @@ -106,6 +108,7 @@ export const ImportDialog: React.FC<CustomModalProps> = ({
`File: ${fileData.name} imported successfully`
);

onImportSuccess?.();
onClose();
setErrorDetails(false);
setFileData([]);
Expand Down
Loading
Loading