Skip to content

Commit dde2e11

Browse files
committed
fix: broken tets
1 parent f5b921a commit dde2e11

File tree

4 files changed

+73
-63
lines changed

4 files changed

+73
-63
lines changed

package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useEffect, useState } from 'react';
22

33
import type { SharedValue } from 'react-native-reanimated';
44

@@ -39,15 +39,22 @@ jest.mock('../../../native.ts', () => {
3939
});
4040

4141
const ImageGalleryComponent = (props: ImageGalleryProps & { message: LocalMessage }) => {
42-
const initialImageGalleryStateStore = new ImageGalleryStateStore();
42+
const [imageGalleryStateStore] = useState(() => new ImageGalleryStateStore());
43+
44+
useEffect(() => {
45+
const unsubscribe = imageGalleryStateStore.registerSubscriptions();
46+
47+
return () => {
48+
unsubscribe();
49+
};
50+
}, [imageGalleryStateStore]);
51+
4352
const { attachments } = props.message;
44-
initialImageGalleryStateStore.openImageGallery({
45-
message: props.message,
53+
imageGalleryStateStore.openImageGallery({
54+
messages: [props.message],
4655
selectedAttachmentUrl: attachments?.[0]?.asset_url || attachments?.[0]?.image_url || '',
4756
});
4857

49-
const [imageGalleryStateStore] = useState(initialImageGalleryStateStore);
50-
5158
return (
5259
<OverlayProvider value={{ overlayOpacity: { value: 1 } as SharedValue<number> }}>
5360
<ImageGalleryContext.Provider

package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useEffect, useState } from 'react';
22

33
import { Text, View } from 'react-native';
44
import type { SharedValue } from 'react-native-reanimated';
@@ -38,17 +38,26 @@ jest.mock('../../../native.ts', () => {
3838
});
3939

4040
const ImageGalleryComponentVideo = (props: ImageGalleryProps) => {
41-
const initialImageGalleryStateStore = new ImageGalleryStateStore();
41+
const [imageGalleryStateStore] = useState(() => new ImageGalleryStateStore());
42+
43+
useEffect(() => {
44+
const unsubscribe = imageGalleryStateStore.registerSubscriptions();
45+
46+
return () => {
47+
unsubscribe();
48+
};
49+
}, [imageGalleryStateStore]);
50+
4251
const attachment = generateVideoAttachment({ type: 'video' });
43-
initialImageGalleryStateStore.openImageGallery({
44-
message: generateMessage({
45-
attachments: [attachment],
46-
}) as unknown as LocalMessage,
47-
selectedAttachmentUrl: attachment.url,
52+
imageGalleryStateStore.openImageGallery({
53+
messages: [
54+
generateMessage({
55+
attachments: [attachment],
56+
}) as unknown as LocalMessage,
57+
],
58+
selectedAttachmentUrl: attachment.asset_url,
4859
});
4960

50-
const [imageGalleryStateStore] = useState(initialImageGalleryStateStore);
51-
5261
return (
5362
<OverlayProvider value={{ overlayOpacity: { value: 1 } as SharedValue<number> }}>
5463
<ImageGalleryContext.Provider
@@ -65,16 +74,25 @@ const ImageGalleryComponentImage = (
6574
attachment: Attachment;
6675
},
6776
) => {
68-
const initialImageGalleryStateStore = new ImageGalleryStateStore();
69-
initialImageGalleryStateStore.openImageGallery({
70-
message: generateMessage({
71-
attachments: [props.attachment],
72-
}) as unknown as LocalMessage,
77+
const [imageGalleryStateStore] = useState(() => new ImageGalleryStateStore());
78+
79+
useEffect(() => {
80+
const unsubscribe = imageGalleryStateStore.registerSubscriptions();
81+
82+
return () => {
83+
unsubscribe();
84+
};
85+
}, [imageGalleryStateStore]);
86+
87+
imageGalleryStateStore.openImageGallery({
88+
messages: [
89+
generateMessage({
90+
attachments: [props.attachment],
91+
}) as unknown as LocalMessage,
92+
],
7393
selectedAttachmentUrl: props.attachment.image_url as string,
7494
});
7595

76-
const [imageGalleryStateStore] = useState(initialImageGalleryStateStore);
77-
7896
return (
7997
<OverlayProvider value={{ overlayOpacity: { value: 1 } as SharedValue<number> }}>
8098
<ImageGalleryContext.Provider

package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useEffect, useState } from 'react';
22

33
import { Text, View } from 'react-native';
44

@@ -7,7 +7,6 @@ import { SharedValue } from 'react-native-reanimated';
77
import { act, fireEvent, render, screen } from '@testing-library/react-native';
88

99
import { LocalMessage } from '../../../../../../stream-chat-js/dist/types/types';
10-
import * as imageGalleryContext from '../../../contexts/imageGalleryContext/ImageGalleryContext';
1110
import {
1211
ImageGalleryContext,
1312
ImageGalleryContextValue,
@@ -21,20 +20,23 @@ import { generateMessage } from '../../../mock-builders/generator/message';
2120
import { ImageGalleryStateStore } from '../../../state-store/image-gallery-state-store';
2221
import { ImageGrid, ImageGridType } from '../components/ImageGrid';
2322

24-
const imageGalleryStoreSetup = (message: LocalMessage) => {
25-
const initialImageGalleryStateStore = new ImageGalleryStateStore();
26-
initialImageGalleryStateStore.openImageGallery({
27-
message,
23+
const ImageGalleryGridComponent = (props: Partial<ImageGridType> & { message: LocalMessage }) => {
24+
const { message } = props;
25+
const [imageGalleryStateStore] = useState(() => new ImageGalleryStateStore());
26+
27+
useEffect(() => {
28+
const unsubscribe = imageGalleryStateStore.registerSubscriptions();
29+
30+
return () => {
31+
unsubscribe();
32+
};
33+
}, [imageGalleryStateStore]);
34+
35+
imageGalleryStateStore.openImageGallery({
36+
messages: [message],
2837
selectedAttachmentUrl:
2938
message.attachments?.[0]?.asset_url || message.attachments?.[0]?.image_url || '',
3039
});
31-
return initialImageGalleryStateStore;
32-
};
33-
34-
const ImageGalleryGridComponent = (props: Partial<ImageGridType> & { message: LocalMessage }) => {
35-
const initialImageGalleryStateStore = imageGalleryStoreSetup(props.message);
36-
37-
const [imageGalleryStateStore] = useState(initialImageGalleryStateStore);
3840

3941
return (
4042
<OverlayProvider value={{ overlayOpacity: { value: 1 } as SharedValue<number> }}>
@@ -52,11 +54,6 @@ describe('ImageGalleryOverlay', () => {
5254
const message = generateMessage({
5355
attachments: [generateImageAttachment(), generateImageAttachment()],
5456
}) as unknown as LocalMessage;
55-
const stateStore = imageGalleryStoreSetup(message);
56-
57-
jest.spyOn(imageGalleryContext, 'useImageGalleryContext').mockReturnValue({
58-
imageGalleryStateStore: stateStore,
59-
} as unknown as ImageGalleryContextValue);
6057

6158
render(<ImageGalleryGridComponent message={message} />);
6259

@@ -67,11 +64,6 @@ describe('ImageGalleryOverlay', () => {
6764
const message = generateMessage({
6865
attachments: [generateImageAttachment(), generateVideoAttachment({ type: 'video' })],
6966
}) as unknown as LocalMessage;
70-
const stateStore = imageGalleryStoreSetup(message);
71-
72-
jest.spyOn(imageGalleryContext, 'useImageGalleryContext').mockReturnValue({
73-
imageGalleryStateStore: stateStore,
74-
} as unknown as ImageGalleryContextValue);
7567

7668
render(<ImageGalleryGridComponent message={message} />);
7769

@@ -89,12 +81,6 @@ describe('ImageGalleryOverlay', () => {
8981
attachments: [generateImageAttachment(), generateVideoAttachment({ type: 'video' })],
9082
}) as unknown as LocalMessage;
9183

92-
const stateStore = imageGalleryStoreSetup(message);
93-
94-
jest.spyOn(imageGalleryContext, 'useImageGalleryContext').mockReturnValue({
95-
imageGalleryStateStore: stateStore,
96-
} as unknown as ImageGalleryContextValue);
97-
9884
render(<ImageGalleryGridComponent imageComponent={CustomImageComponent} message={message} />);
9985

10086
expect(screen.queryAllByText('Image Attachment')).toHaveLength(2);
@@ -106,11 +92,6 @@ describe('ImageGalleryOverlay', () => {
10692
const message = generateMessage({
10793
attachments: [generateImageAttachment(), generateVideoAttachment({ type: 'video' })],
10894
}) as unknown as LocalMessage;
109-
const stateStore = imageGalleryStoreSetup(message);
110-
111-
jest.spyOn(imageGalleryContext, 'useImageGalleryContext').mockReturnValue({
112-
imageGalleryStateStore: stateStore,
113-
} as unknown as ImageGalleryContextValue);
11495

11596
render(<ImageGalleryGridComponent closeGridView={closeGridViewMock} message={message} />);
11697

package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from 'react';
1+
import React, { useEffect, useState } from 'react';
22

33
import { Text, View } from 'react-native';
44
import type { SharedValue } from 'react-native-reanimated';
@@ -33,16 +33,20 @@ jest.mock('../../../native.ts', () => {
3333
});
3434

3535
const ImageGalleryComponent = (props: ImageGalleryProps) => {
36-
const initialImageGalleryStateStore = new ImageGalleryStateStore();
36+
const [imageGalleryStateStore] = useState(() => new ImageGalleryStateStore());
3737
const attachment = generateImageAttachment();
38-
initialImageGalleryStateStore.openImageGallery({
39-
message: generateMessage({
40-
attachments: [attachment],
41-
}) as unknown as LocalMessage,
38+
imageGalleryStateStore.openImageGallery({
39+
messages: [generateMessage({ attachments: [attachment] }) as unknown as LocalMessage],
4240
selectedAttachmentUrl: attachment.url,
4341
});
4442

45-
const [imageGalleryStateStore] = useState(initialImageGalleryStateStore);
43+
useEffect(() => {
44+
const unsubscribe = imageGalleryStateStore.registerSubscriptions();
45+
46+
return () => {
47+
unsubscribe();
48+
};
49+
}, [imageGalleryStateStore]);
4650

4751
return (
4852
<OverlayProvider value={{ overlayOpacity: { value: 1 } as SharedValue<number> }}>

0 commit comments

Comments
 (0)