Skip to content

Commit

Permalink
refactor: added jest mock file (#941)
Browse files Browse the repository at this point in the history
* chore: added jest mock file

* chore: added BottomSheetView mock
  • Loading branch information
gorhom authored May 14, 2022
1 parent e15965f commit ce15894
Show file tree
Hide file tree
Showing 2 changed files with 127 additions and 1 deletion.
125 changes: 125 additions & 0 deletions mock.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
/**
* Mock implementation for test runners.
*
* Example:
*
* ```js
* jest.mock('@gorhom/bottom-sheet', () => require('@gorhom/bottom-sheet/mock'));
* ```
*/

const React = require('react');

const NOOP = () => {};
const NOOP_VALUE = { value: 0 };

const BottomSheetModalProvider = ({ children }) => {
return children;
};

const BottomSheetBackdrop = NOOP;

const BottomSheetComponent = props => {
return props.children;
};

class BottomSheetModal extends React.Component {
snapToIndex() {}
snapToPosition() {}
expand() {}
collapse() {}
close() {}
forceClose() {}
present() {}
dismiss() {}

render() {
return this.props.children;
}
}

class BottomSheet extends React.Component {
snapToIndex() {}
snapToPosition() {}
expand() {}
collapse() {}
close() {}
forceClose() {}

render() {
return this.props.children;
}
}

const useBottomSheet = () => ({
snapToIndex: NOOP,
snapToPosition: NOOP,
expand: NOOP,
collapse: NOOP,
close: NOOP,
forceClose: NOOP,

animatedIndex: NOOP_VALUE,
animatedPosition: NOOP_VALUE,
});

const useBottomSheetModal = () => ({
dismiss: NOOP,
dismissAll: NOOP,
});

const useBottomSheetAnimationConfigs = configs => configs;

const bottomSheetInternal = {
stopAnimation: NOOP,
animateToPosition: NOOP,
setScrollableRef: NOOP,
removeScrollableRef: NOOP,
};

const bottomSheetModalInternal = {
mountSheet: NOOP,
unmountSheet: NOOP,
willUnmountSheet: NOOP,
};

const internalProxy = {
get(target, prop) {
return prop in target ? target[prop] : NOOP_VALUE;
},
};

const useBottomSheetInternal = () =>
new Proxy(bottomSheetInternal, internalProxy);

const useBottomSheetModalInternal = () =>
new Proxy(bottomSheetModalInternal, internalProxy);

const useBottomSheetDynamicSnapPoints = () => ({
animatedSnapPoints: NOOP_VALUE,
animatedHandleHeight: NOOP_VALUE,
animatedContentHeight: NOOP_VALUE,
handleContentLayout: NOOP,
});

module.exports = {
BottomSheetView: BottomSheetComponent,
BottomSheetScrollView: BottomSheetComponent,
BottomSheetSectionList: BottomSheetComponent,
BottomSheetFlatList: BottomSheetComponent,
BottomSheetVirtualizedList: BottomSheetComponent,

BottomSheetModalProvider,
BottomSheetModal,
BottomSheetBackdrop,

default: BottomSheet,

useBottomSheet,
useBottomSheetModal,
useBottomSheetSpringConfigs: useBottomSheetAnimationConfigs,
useBottomSheetTimingConfigs: useBottomSheetAnimationConfigs,
useBottomSheetInternal,
useBottomSheetModalInternal,
useBottomSheetDynamicSnapPoints,
};
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"react-native": "src/index.ts",
"files": [
"src",
"lib"
"lib",
"mock.js"
],
"keywords": [
"react-native",
Expand Down

0 comments on commit ce15894

Please sign in to comment.