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
JavaScript
'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
}
});
});