diff options
Diffstat (limited to 'vendor/blueimp/jquery-file-upload/test/unit.js')
-rw-r--r-- | vendor/blueimp/jquery-file-upload/test/unit.js | 992 |
1 files changed, 992 insertions, 0 deletions
diff --git a/vendor/blueimp/jquery-file-upload/test/unit.js b/vendor/blueimp/jquery-file-upload/test/unit.js new file mode 100644 index 000000000..c70d35dd6 --- /dev/null +++ b/vendor/blueimp/jquery-file-upload/test/unit.js @@ -0,0 +1,992 @@ +/* + * jQuery File Upload Test + * https://github.com/blueimp/JavaScript-Load-Image + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + */ + +/* global beforeEach, afterEach, describe, it */ +/* eslint-disable new-cap */ + +(function(expect, $) { + 'use strict'; + + var canCreateBlob = !!window.dataURLtoBlob; + // 80x60px GIF image (color black, base64 data): + var b64DataGIF = + 'R0lGODdhUAA8AIABAAAAAP///ywAAAAAUAA8AAACS4SPqcvtD6' + + 'OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofE' + + 'ovGITCqXzKbzCY1Kp9Sq9YrNarfcrvcLDovH5PKsAAA7'; + var imageUrlGIF = 'data:image/gif;base64,' + b64DataGIF; + var blobGIF = canCreateBlob && window.dataURLtoBlob(imageUrlGIF); + + // 2x1px JPEG (color white, with the Exif orientation flag set to 6 and the + // IPTC ObjectName (2:5) set to 'objectname'): + var b64DataJPEG = + '/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAA' + + 'BgASAAAAAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAA8cAgUACm9iamVj' + + 'dG5hbWUA/9sAQwABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB' + + 'AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB/9sAQwEBAQEBAQEBAQEBAQEBAQEB' + + 'AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB' + + '/8AAEQgAAQACAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYH' + + 'CAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGh' + + 'CCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldY' + + 'WVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1' + + 'tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8B' + + 'AAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAEC' + + 'dwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBka' + + 'JicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWG' + + 'h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ' + + '2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/v4ooooA/9k='; + var imageUrlJPEG = 'data:image/jpeg;base64,' + b64DataJPEG; + var blobJPEG = canCreateBlob && window.dataURLtoBlob(imageUrlJPEG); + + var fileGIF, fileJPEG, files, items, eventObject; + + var uploadURL = '../server/php/'; + + /** + * Creates a fileupload form and adds it to the DOM + * + * @returns {object} jQuery node + */ + function createFileuploadForm() { + return $('<form><input type="file" name="files[]" multiple></form>') + .prop({ + action: uploadURL, + method: 'POST', + enctype: 'multipart/form-data' + }) + .css({ display: 'none' }) + .appendTo(document.body); + } + + /** + * Deletes all files from the upload server + * + * @param {Array} files Response files list + * @param {Function} callback Callback function + */ + function deleteFiles(files, callback) { + $.when( + files.map(function(file) { + return $.ajax({ + type: file.deleteType, + url: file.deleteUrl + }); + }) + ).always(function() { + callback(); + }); + } + + beforeEach(function() { + fileGIF = new File([blobGIF], 'example.gif', { type: 'image/gif' }); + fileJPEG = new File([blobJPEG], 'example.jpg', { type: 'image/jpeg' }); + files = [fileGIF, fileJPEG]; + items = [ + { + getAsFile: function() { + return files[0]; + } + }, + { + getAsFile: function() { + return files[1]; + } + } + ]; + eventObject = { + originalEvent: { + dataTransfer: { files: files, types: ['Files'] }, + clipboardData: { items: items } + } + }; + }); + + afterEach(function(done) { + $.getJSON(uploadURL).then(function(result) { + deleteFiles(result.files, done); + }); + }); + + describe('Initialization', function() { + var form; + + beforeEach(function() { + form = createFileuploadForm(); + }); + + afterEach(function() { + form.remove(); + }); + + it('widget', function() { + form.fileupload(); + expect(form.data('blueimp-fileupload')).to.be.an('object'); + }); + + it('file input', function() { + form.fileupload(); + expect(form.fileupload('option', 'fileInput').length).to.equal(1); + }); + + it('drop zone', function() { + form.fileupload(); + expect(form.fileupload('option', 'dropZone').length).to.equal(1); + }); + + it('paste zone', function() { + form.fileupload({ pasteZone: document }); + expect(form.fileupload('option', 'pasteZone').length).to.equal(1); + }); + + it('data attributes', function() { + form.attr('data-url', 'https://example.org'); + form.fileupload(); + expect(form.fileupload('option', 'url')).to.equal('https://example.org'); + expect(form.data('blueimp-fileupload')).to.be.an('object'); + }); + + it('event listeners', function() { + var eventsData = {}; + form.fileupload({ + autoUpload: false, + pasteZone: document, + dragover: function() { + eventsData.dragover = true; + }, + dragenter: function() { + eventsData.dragenter = true; + }, + dragleave: function() { + eventsData.dragleave = true; + }, + drop: function(e, data) { + eventsData.drop = data; + }, + paste: function(e, data) { + eventsData.paste = data; + }, + change: function() { + eventsData.change = true; + } + }); + form + .fileupload('option', 'fileInput') + .trigger($.Event('change', eventObject)); + expect(eventsData.change).to.equal(true); + form + .fileupload('option', 'dropZone') + .trigger($.Event('dragover', eventObject)) + .trigger($.Event('dragenter', eventObject)) + .trigger($.Event('dragleave', eventObject)) + .trigger($.Event('drop', eventObject)); + expect(eventsData.dragover).to.equal(true); + expect(eventsData.dragenter).to.equal(true); + expect(eventsData.dragleave).to.equal(true); + expect(eventsData.drop.files).to.deep.equal(files); + form + .fileupload('option', 'pasteZone') + .trigger($.Event('paste', eventObject)); + expect(eventsData.paste.files).to.deep.equal(files); + }); + }); + + describe('API', function() { + var form; + + beforeEach(function() { + form = createFileuploadForm().fileupload({ + dataType: 'json', + autoUpload: false + }); + }); + + afterEach(function() { + form.remove(); + }); + + it('destroy', function() { + var eventsData = {}; + form.fileupload('option', { + pasteZone: document, + dragover: function() { + eventsData.dragover = true; + }, + dragenter: function() { + eventsData.dragenter = true; + }, + dragleave: function() { + eventsData.dragleave = true; + }, + drop: function(e, data) { + eventsData.drop = data; + }, + paste: function(e, data) { + eventsData.paste = data; + }, + change: function() { + eventsData.change = true; + } + }); + var fileInput = form.fileupload('option', 'fileInput'); + var dropZone = form.fileupload('option', 'dropZone'); + var pasteZone = form.fileupload('option', 'pasteZone'); + form.fileupload('destroy'); + expect(form.data('blueimp-fileupload')).to.equal(); + fileInput.trigger($.Event('change', eventObject)); + expect(eventsData.change).to.equal(); + dropZone + .trigger($.Event('dragover', eventObject)) + .trigger($.Event('dragenter', eventObject)) + .trigger($.Event('dragleave', eventObject)) + .trigger($.Event('drop', eventObject)); + expect(eventsData.dragover).to.equal(); + expect(eventsData.dragenter).to.equal(); + expect(eventsData.dragleave).to.equal(); + expect(eventsData.drop).to.equal(); + pasteZone.trigger($.Event('paste', eventObject)); + expect(eventsData.paste).to.equal(); + }); + + it('disable', function() { + var eventsData = {}; + form.fileupload('option', { + pasteZone: document, + dragover: function() { + eventsData.dragover = true; + }, + dragenter: function() { + eventsData.dragenter = true; + }, + dragleave: function() { + eventsData.dragleave = true; + }, + drop: function(e, data) { + eventsData.drop = data; + }, + paste: function(e, data) { + eventsData.paste = data; + }, + change: function() { + eventsData.change = true; + } + }); + form.fileupload('disable'); + form + .fileupload('option', 'fileInput') + .trigger($.Event('change', eventObject)); + expect(eventsData.change).to.equal(); + form + .fileupload('option', 'dropZone') + .trigger($.Event('dragover', eventObject)) + .trigger($.Event('dragenter', eventObject)) + .trigger($.Event('dragleave', eventObject)) + .trigger($.Event('drop', eventObject)); + expect(eventsData.dragover).to.equal(); + expect(eventsData.dragenter).to.equal(); + expect(eventsData.dragleave).to.equal(); + expect(eventsData.drop).to.equal(); + form + .fileupload('option', 'pasteZone') + .trigger($.Event('paste', eventObject)); + expect(eventsData.paste).to.equal(); + }); + + it('enable', function() { + var eventsData = {}; + form.fileupload('option', { + pasteZone: document, + dragover: function() { + eventsData.dragover = true; + }, + dragenter: function() { + eventsData.dragenter = true; + }, + dragleave: function() { + eventsData.dragleave = true; + }, + drop: function(e, data) { + eventsData.drop = data; + }, + paste: function(e, data) { + eventsData.paste = data; + }, + change: function() { + eventsData.change = true; + } + }); + form.fileupload('disable'); + form.fileupload('enable'); + form + .fileupload('option', 'fileInput') + .trigger($.Event('change', eventObject)); + expect(eventsData.change).to.equal(true); + form + .fileupload('option', 'dropZone') + .trigger($.Event('dragover', eventObject)) + .trigger($.Event('dragenter', eventObject)) + .trigger($.Event('dragleave', eventObject)) + .trigger($.Event('drop', eventObject)); + expect(eventsData.dragover).to.equal(true); + expect(eventsData.dragenter).to.equal(true); + expect(eventsData.dragleave).to.equal(true); + expect(eventsData.drop.files).to.deep.equal(files); + form + .fileupload('option', 'pasteZone') + .trigger($.Event('paste', eventObject)); + expect(eventsData.paste.files).to.deep.equal(files); + }); + + it('option', function() { + var eventsData = {}; + form.fileupload('option', 'drop', function(e, data) { + eventsData.drop = data; + }); + var dropZone = form + .fileupload('option', 'dropZone') + .trigger($.Event('drop', eventObject)); + expect(eventsData.drop.files).to.deep.equal(files); + delete eventsData.drop; + form.fileupload('option', 'dropZone', null); + dropZone.trigger($.Event('drop', eventObject)); + expect(eventsData.drop).to.equal(); + form.fileupload('option', { + dropZone: dropZone + }); + dropZone.trigger($.Event('drop', eventObject)); + expect(eventsData.drop.files).to.deep.equal(files); + }); + + it('add', function() { + var eventData = []; + form.fileupload('option', 'add', function(e, data) { + eventData.push(data); + }); + form.fileupload('add', { files: files }); + expect(eventData.length).to.equal(2); + expect(eventData[0].files[0]).to.equal(files[0]); + expect(eventData[1].files[0]).to.equal(files[1]); + }); + + it('send', function(done) { + this.slow(200); + form.fileupload('send', { files: files }).complete(function(result) { + var uploadedFiles = result.responseJSON.files; + expect(uploadedFiles.length).to.equal(2); + expect(uploadedFiles[0].type).to.equal(files[0].type); + expect(uploadedFiles[0].error).to.equal(); + expect(uploadedFiles[1].type).to.equal(files[1].type); + expect(uploadedFiles[1].error).to.equal(); + done(); + }); + }); + }); + + describe('Callbacks', function() { + var form; + + beforeEach(function() { + form = createFileuploadForm().fileupload({ dataType: 'json' }); + }); + + afterEach(function() { + form.remove(); + }); + + it('add', function() { + var eventData = []; + form.fileupload('option', 'add', function(e, data) { + eventData.push(data); + }); + form.fileupload('add', { files: files }); + expect(eventData.length).to.equal(2); + expect(eventData[0].files[0]).to.equal(files[0]); + expect(eventData[1].files[0]).to.equal(files[1]); + }); + + it('submit', function(done) { + this.slow(200); + var eventData = []; + form.fileupload('option', { + submit: function(e, data) { + eventData.push(data); + }, + stop: function() { + if (eventData.length < 2) return; + expect(eventData[0].files[0]).to.equal(files[0]); + expect(eventData[1].files[0]).to.equal(files[1]); + done(); + } + }); + form.fileupload('add', { files: files }); + }); + + it('send', function(done) { + this.slow(200); + var eventData = []; + form.fileupload('option', { + send: function(e, data) { + eventData.push(data); + }, + stop: function() { + expect(eventData.length).to.equal(1); + expect(eventData[0].files).to.deep.equal(files); + done(); + } + }); + form.fileupload('send', { files: files }); + }); + + it('done', function(done) { + this.slow(200); + var eventData = []; + form.fileupload('option', { + done: function(e, data) { + eventData.push(data); + }, + stop: function() { + if (eventData.length < 2) return; + expect(eventData[0].result.files.length).to.equal(1); + expect(eventData[1].result.files.length).to.equal(1); + done(); + } + }); + form.fileupload('add', { files: files }); + }); + + it('fail', function(done) { + this.slow(200); + var eventData = []; + form.fileupload('option', { + url: uploadURL + '404', + fail: function(e, data) { + eventData.push(data); + }, + stop: function() { + if (eventData.length < 2) return; + expect(eventData[0].result).to.equal(); + expect(eventData[1].result).to.equal(); + done(); + } + }); + form.fileupload('add', { files: files }); + }); + + it('always', function(done) { + this.slow(200); + var eventData = []; + form.fileupload('option', { + always: function(e, data) { + eventData.push(data); + }, + stop: function() { + if (eventData.length < 2) { + expect(eventData[0].result).to.equal(); + form.fileupload('add', { files: [fileGIF] }); + return; + } + expect(eventData[1].result.files.length).to.equal(1); + done(); + } + }); + form.fileupload('add', { files: [fileGIF], url: uploadURL + '404' }); + }); + + it('progress', function(done) { + this.slow(200); + var loaded; + var total; + form.fileupload('option', { + progress: function(e, data) { + loaded = data.loaded; + total = data.total; + expect(loaded).to.be.at.most(total); + }, + stop: function() { + expect(loaded).to.equal(total); + done(); + } + }); + form.fileupload('add', { files: [fileGIF] }); + }); + + it('progressall', function(done) { + this.slow(200); + var loaded; + var total; + var completed = 0; + form.fileupload('option', { + progressall: function(e, data) { + loaded = data.loaded; + total = data.total; + expect(loaded).to.be.at.most(total); + }, + always: function() { + completed++; + }, + stop: function() { + if (completed < 2) return; + expect(loaded).to.equal(total); + done(); + } + }); + form.fileupload('add', { files: files }); + }); + + it('start', function(done) { + this.slow(200); + var started; + form.fileupload('option', { + start: function() { + started = true; + }, + stop: function() { + expect(started).to.equal(true); + done(); + } + }); + form.fileupload('add', { files: [fileGIF] }); + }); + + it('stop', function(done) { + this.slow(200); + form.fileupload('option', { + stop: function() { + done(); + } + }); + form.fileupload('add', { files: [fileGIF] }); + }); + + it('dragover', function() { + var eventsData = {}; + form.fileupload('option', { + autoUpload: false, + dragover: function() { + eventsData.dragover = true; + } + }); + form + .fileupload('option', 'dropZone') + .trigger($.Event('dragover', eventObject)); + expect(eventsData.dragover).to.equal(true); + }); + + it('dragenter', function() { + var eventsData = {}; + form.fileupload('option', { + autoUpload: false, + dragenter: function() { + eventsData.dragenter = true; + } + }); + form + .fileupload('option', 'dropZone') + .trigger($.Event('dragenter', eventObject)); + expect(eventsData.dragenter).to.equal(true); + }); + + it('dragleave', function() { + var eventsData = {}; + form.fileupload('option', { + autoUpload: false, + dragleave: function() { + eventsData.dragleave = true; + } + }); + form + .fileupload('option', 'dropZone') + .trigger($.Event('dragleave', eventObject)); + expect(eventsData.dragleave).to.equal(true); + }); + + it('drop', function() { + var eventsData = {}; + form.fileupload('option', { + autoUpload: false, + drop: function(e, data) { + eventsData.drop = data; + } + }); + form + .fileupload('option', 'dropZone') + .trigger($.Event('drop', eventObject)); + expect(eventsData.drop.files).to.deep.equal(files); + }); + + it('paste', function() { + var eventsData = {}; + form.fileupload('option', { + autoUpload: false, + pasteZone: document, + paste: function(e, data) { + eventsData.paste = data; + } + }); + form + .fileupload('option', 'pasteZone') + .trigger($.Event('paste', eventObject)); + expect(eventsData.paste.files).to.deep.equal(files); + }); + + it('change', function() { + var eventsData = {}; + form.fileupload('option', { + autoUpload: false, + change: function() { + eventsData.change = true; + } + }); + form + .fileupload('option', 'fileInput') + .trigger($.Event('change', eventObject)); + expect(eventsData.change).to.equal(true); + }); + }); + + describe('Options', function() { + var form; + + beforeEach(function() { + form = createFileuploadForm(); + }); + + afterEach(function() { + form.remove(); + }); + + it('paramName', function(done) { + form.fileupload({ + send: function(e, data) { + expect(data.paramName[0]).to.equal( + form.fileupload('option', 'fileInput').prop('name') + ); + done(); + return false; + } + }); + form.fileupload('add', { files: [fileGIF] }); + }); + + it('url', function(done) { + form.fileupload({ + send: function(e, data) { + expect(data.url).to.equal(form.prop('action')); + done(); + return false; + } + }); + form.fileupload('add', { files: [fileGIF] }); + }); + + it('type', function(done) { + form.fileupload({ + type: 'PUT', + send: function(e, data) { + expect(data.type).to.equal('PUT'); + done(); + return false; + } + }); + form.fileupload('add', { files: [fileGIF] }); + }); + + it('replaceFileInput', function() { + form.fileupload(); + var fileInput = form.fileupload('option', 'fileInput'); + fileInput.trigger($.Event('change', eventObject)); + expect(form.fileupload('option', 'fileInput')[0]).to.not.equal( + fileInput[0] + ); + form.fileupload('option', 'replaceFileInput', false); + fileInput = form.fileupload('option', 'fileInput'); + fileInput.trigger($.Event('change', eventObject)); + expect(form.fileupload('option', 'fileInput')[0]).to.equal(fileInput[0]); + }); + + it('forceIframeTransport', function(done) { + form.fileupload({ + forceIframeTransport: 'PUT', + send: function(e, data) { + expect(data.dataType.substr(0, 6)).to.equal('iframe'); + done(); + return false; + } + }); + form.fileupload('add', { files: [fileGIF] }); + }); + + it('singleFileUploads', function(done) { + form.fileupload({ + singleFileUploads: false, + send: function(e, data) { + expect(data.files).to.deep.equal(files); + done(); + return false; + } + }); + form.fileupload('add', { files: files }); + }); + + it('limitMultiFileUploads', function(done) { + var completed = 0; + form.fileupload({ + singleFileUploads: false, + limitMultiFileUploads: 2, + send: function(e, data) { + expect(data.files).to.deep.equal(files); + completed++; + if (completed < 2) return; + done(); + return false; + } + }); + form.fileupload('add', { files: files.concat(files) }); + }); + + it('limitMultiFileUploadSize', function(done) { + var completed = 0; + form.fileupload({ + singleFileUploads: false, + limitMultiFileUploadSize: files[0].size + files[1].size, + limitMultiFileUploadSizeOverhead: 0, + send: function(e, data) { + expect(data.files).to.deep.equal(files); + completed++; + if (completed < 2) return; + done(); + return false; + } + }); + form.fileupload('add', { files: files.concat(files) }); + }); + + it('sequentialUploads', function(done) { + this.slow(400); + var completed = 0; + var events = []; + form.fileupload({ + sequentialUploads: true, + dataType: 'json', + send: function() { + events.push('send'); + }, + always: function() { + events.push('complete'); + completed++; + }, + stop: function() { + if (completed === 4) { + expect(events.join(',')).to.equal( + [ + 'send', + 'complete', + 'send', + 'complete', + 'send', + 'complete', + 'send', + 'complete' + ].join(',') + ); + done(); + } + } + }); + form.fileupload('add', { files: files.concat(files) }); + }); + + it('limitConcurrentUploads', function(done) { + this.slow(800); + var completed = 0; + var loadCount = 0; + form.fileupload({ + limitConcurrentUploads: 2, + dataType: 'json', + send: function() { + loadCount++; + expect(loadCount).to.be.at.most(2); + }, + always: function() { + completed++; + loadCount--; + }, + stop: function() { + if (completed === 8) { + done(); + } + } + }); + form.fileupload('add', { + files: files + .concat(files) + .concat(files) + .concat(files) + }); + }); + + it('multipart', function(done) { + form.fileupload({ + multipart: false, + send: function(e, data) { + expect(data.contentType).to.equal(fileGIF.type); + expect(data.headers['Content-Disposition']).to.equal( + 'attachment; filename="' + fileGIF.name + '"' + ); + done(); + return false; + } + }); + form.fileupload('add', { files: [fileGIF] }); + }); + + it('uniqueFilenames', function(done) { + form.fileupload({ + uniqueFilenames: {}, + send: function(e, data) { + var formFiles = data.data.getAll('files[]'); + expect(formFiles[0].name).to.equal(fileGIF.name); + expect(formFiles[1].name).to.equal( + fileGIF.name.replace('.gif', ' (1).gif') + ); + expect(formFiles[2].name).to.equal( + fileGIF.name.replace('.gif', ' (2).gif') + ); + done(); + return false; + } + }); + form.fileupload('send', { files: [fileGIF, fileGIF, fileGIF] }); + }); + + it('maxChunkSize', function(done) { + this.slow(400); + var events = []; + form.fileupload({ + maxChunkSize: 32, + dataType: 'json', + chunkbeforesend: function() { + events.push('chunkbeforesend'); + }, + chunksend: function() { + events.push('chunksend'); + }, + chunkdone: function() { + events.push('chunkdone'); + }, + done: function(e, data) { + var uploadedFile = data.result.files[0]; + expect(uploadedFile.type).to.equal(fileGIF.type); + expect(uploadedFile.size).to.equal(fileGIF.size); + }, + stop: function() { + expect(events.join(',')).to.equal( + [ + 'chunkbeforesend', + 'chunksend', + 'chunkdone', + 'chunkbeforesend', + 'chunksend', + 'chunkdone', + 'chunkbeforesend', + 'chunksend', + 'chunkdone', + 'chunkbeforesend', + 'chunksend', + 'chunkdone' + ].join(',') + ); + done(); + } + }); + form.fileupload('send', { files: [fileGIF] }); + }); + + it('acceptFileTypes', function(done) { + var processData; + form.fileupload({ + acceptFileTypes: /^image\/gif$/, + singleFileUploads: false, + processalways: function(e, data) { + processData = data; + }, + processstop: function() { + expect(processData.files[0].error).to.equal(); + expect(processData.files[1].error).to.equal( + form.fileupload('option').i18n('acceptFileTypes') + ); + done(); + } + }); + form.fileupload('add', { files: files }); + }); + + it('maxFileSize', function(done) { + var processData; + form.fileupload({ + maxFileSize: 200, + singleFileUploads: false, + processalways: function(e, data) { + processData = data; + }, + processstop: function() { + expect(processData.files[0].error).to.equal(); + expect(processData.files[1].error).to.equal( + form.fileupload('option').i18n('maxFileSize') + ); + done(); + } + }); + form.fileupload('add', { files: files }); + }); + + it('minFileSize', function(done) { + var processData; + form.fileupload({ + minFileSize: 200, + singleFileUploads: false, + processalways: function(e, data) { + processData = data; + }, + processstop: function() { + expect(processData.files[0].error).to.equal( + form.fileupload('option').i18n('minFileSize') + ); + expect(processData.files[1].error).to.equal(); + done(); + } + }); + form.fileupload('add', { files: files }); + }); + + it('maxNumberOfFiles', function(done) { + var processData; + form.fileupload({ + maxNumberOfFiles: 2, + getNumberOfFiles: function() { + return 2; + }, + singleFileUploads: false, + processalways: function(e, data) { + processData = data; + }, + processstop: function() { + expect(processData.files[0].error).to.equal( + form.fileupload('option').i18n('maxNumberOfFiles') + ); + expect(processData.files[1].error).to.equal( + form.fileupload('option').i18n('maxNumberOfFiles') + ); + done(); + } + }); + form.fileupload('add', { files: files }); + }); + }); +})(this.chai.expect, this.jQuery); |