UNPKG

react-url-query

Version:

A library for managing state through query parameters in the URL in React. Works well with or without Redux and React Router.

234 lines (215 loc) 6.25 kB
'use strict'; var _urlAction = require('../urlAction'); var _urlAction2 = _interopRequireDefault(_urlAction); var _UrlQueryParamTypes = require('../../UrlQueryParamTypes'); var _UrlQueryParamTypes2 = _interopRequireDefault(_UrlQueryParamTypes); var _UrlUpdateTypes = require('../../UrlUpdateTypes'); var _UrlUpdateTypes2 = _interopRequireDefault(_UrlUpdateTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } it('urlAction creates the proper action creator -> action', function () { var creator = (0, _urlAction2.default)('TEST_ACTION', function (payload) { return payload.toUpperCase(); }, function (meta) { return meta.toLowerCase(); }); var action = creator('teStStrING'); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, value: 'teststring' }, payload: 'TESTSTRING' }); }); it('urlAction payload and meta defaults work', function () { var creator = (0, _urlAction2.default)('TEST_ACTION'); var action = creator({ foo: '123' }); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true }, payload: { foo: '123' } }); }); it('urlAction handles nully meta', function () { var creator = (0, _urlAction2.default)('TEST_ACTION', undefined, function () { return null; }); var action = creator({ foo: '123' }); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true }, payload: { foo: '123' } }); }); it('urlUpdateAction creates the proper action creator -> action', function () { var creator = (0, _urlAction.urlUpdateAction)('TEST_ACTION', function (query) { return { foo: String(query.foo), bar: '1' }; }, _UrlUpdateTypes2.default.push); var action = creator({ foo: 137 }); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, updateType: _UrlUpdateTypes2.default.push }, payload: { encodedQuery: { foo: '137', bar: '1' }, decodedQuery: { foo: 137 } } }); }); it('urlUpdateAction default encodeQuery and updateType work', function () { var creator = (0, _urlAction.urlUpdateAction)('TEST_ACTION'); var action = creator({ foo: '137' }); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, updateType: _UrlUpdateTypes2.default.replace }, payload: { encodedQuery: { foo: '137' }, decodedQuery: { foo: '137' } } }); }); it('urlReplaceAction creates the proper action creator -> action', function () { var creator = (0, _urlAction.urlReplaceAction)('TEST_ACTION', function (query) { return { foo: String(query.foo), bar: '1' }; }); var action = creator({ foo: 137 }); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, updateType: _UrlUpdateTypes2.default.replace }, payload: { encodedQuery: { foo: '137', bar: '1' }, decodedQuery: { foo: 137 } } }); }); it('urlPushAction creates the proper action creator -> action', function () { var creator = (0, _urlAction.urlPushAction)('TEST_ACTION', function (query) { return { foo: String(query.foo), bar: '1' }; }); var action = creator({ foo: 137 }); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, updateType: _UrlUpdateTypes2.default.push }, payload: { encodedQuery: { foo: '137', bar: '1' }, decodedQuery: { foo: 137 } } }); }); it('urlMultiReplaceInAction creates the proper action creator -> action', function () { var creator = (0, _urlAction.urlMultiReplaceInAction)('TEST_ACTION', function (query) { return { foo: String(query.foo), bar: '1' }; }); var action = creator({ foo: 137 }); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, updateType: _UrlUpdateTypes2.default.multiReplaceIn }, payload: { encodedQuery: { foo: '137', bar: '1' }, decodedQuery: { foo: 137 } } }); }); it('urlMultiPushInAction creates the proper action creator -> action', function () { var creator = (0, _urlAction.urlMultiPushInAction)('TEST_ACTION', function (query) { return { foo: String(query.foo), bar: '1' }; }); var action = creator({ foo: 137 }); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, updateType: _UrlUpdateTypes2.default.multiPushIn }, payload: { encodedQuery: { foo: '137', bar: '1' }, decodedQuery: { foo: 137 } } }); }); it('urlUpdateInAction creates the proper action creator -> action', function () { var creator = (0, _urlAction.urlUpdateInAction)('TEST_ACTION', 'foo', _UrlQueryParamTypes2.default.number, _UrlUpdateTypes2.default.push); var action = creator(99); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, updateType: _UrlUpdateTypes2.default.push }, payload: { queryParam: 'foo', encodedValue: '99', decodedValue: 99, type: _UrlQueryParamTypes2.default.number } }); }); it('urlReplaceInAction creates the proper action creator -> action', function () { var creator = (0, _urlAction.urlReplaceInAction)('TEST_ACTION', 'foo', _UrlQueryParamTypes2.default.array); var action = creator(['bar', 'baz']); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, updateType: _UrlUpdateTypes2.default.replaceIn }, payload: { queryParam: 'foo', encodedValue: 'bar_baz', decodedValue: ['bar', 'baz'], type: _UrlQueryParamTypes2.default.array } }); }); it('urlPushInAction creates the proper action creator -> action', function () { var creator = (0, _urlAction.urlPushInAction)('TEST_ACTION', 'foo', _UrlQueryParamTypes2.default.number); var action = creator(123); expect(action).toEqual({ type: 'TEST_ACTION', meta: { urlQuery: true, updateType: _UrlUpdateTypes2.default.pushIn }, payload: { queryParam: 'foo', encodedValue: '123', decodedValue: 123, type: _UrlQueryParamTypes2.default.number } }); });