users.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import moment from 'moment';
  2. import assert from 'assert';
  3. import reducer, { updateAvatar, dehydrate, dehydrateStatus } from 'misago/reducers/users';
  4. describe("Users Reducer", function() {
  5. it("dehydrates result", function() {
  6. let timestamp = moment().format();
  7. let state = reducer([], dehydrate([
  8. {
  9. something: 'ok',
  10. status: null
  11. },
  12. {
  13. something: 'okie',
  14. status: {
  15. last_click: timestamp,
  16. banned_until: timestamp
  17. }
  18. },
  19. ]));
  20. assert.equal(state[0].status, null, "reducer left empty status unchanged");
  21. assert.equal(state[0].something, 'ok', "other keys were unconverted");
  22. assert.equal(state[1].status.last_click.format(), timestamp,
  23. "reducer deserialized user's status");
  24. assert.equal(state[1].something, 'okie', "other keys were unconverted");
  25. });
  26. it("updates avatar", function() {
  27. let state = [
  28. {
  29. id: 123,
  30. status: null,
  31. avatar_hash: 'aabbccdd'
  32. }
  33. ];
  34. assert.deepEqual(reducer(state, updateAvatar({
  35. id: 123
  36. }, '11223344')), [
  37. {
  38. id: 123,
  39. status: null,
  40. avatar_hash: '11223344'
  41. }
  42. ], "reducer updates user avatar");
  43. assert.deepEqual(reducer(state, updateAvatar({
  44. id: 321
  45. }, '11223344')), [
  46. {
  47. id: 123,
  48. status: null,
  49. avatar_hash: 'aabbccdd'
  50. }
  51. ], "reducer validates user id");
  52. });
  53. });
  54. describe("Dehydrate User Status", function() {
  55. it("dehydrates status", function() {
  56. let timestamp = moment().format();
  57. let status = dehydrateStatus({
  58. some_key: true,
  59. last_click: timestamp,
  60. banned_until: null
  61. });
  62. assert.equal(status.some_key, true, "non-special key was preserved");
  63. assert.equal(status.last_click.format(), timestamp,
  64. "last click key was hydrated");
  65. assert.equal(status.banned_until, null, "ban date was hydrated");
  66. assert.equal(dehydrateStatus(null), null, "null state was handled");
  67. });
  68. });