Skip to content

Commit

Permalink
Add getParam navigation helper (#3510)
Browse files Browse the repository at this point in the history
* add getParam helper

* passing tests

* check for existence of param instead of just or

* fix spacing

* use in instead of checking for null

* add test for null
  • Loading branch information
peterpme authored and brentvatne committed Feb 15, 2018
1 parent 69bca19 commit 50dcb37
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 0 deletions.
39 changes: 39 additions & 0 deletions src/__tests__/addNavigationHelpers-test.js
Expand Up @@ -76,4 +76,43 @@ describe('addNavigationHelpers', () => {
});
expect(mockedDispatch.mock.calls.length).toBe(1);
});

it('handles GetParams action', () => {
const mockedDispatch = jest
.fn(() => false)
.mockImplementationOnce(() => true);
expect(
addNavigationHelpers({
state: { key: 'B', routeName: 'Settings', params: { name: 'Peter' } },
dispatch: mockedDispatch,
addListener: dummyEventSubscriber,
}).getParam('name', 'Brent')
).toEqual('Peter');
});

it('handles GetParams action with default param', () => {
const mockedDispatch = jest
.fn(() => false)
.mockImplementationOnce(() => true);
expect(
addNavigationHelpers({
state: { key: 'B', routeName: 'Settings' },
dispatch: mockedDispatch,
addListener: dummyEventSubscriber,
}).getParam('name', 'Brent')
).toEqual('Brent');
});

it('handles GetParams action with param value as null', () => {
const mockedDispatch = jest
.fn(() => false)
.mockImplementationOnce(() => true);
expect(
addNavigationHelpers({
state: { key: 'B', routeName: 'Settings', params: { name: null } },
dispatch: mockedDispatch,
addListener: dummyEventSubscriber,
}).getParam('name')
).toEqual(null);
});
});
10 changes: 10 additions & 0 deletions src/addNavigationHelpers.js
Expand Up @@ -61,6 +61,16 @@ export default function(navigation) {
return navigation.dispatch(NavigationActions.setParams({ params, key }));
},

getParam: (paramName, defaultValue) => {
const params = navigation.state.params;

if (params && paramName in params) {
return params[paramName];
}

return defaultValue;
},

push: (routeName, params, action) =>
navigation.dispatch(
NavigationActions.push({ routeName, params, action })
Expand Down
Expand Up @@ -95,6 +95,7 @@ exports[`StackNavigator applies correct values when headerRight is present 1`] =
Object {
"addListener": [Function],
"dispatch": [Function],
"getParam": [Function],
"goBack": [Function],
"navigate": [Function],
"pop": [Function],
Expand Down Expand Up @@ -334,6 +335,7 @@ exports[`StackNavigator renders successfully 1`] = `
Object {
"addListener": [Function],
"dispatch": [Function],
"getParam": [Function],
"goBack": [Function],
"navigate": [Function],
"pop": [Function],
Expand Down
1 change: 1 addition & 0 deletions src/views/__tests__/__snapshots__/TabView-test.js.snap
Expand Up @@ -237,6 +237,7 @@ exports[`TabBarBottom renders successfully 1`] = `
Object {
"addListener": [Function],
"dispatch": undefined,
"getParam": [Function],
"goBack": [Function],
"navigate": [Function],
"pop": [Function],
Expand Down

0 comments on commit 50dcb37

Please sign in to comment.