snackbar.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import assert from 'assert';
  2. import { StoreWrapper } from 'misago/services/store';
  3. import reducer, { initialState } 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("sets message in store", function() {
  15. snackbar.alert("Lorem ipsum dolor met sit amet.", 'warning');
  16. let state = store.getState().snackbar;
  17. assert.deepEqual(state, {
  18. type: 'warning',
  19. message: "Lorem ipsum dolor met sit amet.",
  20. isVisible: true
  21. }, "service set message in store");
  22. });
  23. it("provides shortcut for setting info message", function() {
  24. snackbar.info("Lorem ipsum dolor met sit amet.");
  25. let state = store.getState().snackbar;
  26. assert.deepEqual(state, {
  27. type: 'info',
  28. message: "Lorem ipsum dolor met sit amet.",
  29. isVisible: true
  30. }, "service set info message in store");
  31. });
  32. it("provides shortcut for setting warning message", function() {
  33. snackbar.warning("Lorem ipsum dolor met sit amet.");
  34. let state = store.getState().snackbar;
  35. assert.deepEqual(state, {
  36. type: 'warning',
  37. message: "Lorem ipsum dolor met sit amet.",
  38. isVisible: true
  39. }, "service set warning message in store");
  40. });
  41. it("provides shortcut for setting error message", function() {
  42. snackbar.error("Lorem ipsum dolor met sit amet.");
  43. let state = store.getState().snackbar;
  44. assert.deepEqual(state, {
  45. type: 'error',
  46. message: "Lorem ipsum dolor met sit amet.",
  47. isVisible: true
  48. }, "service set error message in store");
  49. });
  50. it("provides shortcut for setting success message", function() {
  51. snackbar.success("Lorem ipsum dolor met sit amet.");
  52. let state = store.getState().snackbar;
  53. assert.deepEqual(state, {
  54. type: 'success',
  55. message: "Lorem ipsum dolor met sit amet.",
  56. isVisible: true
  57. }, "service set success message in store");
  58. });
  59. it("provides shortcut for backend disconnection", function() {
  60. snackbar.apiError({
  61. status: 0,
  62. detail: "You got disconnected!"
  63. });
  64. assert.deepEqual(store.getState().snackbar, {
  65. type: 'error',
  66. message: "You got disconnected!",
  67. isVisible: true
  68. }, "service set disconnected message in store");
  69. });
  70. it("provides shortcut for backend permission denied", function() {
  71. snackbar.apiError({
  72. status: 403,
  73. detail: "Permission denied"
  74. });
  75. assert.deepEqual(store.getState().snackbar, {
  76. type: 'error',
  77. message: "You don't have permission to perform this action.",
  78. isVisible: true
  79. }, "service set default 403 message in store");
  80. });
  81. it("provides shortcut for custom backend permission denied", function() {
  82. snackbar.apiError({
  83. status: 403,
  84. detail: "REJECTION!"
  85. });
  86. assert.deepEqual(store.getState().snackbar, {
  87. type: 'error',
  88. message: "REJECTION!",
  89. isVisible: true
  90. }, "service set custom 403 message in store");
  91. });
  92. it("provides shortcut for backend rejection", function() {
  93. snackbar.apiError({
  94. status: 400,
  95. detail: "NOPE!"
  96. });
  97. assert.deepEqual(store.getState().snackbar, {
  98. type: 'error',
  99. message: "NOPE!",
  100. isVisible: true
  101. }, "service set custom 400 message in store");
  102. });
  103. it("provides shortcut for backend 404 error", function() {
  104. snackbar.apiError({
  105. status: 404,
  106. detail: "NOT FOUND"
  107. });
  108. assert.deepEqual(store.getState().snackbar, {
  109. type: 'error',
  110. message: "NOT FOUND",
  111. isVisible: true
  112. }, "service set not found message in store");
  113. });
  114. });