snackbar.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import assert from 'assert';
  2. import { StoreWrapper } from 'misago/services/store';
  3. import reducer, { initialState, showSnackbar, hideSnackbar } from 'misago/reducers/snackbar';
  4. import { Snackbar } from 'misago/services/snackbar';
  5. var store, snackbar = null;
  6. describe("Snackbar", function() {
  7. beforeEach(function() {
  8. store = new StoreWrapper();
  9. store.addReducer('snackbar', reducer, initialState);
  10. store.init();
  11. snackbar = new Snackbar();
  12. snackbar.init(store);
  13. });
  14. it("showSnackbar action sets new message", function() {
  15. store.dispatch(showSnackbar("Lorem ipsum dolor met.", 'success'));
  16. let state = store.getState().snackbar;
  17. assert.deepEqual(state, {
  18. type: 'success',
  19. message: "Lorem ipsum dolor met.",
  20. isVisible: true
  21. }, "message was set on state");
  22. });
  23. it("hideSnackbar action hides message", function() {
  24. store.dispatch(showSnackbar("Lorem ipsum dolor met.", 'success'));
  25. store.dispatch(hideSnackbar());
  26. let state = store.getState().snackbar;
  27. assert.ok(!state.isVisible, "visible flag was removed");
  28. });
  29. it("sets message in store", function() {
  30. snackbar.alert("Lorem ipsum dolor met sit amet.", 'warning');
  31. let state = store.getState().snackbar;
  32. assert.deepEqual(state, {
  33. type: 'warning',
  34. message: "Lorem ipsum dolor met sit amet.",
  35. isVisible: true
  36. }, "service set message in store");
  37. });
  38. it("provides shortcut for setting info message", function() {
  39. snackbar.info("Lorem ipsum dolor met sit amet.");
  40. let state = store.getState().snackbar;
  41. assert.deepEqual(state, {
  42. type: 'info',
  43. message: "Lorem ipsum dolor met sit amet.",
  44. isVisible: true
  45. }, "service set info message in store");
  46. });
  47. it("provides shortcut for setting warning message", function() {
  48. snackbar.warning("Lorem ipsum dolor met sit amet.");
  49. let state = store.getState().snackbar;
  50. assert.deepEqual(state, {
  51. type: 'warning',
  52. message: "Lorem ipsum dolor met sit amet.",
  53. isVisible: true
  54. }, "service set warning message in store");
  55. });
  56. it("provides shortcut for setting error message", function() {
  57. snackbar.error("Lorem ipsum dolor met sit amet.");
  58. let state = store.getState().snackbar;
  59. assert.deepEqual(state, {
  60. type: 'error',
  61. message: "Lorem ipsum dolor met sit amet.",
  62. isVisible: true
  63. }, "service set error message in store");
  64. });
  65. it("provides shortcut for setting success message", function() {
  66. snackbar.success("Lorem ipsum dolor met sit amet.");
  67. let state = store.getState().snackbar;
  68. assert.deepEqual(state, {
  69. type: 'success',
  70. message: "Lorem ipsum dolor met sit amet.",
  71. isVisible: true
  72. }, "service set success message in store");
  73. });
  74. });