username-history.js 3.1 KB

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