Skip to content

Instantly share code, notes, and snippets.

View xiongemi's full-sized avatar
🏠
Working from home

Emily Xiong xiongemi

🏠
Working from home
View GitHub Profile
@xiongemi
xiongemi / e2e.spec.ts
Created April 10, 2022 07:32
e2e test template
import { device, element, by, expect } from 'detox';
describe('<your page>', () => {
beforeEach(async () => {
await device.reloadReactNative();
});
it('should ...', async () => {
await waitFor(element(by.id('your page testID')))
.toBeVisible()
@xiongemi
xiongemi / app.spec.ts
Last active November 14, 2022 06:09
stater e2e test StudioGhibliSearchEngineApp
import { device, element, by, expect } from 'detox';
describe('StudioGhibliSearchEngineApp', () => {
beforeEach(async () => {
await device.reloadReactNative();
});
it('should display heading', async () => {
await waitFor(element(by.id('search-page'))).toBeVisible().withTimeout(5000);
await expect(element(by.id('heading'))).toBeVisible();
@xiongemi
xiongemi / film.spec.tsx
Created April 8, 2022 19:29
example unit test with different store
import { mockFilmEntity } from '@studio-ghibli-search-engine/models';
import {
initialRootState,
RootState,
} from '@studio-ghibli-search-engine/store';
import { render } from '@testing-library/react-native';
import React from 'react';
import { Provider } from 'react-redux';
import configureStore, { MockStoreEnhanced } from 'redux-mock-store';
@xiongemi
xiongemi / film.spec.tsx
Created April 7, 2022 04:49
mock redux store unit test for react native
import {
initialRootState,
RootState,
} from '@studio-ghibli-search-engine/store';
import { render } from '@testing-library/react-native';
import React from 'react';
import { Provider } from 'react-redux';
import configureStore, { MockStoreEnhanced } from 'redux-mock-store';
import Film from './film';
@xiongemi
xiongemi / test-setup.ts
Created April 6, 2022 15:31
mock @react-navigation/native for unit testing
jest.mock('@react-navigation/native', () => {
return {
useNavigation: () => ({
navigate: jest.fn(),
dispatch: jest.fn(),
}),
useRoute: () => ({
params: {
id: '123',
},
@xiongemi
xiongemi / loading.stories.tsx
Created April 5, 2022 22:06
example example story for loading component
import { storiesOf } from '@storybook/react-native';
import React from 'react';
import { Loading } from './loading';
const props = {};
storiesOf('Loading', module).add('Primary', () => <Loading {...props} />);
@xiongemi
xiongemi / results.spec.tsx
Created April 4, 2022 06:27
start react native unit test
import React from 'react';
import { render } from '@testing-library/react-native';
import Results from './results';
describe('Results', () => {
it('should render successfully', () => {
const { container } = render(<Results />);
expect(container).toBeTruthy();
});
@xiongemi
xiongemi / store.tsx
Created April 4, 2022 05:53
mock store with thunk middleware
import {
initialRootState,
RootState,
} from '@studio-ghibli-search-engine/store';
import React from 'react';
import { Provider as StoreProvider } from 'react-redux';
import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
export const StoreDecorator = (story) => {
@xiongemi
xiongemi / people-list-item.stories.tsx
Created April 4, 2022 05:43
story with mock store decorator
import { storiesOf } from '@storybook/react-native';
import { mockPeopleEntity } from '@studio-ghibli-search-engine/models';
import React from 'react';
import { NavigationDecorator, StoreDecorator } from '../../../storybook/mocks';
import PeopleListItem from './people-list-item';
storiesOf('PeopleListItem', module)
.addDecorator(StoreDecorator)
@xiongemi
xiongemi / store.tsx
Last active April 4, 2022 05:54
mock store decorator
// src/storybook/mocks/store.tsx
import {
initialRootState,
RootState,
} from '@studio-ghibli-search-engine/store';
import React from 'react';
import { Provider as StoreProvider } from 'react-redux';
import configureStore from 'redux-mock-store';
export const StoreDecorator = (story) => {