DiscussionViewer.js 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 'use strict';
  2. var common = require('../common');
  3. describe('DiscussionViewer', function () {
  4. describe('handleNotification, addComment, finishDiscussion, prepareNewDiscussion, getReplyMessage, getReplyNickname, getReplyCommentId & highlightComment', function () {
  5. this.timeout(30000);
  6. before(function () {
  7. cleanup();
  8. });
  9. jsc.property(
  10. 'displays & hides comments as requested',
  11. jsc.array(
  12. jsc.record({
  13. id: jsc.nearray(common.jscBase64String()),
  14. parentid: jsc.nearray(common.jscBase64String()),
  15. data: jsc.string,
  16. meta: jsc.record({
  17. nickname: jsc.string,
  18. postdate: jsc.nat,
  19. vizhash: jsc.string
  20. })
  21. })
  22. ),
  23. function (comments) {
  24. var clean = jsdom(),
  25. results = [];
  26. $('body').html(
  27. '<div id="discussion"><h4>Discussion</h4>' +
  28. '<div id="commentcontainer"></div></div><div id="templates">' +
  29. '<article id="commenttemplate" class="comment">' +
  30. '<div class="commentmeta"><span class="nickname">name</span>' +
  31. '<span class="commentdate">0000-00-00</span></div>' +
  32. '<div class="commentdata">c</div>' +
  33. '<button class="btn btn-default btn-sm">Reply</button>' +
  34. '</article><p id="commenttailtemplate" class="comment">' +
  35. '<button class="btn btn-default btn-sm">Add comment</button>' +
  36. '</p><div id="replytemplate" class="reply hidden">' +
  37. '<input type="text" id="nickname" class="form-control" ' +
  38. 'title="Optional nickname…" placeholder="Optional ' +
  39. 'nickname…" /><textarea id="replymessage" ' +
  40. 'class="replymessage form-control" cols="80" rows="7">' +
  41. '</textarea><br /><div id="replystatus" role="alert" ' +
  42. 'class="statusmessage hidden alert"><span class="glyphicon" ' +
  43. 'aria-hidden="true"></span> </div><button id="replybutton" ' +
  44. 'class="btn btn-default btn-sm">Post comment</button></div></div>'
  45. );
  46. $.PrivateBin.DiscussionViewer.init();
  47. results.push(
  48. !$('#discussion').hasClass('hidden')
  49. );
  50. $.PrivateBin.DiscussionViewer.prepareNewDiscussion();
  51. results.push(
  52. $('#discussion').hasClass('hidden')
  53. );
  54. comments.forEach(function (originalComment) {
  55. var comment = {
  56. id: originalComment.id.join(''),
  57. parentid: originalComment.parentid.join(''),
  58. data: originalComment.data,
  59. meta: originalComment.meta
  60. }
  61. $.PrivateBin.DiscussionViewer.addComment(comment, comment.data, comment.meta.nickname);
  62. });
  63. results.push(
  64. $('#discussion').hasClass('hidden')
  65. );
  66. clean();
  67. return results.every(element => element);
  68. }
  69. );
  70. });
  71. });