diff --git a/frontend/packages/shared/src/api/queries.ts b/frontend/packages/shared/src/api/queries.ts index 2911677abc3..93af10afec8 100644 --- a/frontend/packages/shared/src/api/queries.ts +++ b/frontend/packages/shared/src/api/queries.ts @@ -174,3 +174,36 @@ export const getProcessTaskType = (org: string, app: string, taskId: string) => // Contact Page export const fetchBelongsToGiteaOrg = () => get(belongsToOrg()); + +// Org level code lists +const orgLevelCodeListsMock: OptionListsResponse[] = [ + [ + { + title: 'title1', + data: [ + { label: 'label1', value: 'value1' }, + { label: 'label2', value: 'value2' }, + ], + hasError: false, + }, + { + title: 'title2', + data: [], + hasError: false, + }, + ], + [ + { + title: 'title3', + data: [], + hasError: false, + }, + ], +]; +export const getOrgLevelCodeLists = async (org: string): Promise => + // TODO: Replace with endpoint when it is ready in backend. https://github.com/Altinn/altinn-studio/issues/14482 + new Promise((resolve) => { + setTimeout(() => { + resolve(orgLevelCodeListsMock); + }, 200); + }); diff --git a/frontend/packages/shared/src/hooks/queries/useOrgLevelCodeListsQuery.test.ts b/frontend/packages/shared/src/hooks/queries/useOrgLevelCodeListsQuery.test.ts new file mode 100644 index 00000000000..2420631dc0f --- /dev/null +++ b/frontend/packages/shared/src/hooks/queries/useOrgLevelCodeListsQuery.test.ts @@ -0,0 +1,18 @@ +import { queriesMock } from 'app-shared/mocks/queriesMock'; +import { renderHookWithProviders } from 'app-shared/mocks/renderHookWithProviders'; +import { waitFor } from '@testing-library/react'; +import { useOrgLevelCodeListsQuery } from './useOrgLevelCodeListsQuery'; + +describe('useOrgLevelCodeListsQuery', () => { + it('calls getOrgLevelCodeLists with the correct parameters', () => { + render(); + expect(queriesMock.getOrgLevelCodeLists).toHaveBeenCalledWith(); + expect(queriesMock.getOrgLevelCodeLists).toHaveBeenCalledTimes(1); + }); +}); + +const render = async () => { + const { result } = renderHookWithProviders(() => useOrgLevelCodeListsQuery()); + await waitFor(() => expect(result.current.isSuccess).toBe(true)); + return result; +}; diff --git a/frontend/packages/shared/src/hooks/queries/useOrgLevelCodeListsQuery.ts b/frontend/packages/shared/src/hooks/queries/useOrgLevelCodeListsQuery.ts new file mode 100644 index 00000000000..0273639932e --- /dev/null +++ b/frontend/packages/shared/src/hooks/queries/useOrgLevelCodeListsQuery.ts @@ -0,0 +1,12 @@ +import { useQuery } from '@tanstack/react-query'; +import { QueryKey } from 'app-shared/types/QueryKey'; +import { useServicesContext } from 'app-shared/contexts/ServicesContext'; +import type { OptionListsResponse } from 'app-shared/types/api/OptionListsResponse'; + +export const useOrgLevelCodeListsQuery = () => { + const { getOrgLevelCodeLists } = useServicesContext(); + return useQuery({ + queryKey: [QueryKey.OrgLevelCodeLists], + queryFn: () => getOrgLevelCodeLists(), + }); +}; diff --git a/frontend/packages/shared/src/mocks/queriesMock.ts b/frontend/packages/shared/src/mocks/queriesMock.ts index 946c52133cc..ca7986d7481 100644 --- a/frontend/packages/shared/src/mocks/queriesMock.ts +++ b/frontend/packages/shared/src/mocks/queriesMock.ts @@ -77,6 +77,7 @@ import type { OptionListsResponse } from 'app-shared/types/api/OptionListsRespon export const queriesMock: ServicesContextProps = { // Queries + getOrgLevelCodeLists: jest.fn().mockImplementation(() => Promise.resolve([])), getAppMetadataModelIds: jest.fn().mockImplementation(() => Promise.resolve([])), getAppReleases: jest .fn() diff --git a/frontend/packages/shared/src/types/QueryKey.ts b/frontend/packages/shared/src/types/QueryKey.ts index c5562fc0bc5..3ab40e1b907 100644 --- a/frontend/packages/shared/src/types/QueryKey.ts +++ b/frontend/packages/shared/src/types/QueryKey.ts @@ -49,6 +49,7 @@ export enum QueryKey { AppScopes = 'AppScopes', SelectedAppScopes = 'SelectedAppScopes', DataType = 'DataType', + OrgLevelCodeLists = 'OrgLevelCodeLists', // Resourceadm ResourceList = 'ResourceList',