UiHelper.js 3.1 KB

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