Newer
Older
import { BASE_MAP_IMAGES_URL } from '@/constants';
import { projectFixture } from '@/models/fixtures/projectFixture';
import { MODAL_INITIAL_STATE_MOCK } from '@/redux/modal/modal.mock';
import { PROJECT_OVERVIEW_IMAGE_MOCK } from '@/redux/project/project.mock';
import { StoreType } from '@/redux/store';
import {
InitialStoreState,
getReduxWrapperWithStore,
} from '@/utils/testing/getReduxWrapperWithStore';
import { render, screen } from '@testing-library/react';
import { OverviewImagesModal } from './OverviewImagesModal.component';
jest.mock('./utils/useOverviewImageSize', () => ({
__esModule: true,
useOverviewImageSize: jest.fn().mockImplementation(() => ({
width: 200,
height: 300,
})),
}));
const PROJECT_DIRECTORY = 'directory';
const renderComponent = (initialStoreState: InitialStoreState = {}): { store: StoreType } => {
const { Wrapper, store } = getReduxWrapperWithStore(initialStoreState);
return (
render(
<Wrapper>
<OverviewImagesModal />
</Wrapper>,
),
{
store,
}
);
};
describe('OverviewImagesModal - component', () => {
describe('when currentImage is NOT valid', () => {
beforeEach(() => {
renderComponent({
project: {
data: {
...projectFixture,
overviewImageViews: [],
topOverviewImage: PROJECT_OVERVIEW_IMAGE_MOCK,
directory: PROJECT_DIRECTORY,
},
loading: 'succeeded',
error: { message: '', name: '' },
projectId: '',
},
modal: {
...MODAL_INITIAL_STATE_MOCK,
overviewImagesState: {
imageId: 0,
},
},
});
});
it('should not render component', () => {
const element = screen.queryByTestId('overview-images-modal');
expect(element).toBeNull();
});
});
describe('when currentImage is valid', () => {
beforeEach(() => {
renderComponent({
project: {
data: {
...projectFixture,
overviewImageViews: [PROJECT_OVERVIEW_IMAGE_MOCK],
topOverviewImage: PROJECT_OVERVIEW_IMAGE_MOCK,
directory: PROJECT_DIRECTORY,
},
loading: 'succeeded',
error: { message: '', name: '' },
projectId: '',
},
modal: {
...MODAL_INITIAL_STATE_MOCK,
overviewImagesState: {
imageId: PROJECT_OVERVIEW_IMAGE_MOCK.id,
},
},
});
});
it('should render component', () => {
const element = screen.queryByTestId('overview-images-modal');
expect(element).not.toBeNull();
});
it('should render image with valid src', () => {
const imageElement = screen.getByAltText('overview');
const result = `${BASE_MAP_IMAGES_URL}/map_images/${PROJECT_DIRECTORY}/${PROJECT_OVERVIEW_IMAGE_MOCK.filename}`;
expect(imageElement.getAttribute('src')).toBe(result);
});
it('should render image wrapper with valid size', () => {
const imageElement = screen.getByAltText('overview');
const wrapperElement = imageElement.closest('div');
const wrapperStyle = wrapperElement?.getAttribute('style');
expect(wrapperStyle).toBe('width: 200px; height: 300px;');
});
});
});