Newer
Older
import { BASE_API_URL, PROJECT_ID } from '@/constants';
import { FIRST_ARRAY_ELEMENT } from '@/constants/common';
import { backgroundsFixture } from '@/models/fixtures/backgroundsFixture';
import { modelsFixture } from '@/models/fixtures/modelsFixture';
import { INITIAL_STORE_STATE_MOCK } from '@/redux/root/root.fixtures';
import { RootState } from '@/redux/store';
import { getReduxWrapperWithStore } from '@/utils/testing/getReduxWrapperWithStore';
import { renderHook } from '@testing-library/react';
import { HISTAMINE_MAP_ID } from '@/constants/mocks';
import { useGetSubmapDownloadUrl } from './useGetSubmapDownloadUrl';
const VALID_HANDLER = 'lcsb.mapviewer.wikipathway.GpmlParser';
const VALID_MODEL_ID = HISTAMINE_MAP_ID;
const VALID_BACKGROUND_ID = 53;
const VALID_MAX_ZOOM = 9;
const getState = ({
modelId,
backgroundId,
mapSizeMaxZoom,
}: {
modelId: number;
backgroundId: number;
mapSizeMaxZoom: number;
}): RootState => ({
...INITIAL_STORE_STATE_MOCK,
map: {
...INITIAL_STORE_STATE_MOCK.map,
data: {
...INITIAL_STORE_STATE_MOCK.map.data,
modelId,
backgroundId,
size: {
...INITIAL_STORE_STATE_MOCK.map.data.size,
maxZoom: mapSizeMaxZoom,
},
},
},
models: {
...INITIAL_STORE_STATE_MOCK.models,
data: [
{
...modelsFixture[FIRST_ARRAY_ELEMENT],
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
},
],
},
backgrounds: {
...INITIAL_STORE_STATE_MOCK.backgrounds,
data: [
{
...backgroundsFixture[FIRST_ARRAY_ELEMENT],
id: VALID_BACKGROUND_ID,
},
],
},
});
describe('useGetSubmapDownloadUrl - hook', () => {
describe('when not all params valid', () => {
const cases = [
{
modelId: 0,
backgroundId: VALID_BACKGROUND_ID,
mapSizeMaxZoom: VALID_MAX_ZOOM,
handler: VALID_HANDLER,
},
{
modelId: VALID_MODEL_ID,
backgroundId: 0,
mapSizeMaxZoom: VALID_MAX_ZOOM,
handler: VALID_HANDLER,
},
{
modelId: VALID_MODEL_ID,
backgroundId: VALID_BACKGROUND_ID,
mapSizeMaxZoom: 0,
handler: VALID_HANDLER,
},
{
modelId: VALID_MODEL_ID,
backgroundId: VALID_BACKGROUND_ID,
mapSizeMaxZoom: VALID_MAX_ZOOM,
handler: '',
},
];
it.each(cases)('should return empty string', ({ handler, ...stateParams }) => {
const { Wrapper } = getReduxWrapperWithStore(getState(stateParams));
const {
result: { current: getSubmapDownloadUrl },
} = renderHook(() => useGetSubmapDownloadUrl(), { wrapper: Wrapper });
expect(getSubmapDownloadUrl({ handler, modelId: 0 })).toBe('');
});
});
describe('when all params valid', () => {
it('should return valid string', () => {
const { Wrapper } = getReduxWrapperWithStore(
getState({
modelId: VALID_MODEL_ID,
backgroundId: VALID_BACKGROUND_ID,
mapSizeMaxZoom: VALID_MAX_ZOOM,
}),
);
const {
result: { current: getSubmapDownloadUrl },
} = renderHook(() => useGetSubmapDownloadUrl(), { wrapper: Wrapper });
expect(getSubmapDownloadUrl({ handler: VALID_HANDLER, modelId: HISTAMINE_MAP_ID })).toBe(
`${BASE_API_URL}/projects/${PROJECT_ID}/models/${HISTAMINE_MAP_ID}:downloadModel?backgroundOverlayId=53&handlerClass=lcsb.mapviewer.wikipathway.GpmlParser&zoomLevel=9`,