store.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import assert from 'assert';
  2. import { StoreWrapper } from 'misago/services/store';
  3. var store = null;
  4. describe('Store', function() {
  5. it("addReducer registers new reducer", function() {
  6. store = new StoreWrapper();
  7. store.addReducer('test', 'reducer', {'initial': 'state'});
  8. assert.equal(store._reducers.test, 'reducer',
  9. "test reducer was registered");
  10. assert.deepEqual(store._initialState.test, {'initial': 'state'},
  11. "test reducer initial state was registered");
  12. });
  13. it("initializes and returns state", function() {
  14. function testReducer(state={}, action=null) { // jshint ignore:line
  15. if (state.initial == 'state') {
  16. assert.ok("reducer was called on initializaiton");
  17. return {'initial': 'reduced'};
  18. } else {
  19. return state;
  20. }
  21. }
  22. store = new StoreWrapper();
  23. store.addReducer('test', testReducer, {'initial': 'state'});
  24. store.init();
  25. assert.deepEqual(store.getState().test, {'initial': 'reduced'},
  26. "state was changed by test reducer");
  27. });
  28. it("dispatches actions", function() {
  29. function testReducer(state={}, action=null) {
  30. if (action.type == 'test') {
  31. assert.ok("reducer was called on action");
  32. return {'state': action.new_state};
  33. } else {
  34. return state;
  35. }
  36. }
  37. store = new StoreWrapper();
  38. store.addReducer('test', testReducer, {'state': 'initial'});
  39. store.init();
  40. store.dispatch({'type': 'test', 'new_state': 'changed'});
  41. assert.deepEqual(store.getState().test, {'state': 'changed'},
  42. "state was changed by test reducer");
  43. });
  44. });