|
@@ -1,5 +1,13 @@
|
|
|
'use strict';
|
|
'use strict';
|
|
|
require('../common');
|
|
require('../common');
|
|
|
|
|
+const fc = require('fast-check');
|
|
|
|
|
+
|
|
|
|
|
+function query(selector) {
|
|
|
|
|
+ if (selector.startsWith('#')) {
|
|
|
|
|
+ return document.getElementById(selector.slice(1));
|
|
|
|
|
+ }
|
|
|
|
|
+ return document.querySelector(selector);
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
describe('TopNav', function () {
|
|
describe('TopNav', function () {
|
|
|
describe('showViewButtons & hideViewButtons', function () {
|
|
describe('showViewButtons & hideViewButtons', function () {
|
|
@@ -11,45 +19,39 @@ describe('TopNav', function () {
|
|
|
'displays & hides navigation elements for viewing an existing document',
|
|
'displays & hides navigation elements for viewing an existing document',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
- '<nav class="navbar navbar-inverse navbar-static-top">' +
|
|
|
|
|
- '<div id="navbar" class="navbar-collapse collapse"><ul ' +
|
|
|
|
|
- 'class="nav navbar-nav"><li><button id="newbutton" ' +
|
|
|
|
|
- 'type="button" class="hidden btn btn-warning navbar-btn">' +
|
|
|
|
|
- '<span class="glyphicon glyphicon-file" aria-hidden="true">' +
|
|
|
|
|
- '</span> New</button><button id="clonebutton" type="button"' +
|
|
|
|
|
- ' class="hidden btn btn-warning navbar-btn">' +
|
|
|
|
|
- '<span class="glyphicon glyphicon-duplicate" ' +
|
|
|
|
|
- 'aria-hidden="true"></span> Clone</button><button ' +
|
|
|
|
|
- 'id="rawtextbutton" type="button" class="hidden btn ' +
|
|
|
|
|
- 'btn-warning navbar-btn"><span class="glyphicon ' +
|
|
|
|
|
- 'glyphicon-text-background" aria-hidden="true"></span> ' +
|
|
|
|
|
- 'Raw text</button><button id="qrcodelink" type="button" ' +
|
|
|
|
|
- 'data-toggle="modal" data-target="#qrcodemodal" ' +
|
|
|
|
|
- 'class="hidden btn btn-warning navbar-btn"><span ' +
|
|
|
|
|
- 'class="glyphicon glyphicon-qrcode" aria-hidden="true">' +
|
|
|
|
|
- '</span> QR code</button></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
- results.push(
|
|
|
|
|
- $('#newbutton').hasClass('hidden') &&
|
|
|
|
|
- $('#clonebutton').hasClass('hidden') &&
|
|
|
|
|
- $('#rawtextbutton').hasClass('hidden') &&
|
|
|
|
|
- $('#qrcodelink').hasClass('hidden')
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.showViewButtons();
|
|
|
|
|
- results.push(
|
|
|
|
|
- !$('#newbutton').hasClass('hidden') &&
|
|
|
|
|
- !$('#clonebutton').hasClass('hidden') &&
|
|
|
|
|
- !$('#rawtextbutton').hasClass('hidden') &&
|
|
|
|
|
- !$('#qrcodelink').hasClass('hidden')
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.hideViewButtons();
|
|
|
|
|
- results.push(
|
|
|
|
|
- $('#newbutton').hasClass('hidden') &&
|
|
|
|
|
- $('#clonebutton').hasClass('hidden') &&
|
|
|
|
|
- $('#rawtextbutton').hasClass('hidden') &&
|
|
|
|
|
- $('#qrcodelink').hasClass('hidden')
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
|
|
+ `<nav class="navbar navbar-inverse navbar-static-top">
|
|
|
|
|
+ <div id="navbar" class="navbar-collapse collapse">
|
|
|
|
|
+ <ul class="nav navbar-nav"><li><button id="newbutton" type="button" class="hidden btn btn-warning navbar-btn">
|
|
|
|
|
+ <span class="glyphicon glyphicon-file" aria-hidden="true">
|
|
|
|
|
+ </span> New</button><button id="clonebutton" type="button" class="hidden btn btn-warning navbar-btn">
|
|
|
|
|
+ <span class="glyphicon glyphicon-duplicate" aria-hidden="true"></span> Clone</button>
|
|
|
|
|
+ <button id="rawtextbutton" type="button" class="hidden btn btn-warning navbar-btn">
|
|
|
|
|
+ <span class="glyphicon glyphicon-text-background" aria-hidden="true"></span> Raw text</button>
|
|
|
|
|
+ <button id="downloadtextbutton" type="button" class="hidden btn btn-default navbar-btn"></button>
|
|
|
|
|
+ <button id="qrcodelink" type="button" data-toggle="modal" data-target="#qrcodemodal" class="hidden btn btn-warning navbar-btn"/>
|
|
|
|
|
+ <span class="glyphicon glyphicon-qrcode" aria-hidden="true"></span> QR code</button></li></ul></div>
|
|
|
|
|
+ </nav>`;
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
|
|
+ results.push(
|
|
|
|
|
+ query('#newbutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#clonebutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#rawtextbutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#qrcodelink').classList.contains('hidden')
|
|
|
|
|
+ );
|
|
|
|
|
+ PrivateBin.TopNav.showViewButtons();
|
|
|
|
|
+ results.push(
|
|
|
|
|
+ !query('#newbutton').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#clonebutton').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#rawtextbutton').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#qrcodelink').classList.contains('hidden')
|
|
|
|
|
+ );
|
|
|
|
|
+ PrivateBin.TopNav.hideViewButtons();
|
|
|
|
|
+ results.push(
|
|
|
|
|
+ query('#newbutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#clonebutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#rawtextbutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#qrcodelink').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -70,7 +72,7 @@ describe('TopNav', function () {
|
|
|
'displays & hides navigation elements for creating a document',
|
|
'displays & hides navigation elements for creating a document',
|
|
|
function () { // eslint-disable-line complexity
|
|
function () { // eslint-disable-line complexity
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li><button id="newbutton" ' +
|
|
'<nav><div id="navbar"><ul><li><button id="newbutton" ' +
|
|
|
'type="button" class="hidden">New</button></li><li><a ' +
|
|
'type="button" class="hidden">New</button></li><li><a ' +
|
|
|
'id="expiration" href="#" class="hidden">Expiration</a>' +
|
|
'id="expiration" href="#" class="hidden">Expiration</a>' +
|
|
@@ -81,40 +83,39 @@ describe('TopNav', function () {
|
|
|
'<li id="attach" class="hidden">Attach a file</li><li>' +
|
|
'<li id="attach" class="hidden">Attach a file</li><li>' +
|
|
|
'<a id="formatter" href="#" class="hidden">Format</a>' +
|
|
'<a id="formatter" href="#" class="hidden">Format</a>' +
|
|
|
'</li><li><button id="sendbutton" type="button" ' +
|
|
'</li><li><button id="sendbutton" type="button" ' +
|
|
|
- 'class="hidden">Create</button></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
- results.push(
|
|
|
|
|
- $('#sendbutton').hasClass('hidden') &&
|
|
|
|
|
- $('#expiration').hasClass('hidden') &&
|
|
|
|
|
- $('#formatter').hasClass('hidden') &&
|
|
|
|
|
- $('#burnafterreadingoption').hasClass('hidden') &&
|
|
|
|
|
- $('#opendiscussionoption').hasClass('hidden') &&
|
|
|
|
|
- $('#newbutton').hasClass('hidden') &&
|
|
|
|
|
- $('#password').hasClass('hidden') &&
|
|
|
|
|
- $('#attach').hasClass('hidden')
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.showCreateButtons();
|
|
|
|
|
- results.push(
|
|
|
|
|
- !$('#sendbutton').hasClass('hidden') &&
|
|
|
|
|
- !$('#expiration').hasClass('hidden') &&
|
|
|
|
|
- !$('#formatter').hasClass('hidden') &&
|
|
|
|
|
- !$('#burnafterreadingoption').hasClass('hidden') &&
|
|
|
|
|
- !$('#opendiscussionoption').hasClass('hidden') &&
|
|
|
|
|
- !$('#newbutton').hasClass('hidden') &&
|
|
|
|
|
- !$('#password').hasClass('hidden') &&
|
|
|
|
|
- !$('#attach').hasClass('hidden')
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.hideCreateButtons();
|
|
|
|
|
- results.push(
|
|
|
|
|
- $('#sendbutton').hasClass('hidden') &&
|
|
|
|
|
- $('#expiration').hasClass('hidden') &&
|
|
|
|
|
- $('#formatter').hasClass('hidden') &&
|
|
|
|
|
- $('#burnafterreadingoption').hasClass('hidden') &&
|
|
|
|
|
- $('#opendiscussionoption').hasClass('hidden') &&
|
|
|
|
|
- $('#newbutton').hasClass('hidden') &&
|
|
|
|
|
- $('#password').hasClass('hidden') &&
|
|
|
|
|
- $('#attach').hasClass('hidden')
|
|
|
|
|
|
|
+ 'class="hidden">Create</button></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
|
|
+ results.push(
|
|
|
|
|
+ query('#sendbutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#expiration').classList.contains('hidden') &&
|
|
|
|
|
+ query('#formatter').classList.contains('hidden') &&
|
|
|
|
|
+ query('#burnafterreadingoption').classList.contains('hidden') &&
|
|
|
|
|
+ query('#opendiscussionoption').classList.contains('hidden') &&
|
|
|
|
|
+ query('#newbutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#password').classList.contains('hidden') &&
|
|
|
|
|
+ query('#attach').classList.contains('hidden')
|
|
|
|
|
+ );
|
|
|
|
|
+ PrivateBin.TopNav.showCreateButtons();
|
|
|
|
|
+ results.push(
|
|
|
|
|
+ !query('#sendbutton').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#expiration').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#formatter').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#burnafterreadingoption').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#opendiscussionoption').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#newbutton').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#password').classList.contains('hidden') &&
|
|
|
|
|
+ !query('#attach').classList.contains('hidden')
|
|
|
|
|
+ );
|
|
|
|
|
+ PrivateBin.TopNav.hideCreateButtons();
|
|
|
|
|
+ results.push(
|
|
|
|
|
+ query('#sendbutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#expiration').classList.contains('hidden') &&
|
|
|
|
|
+ query('#formatter').classList.contains('hidden') &&
|
|
|
|
|
+ query('#burnafterreadingoption').classList.contains('hidden') &&
|
|
|
|
|
+ query('#opendiscussionoption').classList.contains('hidden') &&
|
|
|
|
|
+ query('#newbutton').classList.contains('hidden') &&
|
|
|
|
|
+ query('#password').classList.contains('hidden') &&
|
|
|
|
|
+ query('#attach').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -135,17 +136,16 @@ describe('TopNav', function () {
|
|
|
'displays the button for creating a document',
|
|
'displays the button for creating a document',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li><button id="newbutton" type=' +
|
|
'<nav><div id="navbar"><ul><li><button id="newbutton" type=' +
|
|
|
- '"button" class="hidden">New</button></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ '"button" class="hidden">New</button></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $('#newbutton').hasClass('hidden')
|
|
|
|
|
|
|
+ query('#newbutton').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.showNewPasteButton();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.showNewPasteButton();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$('#newbutton').hasClass('hidden')
|
|
|
|
|
|
|
+ !query('#newbutton').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -166,19 +166,18 @@ describe('TopNav', function () {
|
|
|
'hides the button for cloning a document',
|
|
'hides the button for cloning a document',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li><button id="clonebutton" ' +
|
|
'<nav><div id="navbar"><ul><li><button id="clonebutton" ' +
|
|
|
'type="button" class="btn btn-warning navbar-btn">' +
|
|
'type="button" class="btn btn-warning navbar-btn">' +
|
|
|
'<span class="glyphicon glyphicon-duplicate" aria-hidden=' +
|
|
'<span class="glyphicon glyphicon-duplicate" aria-hidden=' +
|
|
|
- '"true"></span> Clone</button></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ '"true"></span> Clone</button></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$('#clonebutton').hasClass('hidden')
|
|
|
|
|
|
|
+ !query('#clonebutton').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.hideCloneButton();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.hideCloneButton();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $('#clonebutton').hasClass('hidden')
|
|
|
|
|
|
|
+ query('#clonebutton').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -199,20 +198,19 @@ describe('TopNav', function () {
|
|
|
'hides the raw text button',
|
|
'hides the raw text button',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li><button ' +
|
|
'<nav><div id="navbar"><ul><li><button ' +
|
|
|
'id="rawtextbutton" type="button" class="btn ' +
|
|
'id="rawtextbutton" type="button" class="btn ' +
|
|
|
'btn-warning navbar-btn"><span class="glyphicon ' +
|
|
'btn-warning navbar-btn"><span class="glyphicon ' +
|
|
|
'glyphicon-text-background" aria-hidden="true"></span> ' +
|
|
'glyphicon-text-background" aria-hidden="true"></span> ' +
|
|
|
- 'Raw text</button></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ 'Raw text</button></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$('#rawtextbutton').hasClass('hidden')
|
|
|
|
|
|
|
+ !query('#rawtextbutton').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.hideRawButton();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.hideRawButton();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $('#rawtextbutton').hasClass('hidden')
|
|
|
|
|
|
|
+ query('#rawtextbutton').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -233,7 +231,7 @@ describe('TopNav', function () {
|
|
|
'hides the file attachment selection button',
|
|
'hides the file attachment selection button',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li id="attach" class="hidden ' +
|
|
'<nav><div id="navbar"><ul><li id="attach" class="hidden ' +
|
|
|
'dropdown"><a href="#" class="dropdown-toggle" data-' +
|
|
'dropdown"><a href="#" class="dropdown-toggle" data-' +
|
|
|
'toggle="dropdown" role="button" aria-haspopup="true" ' +
|
|
'toggle="dropdown" role="button" aria-haspopup="true" ' +
|
|
@@ -242,15 +240,14 @@ describe('TopNav', function () {
|
|
|
'<div><input type="file" id="file" name="file" /></div>' +
|
|
'<div><input type="file" id="file" name="file" /></div>' +
|
|
|
'</li><li id="customattachment" class="hidden"></li><li>' +
|
|
'</li><li id="customattachment" class="hidden"></li><li>' +
|
|
|
'<a id="fileremovebutton" href="#">Remove attachment</a>' +
|
|
'<a id="fileremovebutton" href="#">Remove attachment</a>' +
|
|
|
- '</li></ul></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ '</li></ul></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$('#filewrap').hasClass('hidden')
|
|
|
|
|
|
|
+ !query('#filewrap').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.hideFileSelector();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.hideFileSelector();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $('#filewrap').hasClass('hidden')
|
|
|
|
|
|
|
+ query('#filewrap').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -271,7 +268,7 @@ describe('TopNav', function () {
|
|
|
'display the custom file attachment',
|
|
'display the custom file attachment',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li id="attach" class="hidden ' +
|
|
'<nav><div id="navbar"><ul><li id="attach" class="hidden ' +
|
|
|
'dropdown"><a href="#" class="dropdown-toggle" data-' +
|
|
'dropdown"><a href="#" class="dropdown-toggle" data-' +
|
|
|
'toggle="dropdown" role="button" aria-haspopup="true" ' +
|
|
'toggle="dropdown" role="button" aria-haspopup="true" ' +
|
|
@@ -280,15 +277,14 @@ describe('TopNav', function () {
|
|
|
'<div><input type="file" id="file" name="file" /></div>' +
|
|
'<div><input type="file" id="file" name="file" /></div>' +
|
|
|
'</li><li id="customattachment" class="hidden"></li><li>' +
|
|
'</li><li id="customattachment" class="hidden"></li><li>' +
|
|
|
'<a id="fileremovebutton" href="#">Remove attachment</a>' +
|
|
'<a id="fileremovebutton" href="#">Remove attachment</a>' +
|
|
|
- '</li></ul></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ '</li></ul></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $('#customattachment').hasClass('hidden')
|
|
|
|
|
|
|
+ query('#customattachment').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.showCustomAttachment();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.showCustomAttachment();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$('#customattachment').hasClass('hidden')
|
|
|
|
|
|
|
+ !query('#customattachment').classList.contains('hidden')
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -308,9 +304,8 @@ describe('TopNav', function () {
|
|
|
it(
|
|
it(
|
|
|
'collapses the navigation when displayed on a small screen',
|
|
'collapses the navigation when displayed on a small screen',
|
|
|
function () {
|
|
function () {
|
|
|
- const clean = jsdom();
|
|
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div class="navbar-header"><button type="button" ' +
|
|
'<nav><div class="navbar-header"><button type="button" ' +
|
|
|
'class="navbar-toggle collapsed" data-toggle="collapse" ' +
|
|
'class="navbar-toggle collapsed" data-toggle="collapse" ' +
|
|
|
'data-target="#navbar" aria-expanded="false" aria-controls' +
|
|
'data-target="#navbar" aria-expanded="false" aria-controls' +
|
|
@@ -318,34 +313,33 @@ describe('TopNav', function () {
|
|
|
'navbar-brand" href=""><img alt="PrivateBin" ' +
|
|
'navbar-brand" href=""><img alt="PrivateBin" ' +
|
|
|
'src="img/icon.svg" width="38" /></a></div><div ' +
|
|
'src="img/icon.svg" width="38" /></a></div><div ' +
|
|
|
'id="navbar"><ul><li><button id="newbutton" type=' +
|
|
'id="navbar"><ul><li><button id="newbutton" type=' +
|
|
|
- '"button" class="hidden">New</button></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ '"button" class="hidden">New</button></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $('.navbar-toggle').hasClass('collapsed') &&
|
|
|
|
|
- $('#navbar').attr('aria-expanded') !== 'true'
|
|
|
|
|
|
|
+ query('.navbar-toggle').classList.contains('collapsed') &&
|
|
|
|
|
+ query('#navbar').getAttribute('aria-expanded') !== 'true'
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.collapseBar();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.collapseBar();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $('.navbar-toggle').hasClass('collapsed') &&
|
|
|
|
|
- $('#navbar').attr('aria-expanded') !== 'true'
|
|
|
|
|
|
|
+ query('.navbar-toggle').classList.contains('collapsed') &&
|
|
|
|
|
+ query('#navbar').getAttribute('aria-expanded') !== 'true'
|
|
|
);
|
|
);
|
|
|
/*
|
|
/*
|
|
|
with the upgrade for bootstrap-3.3.7.js to bootstrap-3.4.1.js
|
|
with the upgrade for bootstrap-3.3.7.js to bootstrap-3.4.1.js
|
|
|
the mobile interface detection changed to check if the
|
|
the mobile interface detection changed to check if the
|
|
|
ontouchstart event exists, which broke this section of the test
|
|
ontouchstart event exists, which broke this section of the test
|
|
|
- $('.navbar-toggle').trigger('click');
|
|
|
|
|
|
|
+ const toggleBtn = document.querySelector('.navbar-toggle');
|
|
|
|
|
+ toggleBtn.dispatchEvent(new MouseEvent('click'));
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$('.navbar-toggle').hasClass('collapsed') &&
|
|
|
|
|
- $('#navbar').attr('aria-expanded') == 'true'
|
|
|
|
|
|
|
+ !toggleBtn.classList.contains('collapsed') &&
|
|
|
|
|
+ document.getElementById('navbar').getAttribute('aria-expanded') == 'true'
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.collapseBar();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.collapseBar();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $('.navbar-toggle').hasClass('collapsed') &&
|
|
|
|
|
- $('#navbar').attr('aria-expanded') == 'false'
|
|
|
|
|
|
|
+ document.querySelector('.navbar-toggle').classList.contains('collapsed') &&
|
|
|
|
|
+ document.getElementById('navbar').getAttribute('aria-expanded') == 'false'
|
|
|
);
|
|
);
|
|
|
*/
|
|
*/
|
|
|
- clean();
|
|
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
|
if (!result) {
|
|
if (!result) {
|
|
|
console.log(results);
|
|
console.log(results);
|
|
@@ -364,36 +358,35 @@ describe('TopNav', function () {
|
|
|
'reset inputs to defaults (options off)',
|
|
'reset inputs to defaults (options off)',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
|
|
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
|
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
|
'id="burnafterreading" name="burnafterreading" /> ' +
|
|
'id="burnafterreading" name="burnafterreading" /> ' +
|
|
|
'Burn after reading</label></li><li id="opendiscussionoption" ' +
|
|
'Burn after reading</label></li><li id="opendiscussionoption" ' +
|
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
|
'id="opendiscussion" name="opendiscussion" /> ' +
|
|
'id="opendiscussion" name="opendiscussion" /> ' +
|
|
|
- 'Open discussion</label></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ 'Open discussion</label></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
- $('#burnafterreading').attr('checked', 'checked');
|
|
|
|
|
- $('#opendiscussion').attr('checked', 'checked');
|
|
|
|
|
|
|
+ query('#burnafterreading').checked = true;
|
|
|
|
|
+ query('#opendiscussion').checked = true;
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.resetInput();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.resetInput();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -408,35 +401,35 @@ describe('TopNav', function () {
|
|
|
'reset inputs to defaults (burnafterreading on)',
|
|
'reset inputs to defaults (burnafterreading on)',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
|
|
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
|
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
|
'id="burnafterreading" name="burnafterreading" checked="checked" /> ' +
|
|
'id="burnafterreading" name="burnafterreading" checked="checked" /> ' +
|
|
|
'Burn after reading</label></li><li id="opendiscussionoption" ' +
|
|
'Burn after reading</label></li><li id="opendiscussionoption" ' +
|
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
|
'id="opendiscussion" name="opendiscussion" checked="checked" /> ' +
|
|
'id="opendiscussion" name="opendiscussion" checked="checked" /> ' +
|
|
|
- 'Open discussion</label></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ 'Open discussion</label></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
- $('#burnafterreading').removeAttr('checked');
|
|
|
|
|
|
|
+ query('#burnafterreading').checked = false;
|
|
|
|
|
+ query('#burnafterreading').removeAttribute('checked');
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.resetInput();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.resetInput();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -451,36 +444,37 @@ describe('TopNav', function () {
|
|
|
'reset inputs to defaults (opendiscussion on)',
|
|
'reset inputs to defaults (opendiscussion on)',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
|
|
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
|
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
|
'id="burnafterreading" name="burnafterreading" /> ' +
|
|
'id="burnafterreading" name="burnafterreading" /> ' +
|
|
|
'Burn after reading</label></li><li id="opendiscussionoption" ' +
|
|
'Burn after reading</label></li><li id="opendiscussionoption" ' +
|
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
|
'id="opendiscussion" name="opendiscussion" checked="checked" /> ' +
|
|
'id="opendiscussion" name="opendiscussion" checked="checked" /> ' +
|
|
|
- 'Open discussion</label></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ 'Open discussion</label></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
- $('#opendiscussion').removeAttr('checked');
|
|
|
|
|
- $('#burnafterreading').prop('checked', true);
|
|
|
|
|
|
|
+ query('#opendiscussion').checked = false;
|
|
|
|
|
+ query('#opendiscussion').removeAttribute('checked');
|
|
|
|
|
+ query('#burnafterreading').checked = true;
|
|
|
|
|
+ query('#burnafterreading').setAttribute('checked', 'checked');
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
- $.PrivateBin.TopNav.resetInput();
|
|
|
|
|
|
|
+ PrivateBin.TopNav.resetInput();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -500,13 +494,12 @@ describe('TopNav', function () {
|
|
|
it(
|
|
it(
|
|
|
'returns the currently selected expiration date',
|
|
'returns the currently selected expiration date',
|
|
|
function () {
|
|
function () {
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<select id="pasteExpiration" name="pasteExpiration">' +
|
|
'<select id="pasteExpiration" name="pasteExpiration">' +
|
|
|
'<option value="1day">1 day</option>' +
|
|
'<option value="1day">1 day</option>' +
|
|
|
- '<option value="never">Never</option></select>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
- assert.strictEqual($.PrivateBin.TopNav.getExpiration(), '1day');
|
|
|
|
|
|
|
+ '<option value="never">Never</option></select>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
|
|
+ assert.strictEqual(PrivateBin.TopNav.getExpiration(), '1day');
|
|
|
cleanup();
|
|
cleanup();
|
|
|
}
|
|
}
|
|
|
);
|
|
);
|
|
@@ -558,7 +551,7 @@ describe('TopNav', function () {
|
|
|
'returns the selected files',
|
|
'returns the selected files',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li id="attach" class="hidden ' +
|
|
'<nav><div id="navbar"><ul><li id="attach" class="hidden ' +
|
|
|
'dropdown"><a href="#" class="dropdown-toggle" data-' +
|
|
'dropdown"><a href="#" class="dropdown-toggle" data-' +
|
|
|
'toggle="dropdown" role="button" aria-haspopup="true" ' +
|
|
'toggle="dropdown" role="button" aria-haspopup="true" ' +
|
|
@@ -567,17 +560,16 @@ describe('TopNav', function () {
|
|
|
'<div><input type="file" id="file" name="file" /></div>' +
|
|
'<div><input type="file" id="file" name="file" /></div>' +
|
|
|
'</li><li id="customattachment" class="hidden"></li><li>' +
|
|
'</li><li id="customattachment" class="hidden"></li><li>' +
|
|
|
'<a id="fileremovebutton" href="#">Remove attachment</a>' +
|
|
'<a id="fileremovebutton" href="#">Remove attachment</a>' +
|
|
|
- '</li></ul></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ '</li></ul></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getFileList() === null
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getFileList() === null
|
|
|
);
|
|
);
|
|
|
- addFileList($('#file')[0], [
|
|
|
|
|
|
|
+ addFileList(query('#file'), [
|
|
|
'../img/logo.svg',
|
|
'../img/logo.svg',
|
|
|
'../img/busy.gif'
|
|
'../img/busy.gif'
|
|
|
]);
|
|
]);
|
|
|
- const files = $.PrivateBin.TopNav.getFileList();
|
|
|
|
|
|
|
+ const files = PrivateBin.TopNav.getFileList();
|
|
|
results.push(
|
|
results.push(
|
|
|
files[0].name === 'logo.svg' &&
|
|
files[0].name === 'logo.svg' &&
|
|
|
files[1].name === 'busy.gif'
|
|
files[1].name === 'busy.gif'
|
|
@@ -601,23 +593,23 @@ describe('TopNav', function () {
|
|
|
'returns if the burn-after-reading checkbox was ticked',
|
|
'returns if the burn-after-reading checkbox was ticked',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
|
|
'<nav><div id="navbar"><ul><li id="burnafterreadingoption" ' +
|
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
|
'id="burnafterreading" name="burnafterreading" /> ' +
|
|
'id="burnafterreading" name="burnafterreading" /> ' +
|
|
|
- 'Burn after reading</label></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ 'Burn after reading</label></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
- $('#burnafterreading').attr('checked', 'checked');
|
|
|
|
|
|
|
+ query('#burnafterreading').checked = true;
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
- $('#burnafterreading').removeAttr('checked');
|
|
|
|
|
|
|
+ query('#burnafterreading').checked = false;
|
|
|
|
|
+ query('#burnafterreading').removeAttribute('checked');
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getBurnAfterReading()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getBurnAfterReading()
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -638,23 +630,23 @@ describe('TopNav', function () {
|
|
|
'returns if the open-discussion checkbox was ticked',
|
|
'returns if the open-discussion checkbox was ticked',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li id="opendiscussionoption" ' +
|
|
'<nav><div id="navbar"><ul><li id="opendiscussionoption" ' +
|
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
'class="hidden"><label><input type="checkbox" ' +
|
|
|
'id="opendiscussion" name="opendiscussion" /> ' +
|
|
'id="opendiscussion" name="opendiscussion" /> ' +
|
|
|
- 'Open discussion</label></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ 'Open discussion</label></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
- $('#opendiscussion').attr('checked', 'checked');
|
|
|
|
|
|
|
+ query('#opendiscussion').checked = true;
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
- $('#opendiscussion').removeAttr('checked');
|
|
|
|
|
|
|
+ query('#opendiscussion').checked = false;
|
|
|
|
|
+ query('#opendiscussion').removeAttribute('checked');
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getOpenDiscussion()
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getOpenDiscussion()
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -668,41 +660,41 @@ describe('TopNav', function () {
|
|
|
|
|
|
|
|
describe('getPassword', function () {
|
|
describe('getPassword', function () {
|
|
|
before(function () {
|
|
before(function () {
|
|
|
- cleanup();
|
|
|
|
|
|
|
+ globalThis.cleanup();
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- jsc.property(
|
|
|
|
|
- 'returns the contents of the password input',
|
|
|
|
|
- 'string',
|
|
|
|
|
- function (password) {
|
|
|
|
|
- password = password.replace(/\r+|\n+/g, '');
|
|
|
|
|
- let results = [];
|
|
|
|
|
- $('body').html(
|
|
|
|
|
- '<nav><div id="navbar"><ul><li><div id="password" ' +
|
|
|
|
|
- 'class="navbar-form hidden"><input type="password" ' +
|
|
|
|
|
- 'id="passwordinput" placeholder="Password (recommended)" ' +
|
|
|
|
|
- 'class="form-control" size="23" /></div></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
- results.push(
|
|
|
|
|
- $.PrivateBin.TopNav.getPassword() === ''
|
|
|
|
|
- );
|
|
|
|
|
- $('#passwordinput').val(password);
|
|
|
|
|
- results.push(
|
|
|
|
|
- $.PrivateBin.TopNav.getPassword() === password
|
|
|
|
|
- );
|
|
|
|
|
- $('#passwordinput').val('');
|
|
|
|
|
- results.push(
|
|
|
|
|
- $.PrivateBin.TopNav.getPassword() === ''
|
|
|
|
|
- );
|
|
|
|
|
- cleanup();
|
|
|
|
|
- const result = results.every(element => element);
|
|
|
|
|
- if (!result) {
|
|
|
|
|
- console.log(results);
|
|
|
|
|
|
|
+ it('returns the contents of the password input', () => {
|
|
|
|
|
+ fc.assert(fc.property(
|
|
|
|
|
+ fc.string(),
|
|
|
|
|
+ function (password) {
|
|
|
|
|
+ password = password.replace(/\r+|\n+/g, '');
|
|
|
|
|
+ let results = [];
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
|
|
+ '<nav><div id="navbar"><ul><li><div id="password" ' +
|
|
|
|
|
+ 'class="navbar-form hidden"><input type="password" ' +
|
|
|
|
|
+ 'id="passwordinput" placeholder="Password (recommended)" ' +
|
|
|
|
|
+ 'class="form-control" size="23" /></div></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
|
|
+ results.push(
|
|
|
|
|
+ PrivateBin.TopNav.getPassword() === ''
|
|
|
|
|
+ );
|
|
|
|
|
+ query('#passwordinput').value = password;
|
|
|
|
|
+ results.push(
|
|
|
|
|
+ PrivateBin.TopNav.getPassword() === password
|
|
|
|
|
+ );
|
|
|
|
|
+ query('#passwordinput').value = '';
|
|
|
|
|
+ results.push(
|
|
|
|
|
+ PrivateBin.TopNav.getPassword() === ''
|
|
|
|
|
+ );
|
|
|
|
|
+ globalThis.cleanup();
|
|
|
|
|
+ const result = results.every(element => element);
|
|
|
|
|
+ if (!result) {
|
|
|
|
|
+ console.log(results);
|
|
|
|
|
+ }
|
|
|
|
|
+ return result;
|
|
|
}
|
|
}
|
|
|
- return result;
|
|
|
|
|
- }
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ ));
|
|
|
|
|
+ });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
describe('getCustomAttachment', function () {
|
|
describe('getCustomAttachment', function () {
|
|
@@ -714,7 +706,7 @@ describe('TopNav', function () {
|
|
|
'returns the custom attachment element',
|
|
'returns the custom attachment element',
|
|
|
function () {
|
|
function () {
|
|
|
let results = [];
|
|
let results = [];
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.documentElement.innerHTML =
|
|
|
'<nav><div id="navbar"><ul><li id="attach" class="hidden ' +
|
|
'<nav><div id="navbar"><ul><li id="attach" class="hidden ' +
|
|
|
'dropdown"><a href="#" class="dropdown-toggle" data-' +
|
|
'dropdown"><a href="#" class="dropdown-toggle" data-' +
|
|
|
'toggle="dropdown" role="button" aria-haspopup="true" ' +
|
|
'toggle="dropdown" role="button" aria-haspopup="true" ' +
|
|
@@ -723,15 +715,14 @@ describe('TopNav', function () {
|
|
|
'<div><input type="file" id="file" name="file" /></div>' +
|
|
'<div><input type="file" id="file" name="file" /></div>' +
|
|
|
'</li><li id="customattachment" class="hidden"></li><li>' +
|
|
'</li><li id="customattachment" class="hidden"></li><li>' +
|
|
|
'<a id="fileremovebutton" href="#">Remove attachment</a>' +
|
|
'<a id="fileremovebutton" href="#">Remove attachment</a>' +
|
|
|
- '</li></ul></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
|
|
+ '</li></ul></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
results.push(
|
|
results.push(
|
|
|
- !$.PrivateBin.TopNav.getCustomAttachment().hasClass('test')
|
|
|
|
|
|
|
+ !PrivateBin.TopNav.getCustomAttachment().classList.contains('test')
|
|
|
);
|
|
);
|
|
|
- $('#customattachment').addClass('test');
|
|
|
|
|
|
|
+ query('#customattachment').classList.add('test');
|
|
|
results.push(
|
|
results.push(
|
|
|
- $.PrivateBin.TopNav.getCustomAttachment().hasClass('test')
|
|
|
|
|
|
|
+ PrivateBin.TopNav.getCustomAttachment().classList.contains('test')
|
|
|
);
|
|
);
|
|
|
cleanup();
|
|
cleanup();
|
|
|
const result = results.every(element => element);
|
|
const result = results.every(element => element);
|
|
@@ -753,7 +744,7 @@ describe('TopNav', function () {
|
|
|
function () {
|
|
function () {
|
|
|
// Insert any setup code needed for the hideAllButtons function
|
|
// Insert any setup code needed for the hideAllButtons function
|
|
|
// Example: Initialize the DOM elements required for testing
|
|
// Example: Initialize the DOM elements required for testing
|
|
|
- $('body').html(
|
|
|
|
|
|
|
+ document.body.innerHTML =
|
|
|
'<nav class="navbar navbar-inverse navbar-static-top">' +
|
|
'<nav class="navbar navbar-inverse navbar-static-top">' +
|
|
|
'<div id="navbar" class="navbar-collapse collapse"><ul ' +
|
|
'<div id="navbar" class="navbar-collapse collapse"><ul ' +
|
|
|
'class="nav navbar-nav"><li><button id="newbutton" ' +
|
|
'class="nav navbar-nav"><li><button id="newbutton" ' +
|
|
@@ -770,15 +761,14 @@ describe('TopNav', function () {
|
|
|
'data-toggle="modal" data-target="#qrcodemodal" ' +
|
|
'data-toggle="modal" data-target="#qrcodemodal" ' +
|
|
|
'class="hidden btn btn-warning navbar-btn"><span ' +
|
|
'class="hidden btn btn-warning navbar-btn"><span ' +
|
|
|
'class="glyphicon glyphicon-qrcode" aria-hidden="true">' +
|
|
'class="glyphicon glyphicon-qrcode" aria-hidden="true">' +
|
|
|
- '</span> QR code</button></li></ul></div></nav>'
|
|
|
|
|
- );
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
- $.PrivateBin.TopNav.hideAllButtons();
|
|
|
|
|
-
|
|
|
|
|
- assert.ok($('#newbutton').hasClass('hidden'));
|
|
|
|
|
- assert.ok($('#clonebutton').hasClass('hidden'));
|
|
|
|
|
- assert.ok($('#rawtextbutton').hasClass('hidden'));
|
|
|
|
|
- assert.ok($('#qrcodelink').hasClass('hidden'));
|
|
|
|
|
|
|
+ '</span> QR code</button></li></ul></div></nav>';
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
|
|
+ PrivateBin.TopNav.hideAllButtons();
|
|
|
|
|
+
|
|
|
|
|
+ assert.ok(query('#newbutton').classList.contains('hidden'));
|
|
|
|
|
+ assert.ok(query('#clonebutton').classList.contains('hidden'));
|
|
|
|
|
+ assert.ok(query('#rawtextbutton').classList.contains('hidden'));
|
|
|
|
|
+ assert.ok(query('#qrcodelink').classList.contains('hidden'));
|
|
|
cleanup();
|
|
cleanup();
|
|
|
}
|
|
}
|
|
|
);
|
|
);
|
|
@@ -793,14 +783,17 @@ describe('TopNav', function () {
|
|
|
it(
|
|
it(
|
|
|
'displays raw text view correctly',
|
|
'displays raw text view correctly',
|
|
|
function () {
|
|
function () {
|
|
|
- const clean = jsdom('', {url: 'https://privatebin.net/?0123456789abcdef#1'});
|
|
|
|
|
- $('body').html('<button id="rawtextbutton"></button>');
|
|
|
|
|
|
|
+ const clean = globalThis.cleanup('', {url: 'https://privatebin.net/?0123456789abcdef#1'});
|
|
|
|
|
+ document.documentElement.innerHTML = `
|
|
|
|
|
+ <li id="loadingindicator" class="hidden"></li>
|
|
|
|
|
+ <button id="rawtextbutton"></button>`;
|
|
|
const sample = 'example';
|
|
const sample = 'example';
|
|
|
- $.PrivateBin.PasteViewer.setText(sample);
|
|
|
|
|
- $.PrivateBin.Helper.reset();
|
|
|
|
|
- $.PrivateBin.TopNav.init();
|
|
|
|
|
- $('#rawtextbutton').click();
|
|
|
|
|
- assert.strictEqual($('pre').text(), sample);
|
|
|
|
|
|
|
+ PrivateBin.Alert.init(); // required because of locading indiator being used
|
|
|
|
|
+ PrivateBin.TopNav.init();
|
|
|
|
|
+ PrivateBin.PasteViewer.setText(sample);
|
|
|
|
|
+ PrivateBin.Helper.reset();
|
|
|
|
|
+ query('#rawtextbutton').click();
|
|
|
|
|
+ assert.strictEqual(document.querySelector('pre').textContent, sample);
|
|
|
clean();
|
|
clean();
|
|
|
}
|
|
}
|
|
|
);
|
|
);
|