import React from 'react'; import { View } from 'react-native'; import { render } from '@testing-library/react-native'; import { useAttachmentPickerContext, useChannelContext, useChannelsContext, useChatContext, useBottomSheetContext, useImageGalleryContext, useMessagesContext, useOverlayContext, useOwnCapabilitiesContext, usePaginatedMessageListContext, useTheme, useThreadContext, useTypingContext, } from '../'; import { useChannelsStateContext } from '../channelsStateContext/ChannelsStateContext'; jest.mock('../utils/isTestEnvironment', () => ({ isTestEnvironment: jest.fn(() => false) })); jest.spyOn(console, 'error').mockImplementation(); describe('contexts hooks in a component throws an error with message when not wrapped in a provider', () => { const TestComponent = ({ useContextHook }: { useContextHook(): void }) => { useContextHook(); return ; }; it.each([ [ useOverlayContext, 'The useOverlayContext hook was called outside the OverlayContext Provider. Make sure you have configured OverlayProvider component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#overlay-provider', ], [ usePaginatedMessageListContext, 'The usePaginatedMessageListContext hook was called outside of the PaginatedMessageList provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel', ], [ useChannelsStateContext, 'The useChannelsStateContext hook was called outside the ChannelStateContext Provider. Make sure you have configured OverlayProvider component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#overlay-provider', ], [ useOwnCapabilitiesContext, 'The useOwnCapabilitiesContext hook was called outside the Channel Component. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel', ], [ useTypingContext, 'The useTypingContext hook was called outside of the TypingContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel', ], [ useTheme, 'The useThemeContext hook was called outside the ThemeContext Provider. Make sure you have configured OverlayProvider component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#overlay-provider', ], [ useChannelContext, 'The useChannelContext hook was called outside of the ChannelContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel', ], [ useChannelsContext, 'The useChannelsContext hook was called outside of the ChannelsContext provider. Make sure you have configured ChannelList component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel-list', ], [ useChatContext, 'The useChatContext hook was called outside the ChatContext Provider. Make sure you have configured Chat component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#chat', ], [ useImageGalleryContext, 'The useImageGalleryContext hook was called outside the ImageGalleryContext Provider. Make sure you have configured OverlayProvider component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#overlay-provider', ], [ useMessagesContext, 'The useMessagesContext hook was called outside of the MessagesContext provider. Make sure you have configured MessageList component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#message-list', ], [ useThreadContext, 'The useThreadContext hook was called outside of the ThreadContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel', ], [ useAttachmentPickerContext, 'The useAttachmentPickerContext hook was called outside the AttachmentPickerContext provider. Make sure you have configured OverlayProvider component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#overlay-provider', ], [ useBottomSheetContext, 'The useBottomSheetContext hook was called outside the BottomSheetContext Provider. Make sure you have configured BottomSheetModal component correctly.', ], ])('calls %p results in error %p', (useContextHook, expectedErrorMessage) => { expect(() => render()).toThrow( expectedErrorMessage, ); }); });