username-history.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import moment from 'moment';
  2. import assert from 'assert';
  3. import { updateAvatar, updateUsername } from 'misago/reducers/users';
  4. import reducer, { addNameChange, dehydrate } from 'misago/reducers/username-history';
  5. describe("Username History Reducer", function() {
  6. it("dehydrates result", function() {
  7. let timestamp = moment().format();
  8. let state = reducer([], dehydrate([
  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("prepends namechange", function() {
  19. let user = {
  20. username: 'Bob'
  21. };
  22. let changedBy = {
  23. id: 123,
  24. username: 'Weebl',
  25. };
  26. let state = reducer([{
  27. something: 'ok'
  28. }], addNameChange({username: 'Nopp'}, user, changedBy));
  29. assert.equal(state[0].new_username, 'Nopp',
  30. "reducer inserted new username to store");
  31. assert.equal(state[0].old_username, 'Bob',
  32. "reducer inserted old username to store");
  33. assert.equal(state[0].changed_by, changedBy,
  34. "reducer preserved change author");
  35. assert.equal(state[0].changed_by_username, 'Weebl',
  36. "reducer preserved username from change author");
  37. assert.equal(state[1].something, 'ok', "old entries were pushed down");
  38. });
  39. it("updates avatar", function() {
  40. let state = [
  41. {
  42. changed_by: {
  43. id: 123,
  44. avatar_hash: 'aabbccdd'
  45. }
  46. }
  47. ];
  48. assert.deepEqual(reducer(state, updateAvatar({
  49. id: 123
  50. }, '11223344')), [
  51. {
  52. changed_by: {
  53. id: 123,
  54. avatar_hash: '11223344'
  55. }
  56. }
  57. ], "reducer updates change author avatar");
  58. assert.deepEqual(reducer(state, updateAvatar({
  59. id: 321
  60. }, '11223344')), [
  61. {
  62. changed_by: {
  63. id: 123,
  64. avatar_hash: 'aabbccdd'
  65. }
  66. }
  67. ], "reducer validates change author id");
  68. });
  69. it("updates username", function() {
  70. let state = [
  71. {
  72. changed_by: {
  73. id: 123,
  74. username: 'Bob',
  75. slug: 'bob'
  76. }
  77. }
  78. ];
  79. assert.deepEqual(reducer(state, updateUsername({
  80. id: 123
  81. }, 'Weebl', 'weebl')), [
  82. {
  83. changed_by: {
  84. id: 123,
  85. username: 'Weebl',
  86. slug: 'weebl'
  87. }
  88. }
  89. ], "reducer updates change author username");
  90. assert.deepEqual(reducer(state, updateUsername({
  91. id: 321
  92. }, 'Weebl', 'weebl')), [
  93. {
  94. changed_by: {
  95. id: 123,
  96. username: 'Bob',
  97. slug: 'bob'
  98. }
  99. }
  100. ], "reducer validates change author id");
  101. });
  102. });