1 | ;
|
2 |
|
3 | var _ = _interopRequireDefault(require("./"));
|
4 |
|
5 | var _redux = require("redux");
|
6 |
|
7 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
8 |
|
9 | function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
10 |
|
11 | function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
12 |
|
13 | function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
14 |
|
15 | function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
16 |
|
17 | function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
18 |
|
19 | describe("API: reduxLeaves(initialState)", function () {
|
20 | describe("GIVEN nested initialState with non-null values for shape { counter, foo, nested: { deep: {}, state: { manageable } } }", function () {
|
21 | var initialState = {
|
22 | counter: 1,
|
23 | foo: ["bar"],
|
24 | nested: {
|
25 | deep: {},
|
26 | state: {
|
27 | manageable: "maybe...?"
|
28 | }
|
29 | }
|
30 | };
|
31 | var reducersDict = {
|
32 | capitalise: function capitalise(leafState, action) {
|
33 | return leafState.concat(action.payload);
|
34 | },
|
35 | exponentiate: {
|
36 | reducer: function reducer(leafState, action) {
|
37 | return Math.pow(leafState, action.payload);
|
38 | },
|
39 | argsToPayload: function argsToPayload(index) {
|
40 | return index;
|
41 | }
|
42 | }
|
43 | };
|
44 | describe("WHEN [reducer, actions] = reduxLeaves(initialState)", function () {
|
45 | var _reduxLeaves = (0, _["default"])(initialState, reducersDict),
|
46 | _reduxLeaves2 = _slicedToArray(_reduxLeaves, 2),
|
47 | reducer = _reduxLeaves2[0],
|
48 | actions = _reduxLeaves2[1];
|
49 |
|
50 | test("THEN reducer is a function", function () {
|
51 | expect(_typeof(reducer)).toBe("function");
|
52 | });
|
53 | test("AND actions.counter is an object with a number create API", function () {
|
54 | expect(_typeof(actions.counter)).toBe("object");
|
55 | expect(actions.counter.create).toBeDefined();
|
56 | expect(_typeof(actions.counter.create.increment)).toBe('function');
|
57 | expect(_typeof(actions.counter.create.increment(4))).toBeDefined();
|
58 | expect(_typeof(actions.counter.create.exponentiate)).toBe('function');
|
59 | expect(_typeof(actions.counter.create.exponentiate(5))).toBeDefined();
|
60 | });
|
61 | test("AND actions.foo is an object with an array create API", function () {
|
62 | expect(_typeof(actions.foo)).toBe("object");
|
63 | expect(actions.foo.create).toBeDefined();
|
64 | expect(_typeof(actions.foo.create.push)).toBe('function');
|
65 | });
|
66 | test("AND actions.nested is an object with an object create API", function () {
|
67 | expect(_typeof(actions.nested)).toBe("object");
|
68 | expect(actions.nested.create).toBeDefined();
|
69 | expect(_typeof(actions.nested.create.set)).toBe('function');
|
70 | });
|
71 | test("AND actions.nested.deep is an object with an object create API", function () {
|
72 | expect(_typeof(actions.nested.deep)).toBe("object");
|
73 | expect(actions.nested.deep.create).toBeDefined();
|
74 | expect(_typeof(actions.nested.deep.create.set)).toBe('function');
|
75 | });
|
76 | test("AND actions.nested.state.manageable is an object with a string create API", function () {
|
77 | expect(_typeof(actions.nested.state)).toBe("object");
|
78 | expect(actions.nested.state.manageable.create).toBeDefined();
|
79 | expect(_typeof(actions.nested.state.manageable.create.concat)).toBe('function');
|
80 | expect(_typeof(actions.nested.state.manageable.create.capitalise)).toBe('function');
|
81 | });
|
82 | describe("AND store = createStore(reducer)", function () {
|
83 | var store;
|
84 | beforeEach(function () {
|
85 | store = (0, _redux.createStore)(reducer);
|
86 | });
|
87 | test("THEN store is initialised with state = initialState", function () {
|
88 | expect(store.getState()).toEqual(initialState);
|
89 | });
|
90 | });
|
91 | });
|
92 | });
|
93 | });
|
94 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWR1eExlYXZlcy50ZXN0LnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaW5pdGlhbFN0YXRlIiwiY291bnRlciIsImZvbyIsIm5lc3RlZCIsImRlZXAiLCJzdGF0ZSIsIm1hbmFnZWFibGUiLCJyZWR1Y2Vyc0RpY3QiLCJjYXBpdGFsaXNlIiwibGVhZlN0YXRlIiwiYWN0aW9uIiwiY29uY2F0IiwicGF5bG9hZCIsImV4cG9uZW50aWF0ZSIsInJlZHVjZXIiLCJNYXRoIiwicG93IiwiYXJnc1RvUGF5bG9hZCIsImluZGV4IiwiYWN0aW9ucyIsInRlc3QiLCJleHBlY3QiLCJ0b0JlIiwiY3JlYXRlIiwidG9CZURlZmluZWQiLCJpbmNyZW1lbnQiLCJwdXNoIiwic2V0Iiwic3RvcmUiLCJiZWZvcmVFYWNoIiwiZ2V0U3RhdGUiLCJ0b0VxdWFsIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUVBQSxRQUFRLENBQUMsZ0NBQUQsRUFBbUMsWUFBTTtBQUUvQ0EsRUFBQUEsUUFBUSxDQUFDLHdIQUFELEVBQTJILFlBQU07QUFZdkksUUFBTUMsWUFBbUIsR0FBRztBQUMxQkMsTUFBQUEsT0FBTyxFQUFFLENBRGlCO0FBRTFCQyxNQUFBQSxHQUFHLEVBQUUsQ0FBQyxLQUFELENBRnFCO0FBRzFCQyxNQUFBQSxNQUFNLEVBQUU7QUFDTkMsUUFBQUEsSUFBSSxFQUFFLEVBREE7QUFFTkMsUUFBQUEsS0FBSyxFQUFFO0FBQ0xDLFVBQUFBLFVBQVUsRUFBRTtBQURQO0FBRkQ7QUFIa0IsS0FBNUI7QUFnQkEsUUFBTUMsWUFBb0QsR0FBRztBQUMzREMsTUFBQUEsVUFBVSxFQUFFLG9CQUFDQyxTQUFELEVBQVlDLE1BQVo7QUFBQSxlQUF1QkQsU0FBUyxDQUFDRSxNQUFWLENBQWlCRCxNQUFNLENBQUNFLE9BQXhCLENBQXZCO0FBQUEsT0FEK0M7QUFFM0RDLE1BQUFBLFlBQVksRUFBRTtBQUNaQyxRQUFBQSxPQUFPLEVBQUUsaUJB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UjtBQXFERCxHQXpGTyxDQUFSO0FBMEZELENBNUZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVkdXhMZWF2ZXMsIHsgTGVhZlJlZHVjZXIgfSBmcm9tICcuLyc7XG5pbXBvcnQgeyBjcmVhdGVTdG9yZSwgU3RvcmUgfSBmcm9tIFwicmVkdXhcIjtcblxuZGVzY3JpYmUoXCJBUEk6IHJlZHV4TGVhdmVzKGluaXRpYWxTdGF0ZSlcIiwgKCkgPT4ge1xuXG4gIGRlc2NyaWJlKFwiR0lWRU4gbmVzdGVkIGluaXRpYWxTdGF0ZSB3aXRoIG5vbi1udWxsIHZhbHVlcyBmb3Igc2hhcGUgeyBjb3VudGVyLCBmb28sIG5lc3RlZDogeyBkZWVwOiB7fSwgc3RhdGU6IHsgbWFuYWdlYWJsZSB9IH0gfVwiLCAoKSA9PiB7XG4gICAgaW50ZXJmYWNlIFN0YXRlIHtcbiAgICAgIGNvdW50ZXI6IG51bWJlclxuICAgICAgZm9vOiBhbnlbXVxuICAgICAgbmVzdGVkOiB7XG4gICAgICAgIGRlZXA6IHt9XG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgbWFuYWdlYWJsZTogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IFN0YXRlID0ge1xuICAgICAgY291bnRlcjogMSxcbiAgICAgIGZvbzogW1wiYmFyXCJdLFxuICAgICAgbmVzdGVkOiB7XG4gICAgICAgIGRlZXA6IHt9LFxuICAgICAgICBzdGF0ZToge1xuICAgICAgICAgIG1hbmFnZWFibGU6IFwibWF5YmUuLi4/XCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHR5cGUgU2NoZW1hID0ge1xuICAgICAgY2FwaXRhbGlzZTogc3RyaW5nLFxuICAgICAgZXhwb25lbnRpYXRlOiBMZWFmUmVkdWNlci5TY2hlbWE8bnVtYmVyLCBbbnVtYmVyXSwgbnVtYmVyPlxuICAgIH1cblxuICAgIGNvbnN0IHJlZHVjZXJzRGljdDogTGVhZlJlZHVjZXIuRGVmaW5pdGlvbnM8U2NoZW1hLCBTdGF0ZT4gPSB7XG4gICAgICBjYXBpdGFsaXNlOiAobGVhZlN0YXRlLCBhY3Rpb24pID0+IGxlYWZTdGF0ZS5jb25jYXQoYWN0aW9uLnBheWxvYWQpLFxuICAgICAgZXhwb25lbnRpYXRlOiB7XG4gICAgICAgIHJlZHVjZXI6IChsZWFmU3RhdGUsIGFjdGlvbikgPT4gTWF0aC5wb3cobGVhZlN0YXRlLCBhY3Rpb24ucGF5bG9hZCksXG4gICAgICAgIGFyZ3NUb1BheWxvYWQ6IChpbmRleDogbnVtYmVyKSA9PiBpbmRleFxuICAgICAgfVxuICAgIH1cblxuICAgIGRlc2NyaWJlKFwiV0hFTiBbcmVkdWNlciwgYWN0aW9uc10gPSByZWR1eExlYXZlcyhpbml0aWFsU3RhdGUpXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IFtyZWR1Y2VyLCBhY3Rpb25zXSA9IHJlZHV4TGVhdmVzKGluaXRpYWxTdGF0ZSwgcmVkdWNlcnNEaWN0KVxuXG4gICAgICB0ZXN0KFwiVEhFTiByZWR1Y2VyIGlzIGEgZnVuY3Rpb25cIiwgKCkgPT4ge1xuICAgICAgICBleHBlY3QodHlwZW9mIHJlZHVjZXIpLnRvQmUoXCJmdW5jdGlvblwiKVxuICAgICAgfSlcblxuICAgICAgdGVzdChcIkFORCBhY3Rpb25zLmNvdW50ZXIgaXMgYW4gb2JqZWN0IHdpdGggYSBudW1iZXIgY3JlYXRlIEFQSVwiLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdCh0eXBlb2YgYWN0aW9ucy5jb3VudGVyKS50b0JlKFwib2JqZWN0XCIpXG4gICAgICAgIGV4cGVjdChhY3Rpb25zLmNvdW50ZXIuY3JlYXRlKS50b0JlRGVmaW5lZCgpXG4gICAgICAgIGV4cGVjdCh0eXBlb2YgYWN0aW9ucy5jb3VudGVyLmNyZWF0ZS5pbmNyZW1lbnQpLnRvQmUoJ2Z1bmN0aW9uJylcbiAgICAgICAgZXhwZWN0KHR5cGVvZiBhY3Rpb25zLmNvdW50ZXIuY3JlYXRlLmluY3JlbWVudCg0KSkudG9CZURlZmluZWQoKVxuICAgICAgICBleHBlY3QodHlwZW9mIGFjdGlvbnMuY291bnRlci5jcmVhdGUuZXhwb25lbnRpYXRlKS50b0JlKCdmdW5jdGlvbicpXG4gICAgICAgIGV4cGVjdCh0eXBlb2YgYWN0aW9ucy5jb3VudGVyLmNyZWF0ZS5leHBvbmVudGlhdGUoNSkpLnRvQmVEZWZpbmVkKClcbiAgICAgIH0pXG5cbiAgICAgIHRlc3QoXCJBTkQgYWN0aW9ucy5mb28gaXMgYW4gb2JqZWN0IHdpdGggYW4gYXJyYXkgY3JlYXRlIEFQSVwiLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdCh0eXBlb2YgYWN0aW9ucy5mb28pLnRvQmUoXCJvYmplY3RcIilcbiAgICAgICAgZXhwZWN0KGFjdGlvbnMuZm9vLmNyZWF0ZSkudG9CZURlZmluZWQoKVxuICAgICAgICBleHBlY3QodHlwZW9mIGFjdGlvbnMuZm9vLmNyZWF0ZS5wdXNoKS50b0JlKCdmdW5jdGlvbicpXG4gICAgICB9KVxuXG4gICAgICB0ZXN0KFwiQU5EIGFjdGlvbnMubmVzdGVkIGlzIGFuIG9iamVjdCB3aXRoIGFuIG9iamVjdCBjcmVhdGUgQVBJXCIsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KHR5cGVvZiBhY3Rpb25zLm5lc3RlZCkudG9CZShcIm9iamVjdFwiKVxuICAgICAgICBleHBlY3QoYWN0aW9ucy5uZXN0ZWQuY3JlYXRlKS50b0JlRGVmaW5lZCgpXG4gICAgICAgIGV4cGVjdCh0eXBlb2YgYWN0aW9ucy5uZXN0ZWQuY3JlYXRlLnNldCkudG9CZSgnZnVuY3Rpb24nKVxuICAgICAgfSlcblxuICAgICAgdGVzdChcIkFORCBhY3Rpb25zLm5lc3RlZC5kZWVwIGlzIGFuIG9iamVjdCB3aXRoIGFuIG9iamVjdCBjcmVhdGUgQVBJXCIsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KHR5cGVvZiBhY3Rpb25zLm5lc3RlZC5kZWVwKS50b0JlKFwib2JqZWN0XCIpXG4gICAgICAgIGV4cGVjdChhY3Rpb25zLm5lc3RlZC5kZWVwLmNyZWF0ZSkudG9CZURlZmluZWQoKVxuICAgICAgICBleHBlY3QodHlwZW9mIGFjdGlvbnMubmVzdGVkLmRlZXAuY3JlYXRlLnNldCkudG9CZSgnZnVuY3Rpb24nKVxuICAgICAgfSlcblxuXG4gICAgICB0ZXN0KFwiQU5EIGFjdGlvbnMubmVzdGVkLnN0YXRlLm1hbmFnZWFibGUgaXMgYW4gb2JqZWN0IHdpdGggYSBzdHJpbmcgY3JlYXRlIEFQSVwiLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdCh0eXBlb2YgYWN0aW9ucy5uZXN0ZWQuc3RhdGUpLnRvQmUoXCJvYmplY3RcIilcbiAgICAgICAgZXhwZWN0KGFjdGlvbnMubmVzdGVkLnN0YXRlLm1hbmFnZWFibGUuY3JlYXRlKS50b0JlRGVmaW5lZCgpXG4gICAgICAgIGV4cGVjdCh0eXBlb2YgYWN0aW9ucy5uZXN0ZWQuc3RhdGUubWFuYWdlYWJsZS5jcmVhdGUuY29uY2F0KS50b0JlKCdmdW5jdGlvbicpXG4gICAgICAgIGV4cGVjdCh0eXBlb2YgYWN0aW9ucy5uZXN0ZWQuc3RhdGUubWFuYWdlYWJsZS5jcmVhdGUuY2FwaXRhbGlzZSkudG9CZSgnZnVuY3Rpb24nKVxuICAgICAgfSlcblxuICAgICAgZGVzY3JpYmUoXCJBTkQgc3RvcmUgPSBjcmVhdGVTdG9yZShyZWR1Y2VyKVwiLCAoKSA9PiB7XG4gICAgICAgIGxldCBzdG9yZTogU3RvcmVcbiAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgICAgc3RvcmUgPSBjcmVhdGVTdG9yZShyZWR1Y2VyKVxuICAgICAgICB9KVxuXG4gICAgICAgIHRlc3QoXCJUSEVOIHN0b3JlIGlzIGluaXRpYWxpc2VkIHdpdGggc3RhdGUgPSBpbml0aWFsU3RhdGVcIiwgKCkgPT4ge1xuICAgICAgICAgIGV4cGVjdChzdG9yZS5nZXRTdGF0ZSgpKS50b0VxdWFsKGluaXRpYWxTdGF0ZSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfSlcbn0pIl19 |
\ | No newline at end of file |