testing file input access
This commit is contained in:
parent
78c186d6bc
commit
4857a92a0e
@ -316,5 +316,97 @@ describe('TopNav', function () {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('getExpiration', function () {
|
||||||
|
before(function () {
|
||||||
|
cleanup();
|
||||||
|
});
|
||||||
|
|
||||||
|
it(
|
||||||
|
'returns the currently selected expiration date',
|
||||||
|
function () {
|
||||||
|
$.PrivateBin.TopNav.init();
|
||||||
|
assert.ok($.PrivateBin.TopNav.getExpiration() === '1week');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getFileList', function () {
|
||||||
|
before(function () {
|
||||||
|
cleanup();
|
||||||
|
});
|
||||||
|
|
||||||
|
var File = window.File,
|
||||||
|
FileList = window.FileList,
|
||||||
|
path = require('path'),
|
||||||
|
mime = require('mime-types');
|
||||||
|
|
||||||
|
// mocking file input as per https://github.com/jsdom/jsdom/issues/1272
|
||||||
|
function createFile(file_path) {
|
||||||
|
var file = fs.statSync(file_path),
|
||||||
|
lastModified = file.mtimeMs,
|
||||||
|
size = file.size;
|
||||||
|
|
||||||
|
return new File(
|
||||||
|
[new fs.readFileSync(file_path)],
|
||||||
|
path.basename(file_path),
|
||||||
|
{
|
||||||
|
lastModified,
|
||||||
|
type: mime.lookup(file_path) || '',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function addFileList(input, file_paths) {
|
||||||
|
if (typeof file_paths === 'string')
|
||||||
|
file_paths = [file_paths]
|
||||||
|
else if (!Array.isArray(file_paths)) {
|
||||||
|
throw new Error('file_paths needs to be a file path string or an Array of file path strings')
|
||||||
|
}
|
||||||
|
|
||||||
|
const file_list = file_paths.map(fp => createFile(fp))
|
||||||
|
file_list.__proto__ = Object.create(FileList.prototype)
|
||||||
|
|
||||||
|
Object.defineProperty(input, 'files', {
|
||||||
|
value: file_list,
|
||||||
|
writeable: false,
|
||||||
|
})
|
||||||
|
|
||||||
|
return input
|
||||||
|
}
|
||||||
|
|
||||||
|
it(
|
||||||
|
'returns the selected files',
|
||||||
|
function () {
|
||||||
|
var results = [];
|
||||||
|
$('body').html(
|
||||||
|
'<nav><div id="navbar"><ul><li id="attach" class="hidden ' +
|
||||||
|
'dropdown"><a href="#" class="dropdown-toggle" data-' +
|
||||||
|
'toggle="dropdown" role="button" aria-haspopup="true" ' +
|
||||||
|
'aria-expanded="false">Attach a file <span class="caret">' +
|
||||||
|
'</span></a><ul class="dropdown-menu"><li id="filewrap">' +
|
||||||
|
'<div><input type="file" id="file" name="file" /></div>' +
|
||||||
|
'</li><li id="customattachment" class="hidden"></li><li>' +
|
||||||
|
'<a id="fileremovebutton" href="#">Remove attachment</a>' +
|
||||||
|
'</li></ul></li></ul></div></nav>'
|
||||||
|
);
|
||||||
|
$.PrivateBin.TopNav.init();
|
||||||
|
results.push(
|
||||||
|
$.PrivateBin.TopNav.getFileList() === null
|
||||||
|
);
|
||||||
|
addFileList($('#file')[0], [
|
||||||
|
'../img/logo.svg',
|
||||||
|
'../img/busy.gif'
|
||||||
|
]);
|
||||||
|
var files = $.PrivateBin.TopNav.getFileList();
|
||||||
|
results.push(
|
||||||
|
files[0].name === 'logo.svg' &&
|
||||||
|
files[1].name === 'busy.gif'
|
||||||
|
);
|
||||||
|
cleanup();
|
||||||
|
assert.ok(results.every(element => element));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user