username-history.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import moment from 'moment';
  2. import assert from 'assert';
  3. import { updateAvatar, updateUsername } from 'misago/reducers/users';
  4. import reducer, { addNameChange, hydrate, append } from 'misago/reducers/username-history';
  5. describe("Username History Reducer", function() {
  6. it("hydrates result", function() {
  7. let timestamp = moment().format();
  8. let state = reducer([], hydrate([
  9. {
  10. id: 1,
  11. something: 'ok',
  12. changed_on: timestamp
  13. }
  14. ]));
  15. assert.equal(state[0].changed_on.format(), timestamp,
  16. "reducer converted changed_on timestamp to moment.js object");
  17. assert.equal(state[0].something, 'ok', "other keys were unconverted");
  18. });
  19. it("appends result", function() {
  20. let timestamp = moment().format();
  21. let state = reducer([
  22. {
  23. id: 1,
  24. order: 'first',
  25. changed_on: timestamp
  26. }
  27. ], append([
  28. {
  29. id: 2,
  30. order: 'second',
  31. changed_on: timestamp
  32. }
  33. ]));
  34. assert.equal(state[0].order, 'first', "original item was kept");
  35. assert.equal(state[1].order, 'second', "new item was appended");
  36. });
  37. it("prepends namechange", function() {
  38. let user = {
  39. username: 'Bob'
  40. };
  41. let changedBy = {
  42. id: 123,
  43. username: 'Weebl',
  44. };
  45. let state = reducer([{
  46. something: 'ok'
  47. }], addNameChange({username: 'Nopp'}, user, changedBy));
  48. assert.equal(state[0].new_username, 'Nopp',
  49. "reducer inserted new username to store");
  50. assert.equal(state[0].old_username, 'Bob',
  51. "reducer inserted old username to store");
  52. assert.equal(state[0].changed_by, changedBy,
  53. "reducer preserved change author");
  54. assert.equal(state[0].changed_by_username, 'Weebl',
  55. "reducer preserved username from change author");
  56. assert.equal(state[1].something, 'ok', "old entries were pushed down");
  57. });
  58. it("updates avatar", function() {
  59. let state = [
  60. {
  61. changed_by: {
  62. id: 123,
  63. avatar_hash: 'aabbccdd'
  64. }
  65. }
  66. ];
  67. assert.deepEqual(reducer(state, updateAvatar({
  68. id: 123
  69. }, '11223344')), [
  70. {
  71. changed_by: {
  72. id: 123,
  73. avatar_hash: '11223344'
  74. }
  75. }
  76. ], "reducer updates change author avatar");
  77. assert.deepEqual(reducer(state, updateAvatar({
  78. id: 321
  79. }, '11223344')), [
  80. {
  81. changed_by: {
  82. id: 123,
  83. avatar_hash: 'aabbccdd'
  84. }
  85. }
  86. ], "reducer validates change author id");
  87. });
  88. it("updates username", function() {
  89. let state = [
  90. {
  91. changed_by: {
  92. id: 123,
  93. username: 'Bob',
  94. slug: 'bob'
  95. }
  96. }
  97. ];
  98. assert.deepEqual(reducer(state, updateUsername({
  99. id: 123
  100. }, 'Weebl', 'weebl')), [
  101. {
  102. changed_by: {
  103. id: 123,
  104. username: 'Weebl',
  105. slug: 'weebl'
  106. }
  107. }
  108. ], "reducer updates change author username");
  109. assert.deepEqual(reducer(state, updateUsername({
  110. id: 321
  111. }, 'Weebl', 'weebl')), [
  112. {
  113. changed_by: {
  114. id: 123,
  115. username: 'Bob',
  116. slug: 'bob'
  117. }
  118. }
  119. ], "reducer validates change author id");
  120. });
  121. });