1
0

UiHelper.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. 'use strict';
  2. const common = require('../common');
  3. const fc = require('fast-check');
  4. describe('UiHelper', function () {
  5. describe('historyChange', function () {
  6. this.timeout(30000);
  7. beforeEach(function () {
  8. PrivateBin.Helper.reset();
  9. cleanup();
  10. });
  11. /** @param {object?} state */
  12. function dispatchPopState(state = null) {
  13. let eventError = null;
  14. const captureError = event => {
  15. eventError = event.error;
  16. event.preventDefault();
  17. };
  18. window.addEventListener('error', captureError);
  19. PrivateBin.UiHelper.init();
  20. window.dispatchEvent(new window.PopStateEvent('popstate', {state: state}));
  21. window.removeEventListener('error', captureError);
  22. assert.strictEqual(eventError, null);
  23. }
  24. it('redirects to home, when the state is null', () => {
  25. fc.assert(fc.property(
  26. common.fcUrl(false, false),
  27. function (url) {
  28. const expected = common.urlToString(url),
  29. clean = globalThis.cleanup('', {url: expected});
  30. dispatchPopState();
  31. PrivateBin.Helper.reset();
  32. var result = window.location.href;
  33. clean();
  34. return expected === result;
  35. }
  36. ));
  37. });
  38. it('does not redirect to home, when a new document is created', () => {
  39. fc.assert(fc.property(
  40. common.fcUrl(false),
  41. fc.array(common.fcBase64String(), {minLength: 1}),
  42. function (url, fragment) {
  43. url.fragment = fragment.join('');
  44. const expected = common.urlToString(url),
  45. clean = globalThis.cleanup('', {url: expected});
  46. dispatchPopState([
  47. {type: 'newpaste'}, '', expected
  48. ]);
  49. PrivateBin.Helper.reset();
  50. var result = window.location.href;
  51. clean();
  52. return expected === result;
  53. }
  54. ));
  55. });
  56. });
  57. describe('reloadHome', function () {
  58. // TODO triggers error messages in jsDOM since version 11
  59. /*
  60. this.timeout(30000);
  61. before(function () {
  62. PrivateBin.Helper.reset();
  63. });
  64. it('redirects to home', () => {
  65. fc.assert(fc.property(
  66. common.fcUrl(),
  67. function (url) {
  68. const clean = globalThis.cleanup('', {url: common.urlToString(url)});
  69. delete(url.query);
  70. delete(url.fragment);
  71. const expected = common.urlToString(url);
  72. PrivateBin.UiHelper.reloadHome();
  73. PrivateBin.Helper.reset();
  74. var result = window.location.href;
  75. clean();
  76. return expected === result;
  77. }
  78. ));
  79. });
  80. */
  81. });
  82. });