Skip to content

Instantly share code, notes, and snippets.

@axelnormand
axelnormand / mockChannel.ts
Created July 30, 2018 10:30
React Native Storybook
import Channel from '@storybook/channels';
/** create mock channel so don't need websocket in jest tests */
export const createMockChannel = () => {
const transport = {
setHandler: () => null,
send: () => null,
};
return new Channel({ transport });
@axelnormand
axelnormand / package.json
Last active July 30, 2018 11:01
React Native Storybook
{
"scripts": {
"prestorybookBuild": "tsc --lib ES7 --skipLibCheck --outDir ./src/test/storybook/storyshots ./src/test/storybook/storyshots/createTests.ts",
"prestorybook": "yarn prestorybookBuild && node src/test/storybook/storyshots/createTests.js",
"storybook": "storybook start -p 7007 -c \"src/test/storybook\"",
...
},
"dependencies": {
"@storybook/addon-actions": "^3.4.3",
"@storybook/addon-links": "^3.4.3",
@axelnormand
axelnormand / createTests.ts
Last active July 30, 2018 10:52
React Native Storyshot Generation
import chalk from 'chalk';
import * as fs from 'graceful-fs';
import * as path from 'path';
const SRC_DIR = path.join(__dirname, '../../../../src');
const ALL_STORIES_DIR = path.join(__dirname, 'allStories');
const ALL_STORIES_FILE = path.join(ALL_STORIES_DIR, 'index.ts'); // commit this file to git
const STORY_EXTENSION = '.story.tsx';
const STORY_TEST_OUTPUT_EXTENSION = '.story.test.ts';
@axelnormand
axelnormand / select.js
Last active January 5, 2018 16:30
Select util function for redux - saves milliseconds in your typing :)
// @flow
export const select = (selectors: Object) => (state: Object): Object => {
const keys = Object.keys(selectors);
const ret = {};
keys.forEach(key => {
if (!selectors[key]){
throw new Error(
`
Could not find key '${key}' in selectors.
@axelnormand
axelnormand / login.js
Last active April 22, 2019 03:57
sagas
// @flow
import { put, call, takeLatest } from 'redux-saga/effects';
import { login as loginApi } from '../api/login';
import {
loginActionTypes,
loginLoading,
loginComplete,
loginInvalid
} from '../reducers/login/loginActions';
import type { UserLogin } from '../reducers/login/loginActions';