# Edge case handling - Fri 23rd Oct, 2020 Friday was all about handling various use config edge cases in-app, such as when a user doesn't have the full feed enabled and only blogs. It was straightforward enough, generally just a matter of hiding certain tabs / buttons for navigation. I had to add a `MockedProvider` to the testing setup: ```typescript= import React from 'react' import { MockedProvider as ApolloMockedProvider } from '@apollo/client/testing' import { MockedProviderProps } from '@apollo/client/utilities/testing/mocking/MockedProvider' import { authStatusQuery } from '../../__mocks__/auth.mocks' import { enabledFeaturesQuery } from '../../__mocks__/enabledFeatures.mocks' export const MockedProvider: React.FC<MockedProviderProps> = ({ mocks, children, ...props }) => ( <ApolloMockedProvider mocks={[authStatusQuery, enabledFeaturesQuery, ...(mocks ?? [])]} {...props}> <>{children}</> </ApolloMockedProvider> ) ``` ```typescript= const Stack = createStackNavigator() interface MockedNavigatorProps { component: any screenName?: string params?: any } /** * Use in test whenever you have use a React Navigation hook in your component */ export const MockedNavigator: React.FC<MockedNavigatorProps> = ({ component: Component, screenName = 'MockedScreen', params = {}, }) => ( <MockedProvider> <NavigationContainer> <Stack.Navigator> <Stack.Screen name={screenName} initialParams={params}> {(props) => <Component {...props} />} </Stack.Screen> </Stack.Navigator> </NavigationContainer> </MockedProvider> ) ``` VERY useful here to already have the mocks setup for these queries. ###### tags: `programmingjournal` `2020` `C+` `edgecases` `mockedprovider` `mockednavigator`