1289 lines
		
	
	
		
			41 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			1289 lines
		
	
	
		
			41 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
|  * jQuery File Upload Plugin Test 9.4.0
 | |
|  * https://github.com/blueimp/jQuery-File-Upload
 | |
|  *
 | |
|  * Copyright 2010, Sebastian Tschan
 | |
|  * https://blueimp.net
 | |
|  *
 | |
|  * Licensed under the MIT license:
 | |
|  * http://www.opensource.org/licenses/MIT
 | |
|  */
 | |
| 
 | |
| /* global $, QUnit, window, document, expect, module, test, asyncTest, start, ok, strictEqual, notStrictEqual */
 | |
| 
 | |
| $(function () {
 | |
|     // jshint nomen:false
 | |
|     'use strict';
 | |
| 
 | |
|     QUnit.done = function () {
 | |
|         // Delete all uploaded files:
 | |
|         var url = $('#fileupload').prop('action');
 | |
|         $.getJSON(url, function (result) {
 | |
|             $.each(result.files, function (index, file) {
 | |
|                 $.ajax({
 | |
|                     url: url + '?file=' + encodeURIComponent(file.name),
 | |
|                     type: 'DELETE'
 | |
|                 });
 | |
|             });
 | |
|         });
 | |
|     };
 | |
| 
 | |
|     var lifecycle = {
 | |
|             setup: function () {
 | |
|                 // Set the .fileupload method to the basic widget method:
 | |
|                 $.widget('blueimp.fileupload', window.testBasicWidget, {});
 | |
|             },
 | |
|             teardown: function () {
 | |
|                 // Remove all remaining event listeners:
 | |
|                 $(document).unbind();
 | |
|             }
 | |
|         },
 | |
|         lifecycleUI = {
 | |
|             setup: function () {
 | |
|                 // Set the .fileupload method to the UI widget method:
 | |
|                 $.widget('blueimp.fileupload', window.testUIWidget, {});
 | |
|             },
 | |
|             teardown: function () {
 | |
|                 // Remove all remaining event listeners:
 | |
|                 $(document).unbind();
 | |
|             }
 | |
|         };
 | |
| 
 | |
|     module('Initialization', lifecycle);
 | |
| 
 | |
|     test('Widget initialization', function () {
 | |
|         var fu = $('#fileupload').fileupload();
 | |
|         ok(fu.data('blueimp-fileupload') || fu.data('fileupload'));
 | |
|     });
 | |
| 
 | |
|     test('Data attribute options', function () {
 | |
|         $('#fileupload').attr('data-url', 'http://example.org');
 | |
|         $('#fileupload').fileupload();
 | |
|         strictEqual(
 | |
|             $('#fileupload').fileupload('option', 'url'),
 | |
|             'http://example.org'
 | |
|         );
 | |
|     });
 | |
| 
 | |
|     test('File input initialization', function () {
 | |
|         var fu = $('#fileupload').fileupload();
 | |
|         ok(
 | |
|             fu.fileupload('option', 'fileInput').length,
 | |
|             'File input field inside of the widget'
 | |
|         );
 | |
|         ok(
 | |
|             fu.fileupload('option', 'fileInput').length,
 | |
|             'Widget element as file input field'
 | |
|         );
 | |
|     });
 | |
| 
 | |
|     test('Drop zone initialization', function () {
 | |
|         ok($('#fileupload').fileupload()
 | |
|             .fileupload('option', 'dropZone').length);
 | |
|     });
 | |
| 
 | |
|     test('Paste zone initialization', function () {
 | |
|         ok($('#fileupload').fileupload()
 | |
|             .fileupload('option', 'pasteZone').length);
 | |
|     });
 | |
| 
 | |
|     test('Event listeners initialization', function () {
 | |
|         expect(
 | |
|             $.support.xhrFormDataFileUpload ? 4 : 1
 | |
|         );
 | |
|         var eo = {
 | |
|                 originalEvent: {
 | |
|                     dataTransfer: {files: [{}], types: ['Files']},
 | |
|                     clipboardData: {items: [{}]}
 | |
|                 }
 | |
|             },
 | |
|             fu = $('#fileupload').fileupload({
 | |
|                 dragover: function () {
 | |
|                     ok(true, 'Triggers dragover callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 drop: function () {
 | |
|                     ok(true, 'Triggers drop callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 paste: function () {
 | |
|                     ok(true, 'Triggers paste callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 change: function () {
 | |
|                     ok(true, 'Triggers change callback');
 | |
|                     return false;
 | |
|                 }
 | |
|             }),
 | |
|             fileInput = fu.fileupload('option', 'fileInput'),
 | |
|             dropZone = fu.fileupload('option', 'dropZone'),
 | |
|             pasteZone = fu.fileupload('option', 'pasteZone');
 | |
|         fileInput.trigger($.Event('change', eo));
 | |
|         dropZone.trigger($.Event('dragover', eo));
 | |
|         dropZone.trigger($.Event('drop', eo));
 | |
|         pasteZone.trigger($.Event('paste', eo));
 | |
|     });
 | |
| 
 | |
|     module('API', lifecycle);
 | |
| 
 | |
|     test('destroy', function () {
 | |
|         expect(4);
 | |
|         var eo = {
 | |
|                 originalEvent: {
 | |
|                     dataTransfer: {files: [{}], types: ['Files']},
 | |
|                     clipboardData: {items: [{}]}
 | |
|                 }
 | |
|             },
 | |
|             options = {
 | |
|                 dragover: function () {
 | |
|                     ok(true, 'Triggers dragover callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 drop: function () {
 | |
|                     ok(true, 'Triggers drop callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 paste: function () {
 | |
|                     ok(true, 'Triggers paste callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 change: function () {
 | |
|                     ok(true, 'Triggers change callback');
 | |
|                     return false;
 | |
|                 }
 | |
|             },
 | |
|             fu = $('#fileupload').fileupload(options),
 | |
|             fileInput = fu.fileupload('option', 'fileInput'),
 | |
|             dropZone = fu.fileupload('option', 'dropZone'),
 | |
|             pasteZone = fu.fileupload('option', 'pasteZone');
 | |
|         dropZone.bind('dragover', options.dragover);
 | |
|         dropZone.bind('drop', options.drop);
 | |
|         pasteZone.bind('paste', options.paste);
 | |
|         fileInput.bind('change', options.change);
 | |
|         fu.fileupload('destroy');
 | |
|         fileInput.trigger($.Event('change', eo));
 | |
|         dropZone.trigger($.Event('dragover', eo));
 | |
|         dropZone.trigger($.Event('drop', eo));
 | |
|         pasteZone.trigger($.Event('paste', eo));
 | |
|     });
 | |
| 
 | |
|     test('disable/enable', function () {
 | |
|         expect(
 | |
|             $.support.xhrFormDataFileUpload ? 4 : 1
 | |
|         );
 | |
|         var eo = {
 | |
|                 originalEvent: {
 | |
|                     dataTransfer: {files: [{}], types: ['Files']},
 | |
|                     clipboardData: {items: [{}]}
 | |
|                 }
 | |
|             },
 | |
|             fu = $('#fileupload').fileupload({
 | |
|                 dragover: function () {
 | |
|                     ok(true, 'Triggers dragover callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 drop: function () {
 | |
|                     ok(true, 'Triggers drop callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 paste: function () {
 | |
|                     ok(true, 'Triggers paste callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 change: function () {
 | |
|                     ok(true, 'Triggers change callback');
 | |
|                     return false;
 | |
|                 }
 | |
|             }),
 | |
|             fileInput = fu.fileupload('option', 'fileInput'),
 | |
|             dropZone = fu.fileupload('option', 'dropZone'),
 | |
|             pasteZone = fu.fileupload('option', 'pasteZone');
 | |
|         fu.fileupload('disable');
 | |
|         fileInput.trigger($.Event('change', eo));
 | |
|         dropZone.trigger($.Event('dragover', eo));
 | |
|         dropZone.trigger($.Event('drop', eo));
 | |
|         pasteZone.trigger($.Event('paste', eo));
 | |
|         fu.fileupload('enable');
 | |
|         fileInput.trigger($.Event('change', eo));
 | |
|         dropZone.trigger($.Event('dragover', eo));
 | |
|         dropZone.trigger($.Event('drop', eo));
 | |
|         pasteZone.trigger($.Event('paste', eo));
 | |
|     });
 | |
| 
 | |
|     test('option', function () {
 | |
|         expect(
 | |
|             $.support.xhrFormDataFileUpload ? 10 : 7
 | |
|         );
 | |
|         var eo = {
 | |
|                 originalEvent: {
 | |
|                     dataTransfer: {files: [{}], types: ['Files']},
 | |
|                     clipboardData: {items: [{}]}
 | |
|                 }
 | |
|             },
 | |
|             fu = $('#fileupload').fileupload({
 | |
|                 dragover: function () {
 | |
|                     ok(true, 'Triggers dragover callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 drop: function () {
 | |
|                     ok(true, 'Triggers drop callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 paste: function () {
 | |
|                     ok(true, 'Triggers paste callback');
 | |
|                     return false;
 | |
|                 },
 | |
|                 change: function () {
 | |
|                     ok(true, 'Triggers change callback');
 | |
|                     return false;
 | |
|                 }
 | |
|             }),
 | |
|             fileInput = fu.fileupload('option', 'fileInput'),
 | |
|             dropZone = fu.fileupload('option', 'dropZone'),
 | |
|             pasteZone = fu.fileupload('option', 'pasteZone');
 | |
|         fu.fileupload('option', 'fileInput', null);
 | |
|         fu.fileupload('option', 'dropZone', null);
 | |
|         fu.fileupload('option', 'pasteZone', null);
 | |
|         fileInput.trigger($.Event('change', eo));
 | |
|         dropZone.trigger($.Event('dragover', eo));
 | |
|         dropZone.trigger($.Event('drop', eo));
 | |
|         pasteZone.trigger($.Event('paste', eo));
 | |
|         fu.fileupload('option', 'dropZone', 'body');
 | |
|         strictEqual(
 | |
|             fu.fileupload('option', 'dropZone')[0],
 | |
|             document.body,
 | |
|             'Allow a query string as parameter for the dropZone option'
 | |
|         );
 | |
|         fu.fileupload('option', 'dropZone', document);
 | |
|         strictEqual(
 | |
|             fu.fileupload('option', 'dropZone')[0],
 | |
|             document,
 | |
|             'Allow a document element as parameter for the dropZone option'
 | |
|         );
 | |
|         fu.fileupload('option', 'pasteZone', 'body');
 | |
|         strictEqual(
 | |
|             fu.fileupload('option', 'pasteZone')[0],
 | |
|             document.body,
 | |
|             'Allow a query string as parameter for the pasteZone option'
 | |
|         );
 | |
|         fu.fileupload('option', 'pasteZone', document);
 | |
|         strictEqual(
 | |
|             fu.fileupload('option', 'pasteZone')[0],
 | |
|             document,
 | |
|             'Allow a document element as parameter for the pasteZone option'
 | |
|         );
 | |
|         fu.fileupload('option', 'fileInput', ':file');
 | |
|         strictEqual(
 | |
|             fu.fileupload('option', 'fileInput')[0],
 | |
|             $(':file')[0],
 | |
|             'Allow a query string as parameter for the fileInput option'
 | |
|         );
 | |
|         fu.fileupload('option', 'fileInput', $(':file')[0]);
 | |
|         strictEqual(
 | |
|             fu.fileupload('option', 'fileInput')[0],
 | |
|             $(':file')[0],
 | |
|             'Allow a document element as parameter for the fileInput option'
 | |
|         );
 | |
|         fu.fileupload('option', 'fileInput', fileInput);
 | |
|         fu.fileupload('option', 'dropZone', dropZone);
 | |
|         fu.fileupload('option', 'pasteZone', pasteZone);
 | |
|         fileInput.trigger($.Event('change', eo));
 | |
|         dropZone.trigger($.Event('dragover', eo));
 | |
|         dropZone.trigger($.Event('drop', eo));
 | |
|         pasteZone.trigger($.Event('paste', eo));
 | |
|     });
 | |
| 
 | |
|     asyncTest('add', function () {
 | |
|         expect(2);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             add: function (e, data) {
 | |
|                 strictEqual(
 | |
|                     data.files[0].name,
 | |
|                     param.files[0].name,
 | |
|                     'Triggers add callback'
 | |
|                 );
 | |
|             }
 | |
|         }).fileupload('add', param).fileupload(
 | |
|             'option',
 | |
|             'add',
 | |
|             function (e, data) {
 | |
|                 data.submit().complete(function () {
 | |
|                     ok(true, 'data.submit() Returns a jqXHR object');
 | |
|                     start();
 | |
|                 });
 | |
|             }
 | |
|         ).fileupload('add', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('send', function () {
 | |
|         expect(3);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             send: function (e, data) {
 | |
|                 strictEqual(
 | |
|                     data.files[0].name,
 | |
|                     'test',
 | |
|                     'Triggers send callback'
 | |
|                 );
 | |
|             }
 | |
|         }).fileupload('send', param).fail(function () {
 | |
|             ok(true, 'Allows to abort the request');
 | |
|         }).complete(function () {
 | |
|             ok(true, 'Returns a jqXHR object');
 | |
|             start();
 | |
|         }).abort();
 | |
|     });
 | |
| 
 | |
|     module('Callbacks', lifecycle);
 | |
| 
 | |
|     asyncTest('add', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             add: function () {
 | |
|                 ok(true, 'Triggers add callback');
 | |
|                 start();
 | |
|             }
 | |
|         }).fileupload('add', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('submit', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             submit: function () {
 | |
|                 ok(true, 'Triggers submit callback');
 | |
|                 start();
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('add', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('send', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             send: function () {
 | |
|                 ok(true, 'Triggers send callback');
 | |
|                 start();
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('done', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             done: function () {
 | |
|                 ok(true, 'Triggers done callback');
 | |
|                 start();
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('fail', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]},
 | |
|             fu = $('#fileupload').fileupload({
 | |
|                 url: '404',
 | |
|                 fail: function () {
 | |
|                     ok(true, 'Triggers fail callback');
 | |
|                     start();
 | |
|                 }
 | |
|             });
 | |
|         (fu.data('blueimp-fileupload') || fu.data('fileupload'))
 | |
|             ._isXHRUpload = function () {
 | |
|                 return true;
 | |
|             };
 | |
|         fu.fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('always', function () {
 | |
|         expect(2);
 | |
|         var param = {files: [{name: 'test'}]},
 | |
|             counter = 0,
 | |
|             fu = $('#fileupload').fileupload({
 | |
|                 always: function () {
 | |
|                     ok(true, 'Triggers always callback');
 | |
|                     if (counter === 1) {
 | |
|                         start();
 | |
|                     } else {
 | |
|                         counter += 1;
 | |
|                     }
 | |
|                 }
 | |
|             });
 | |
|         (fu.data('blueimp-fileupload') || fu.data('fileupload'))
 | |
|             ._isXHRUpload = function () {
 | |
|                 return true;
 | |
|             };
 | |
|         fu.fileupload('add', param).fileupload(
 | |
|             'option',
 | |
|             'url',
 | |
|             '404'
 | |
|         ).fileupload('add', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('progress', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]},
 | |
|             counter = 0;
 | |
|         $('#fileupload').fileupload({
 | |
|             forceIframeTransport: true,
 | |
|             progress: function () {
 | |
|                 ok(true, 'Triggers progress callback');
 | |
|                 if (counter === 0) {
 | |
|                     start();
 | |
|                 } else {
 | |
|                     counter += 1;
 | |
|                 }
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('progressall', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]},
 | |
|             counter = 0;
 | |
|         $('#fileupload').fileupload({
 | |
|             forceIframeTransport: true,
 | |
|             progressall: function () {
 | |
|                 ok(true, 'Triggers progressall callback');
 | |
|                 if (counter === 0) {
 | |
|                     start();
 | |
|                 } else {
 | |
|                     counter += 1;
 | |
|                 }
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('start', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: '1'}, {name: '2'}]},
 | |
|             active = 0;
 | |
|         $('#fileupload').fileupload({
 | |
|             send: function () {
 | |
|                 active += 1;
 | |
|             },
 | |
|             start: function () {
 | |
|                 ok(!active, 'Triggers start callback before uploads');
 | |
|                 start();
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('stop', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: '1'}, {name: '2'}]},
 | |
|             active = 0;
 | |
|         $('#fileupload').fileupload({
 | |
|             send: function () {
 | |
|                 active += 1;
 | |
|             },
 | |
|             always: function () {
 | |
|                 active -= 1;
 | |
|             },
 | |
|             stop: function () {
 | |
|                 ok(!active, 'Triggers stop callback after uploads');
 | |
|                 start();
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     test('change', function () {
 | |
|         var fu = $('#fileupload').fileupload(),
 | |
|             fuo = fu.data('blueimp-fileupload') || fu.data('fileupload'),
 | |
|             fileInput = fu.fileupload('option', 'fileInput');
 | |
|         expect(2);
 | |
|         fu.fileupload({
 | |
|             change: function (e, data) {
 | |
|                 ok(true, 'Triggers change callback');
 | |
|                 strictEqual(
 | |
|                     data.files.length,
 | |
|                     0,
 | |
|                     'Returns empty files list'
 | |
|                 );
 | |
|             },
 | |
|             add: $.noop
 | |
|         });
 | |
|         fuo._onChange({
 | |
|             data: {fileupload: fuo},
 | |
|             target: fileInput[0]
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     test('paste', function () {
 | |
|         var fu = $('#fileupload').fileupload(),
 | |
|             fuo = fu.data('blueimp-fileupload') || fu.data('fileupload');
 | |
|         expect(1);
 | |
|         fu.fileupload({
 | |
|             paste: function () {
 | |
|                 ok(true, 'Triggers paste callback');
 | |
|             },
 | |
|             add: $.noop
 | |
|         });
 | |
|         fuo._onPaste({
 | |
|             data: {fileupload: fuo},
 | |
|             originalEvent: {
 | |
|                 dataTransfer: {files: [{}]},
 | |
|                 clipboardData: {items: [{}]}
 | |
|             },
 | |
|             preventDefault: $.noop
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     test('drop', function () {
 | |
|         var fu = $('#fileupload').fileupload(),
 | |
|             fuo = fu.data('blueimp-fileupload') || fu.data('fileupload');
 | |
|         expect(1);
 | |
|         fu.fileupload({
 | |
|             drop: function () {
 | |
|                 ok(true, 'Triggers drop callback');
 | |
|             },
 | |
|             add: $.noop
 | |
|         });
 | |
|         fuo._onDrop({
 | |
|             data: {fileupload: fuo},
 | |
|             originalEvent: {
 | |
|                 dataTransfer: {files: [{}]},
 | |
|                 clipboardData: {items: [{}]}
 | |
|             },
 | |
|             preventDefault: $.noop
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     test('dragover', function () {
 | |
|         var fu = $('#fileupload').fileupload(),
 | |
|             fuo = fu.data('blueimp-fileupload') || fu.data('fileupload');
 | |
|         expect(1);
 | |
|         fu.fileupload({
 | |
|             dragover: function () {
 | |
|                 ok(true, 'Triggers dragover callback');
 | |
|             },
 | |
|             add: $.noop
 | |
|         });
 | |
|         fuo._onDragOver({
 | |
|             data: {fileupload: fuo},
 | |
|             originalEvent: {dataTransfer: {types: ['Files']}},
 | |
|             preventDefault: $.noop
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     module('Options', lifecycle);
 | |
| 
 | |
|     test('paramName', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             paramName: null,
 | |
|             send: function (e, data) {
 | |
|                 strictEqual(
 | |
|                     data.paramName[0],
 | |
|                     data.fileInput.prop('name'),
 | |
|                     'Takes paramName from file input field if not set'
 | |
|                 );
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     test('url', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             url: null,
 | |
|             send: function (e, data) {
 | |
|                 strictEqual(
 | |
|                     data.url,
 | |
|                     $(data.fileInput.prop('form')).prop('action'),
 | |
|                     'Takes url from form action if not set'
 | |
|                 );
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     test('type', function () {
 | |
|         expect(2);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             type: null,
 | |
|             send: function (e, data) {
 | |
|                 strictEqual(
 | |
|                     data.type,
 | |
|                     'POST',
 | |
|                     'Request type is "POST" if not set to "PUT"'
 | |
|                 );
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|         $('#fileupload').fileupload({
 | |
|             type: 'PUT',
 | |
|             send: function (e, data) {
 | |
|                 strictEqual(
 | |
|                     data.type,
 | |
|                     'PUT',
 | |
|                     'Request type is "PUT" if set to "PUT"'
 | |
|                 );
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     test('replaceFileInput', function () {
 | |
|         var fu = $('#fileupload').fileupload(),
 | |
|             fuo = fu.data('blueimp-fileupload') || fu.data('fileupload'),
 | |
|             fileInput = fu.fileupload('option', 'fileInput'),
 | |
|             fileInputElement = fileInput[0];
 | |
|         expect(2);
 | |
|         fu.fileupload({
 | |
|             replaceFileInput: false,
 | |
|             change: function () {
 | |
|                 strictEqual(
 | |
|                     fu.fileupload('option', 'fileInput')[0],
 | |
|                     fileInputElement,
 | |
|                     'Keeps file input with replaceFileInput: false'
 | |
|                 );
 | |
|             },
 | |
|             add: $.noop
 | |
|         });
 | |
|         fuo._onChange({
 | |
|             data: {fileupload: fuo},
 | |
|             target: fileInput[0]
 | |
|         });
 | |
|         fu.fileupload({
 | |
|             replaceFileInput: true,
 | |
|             change: function () {
 | |
|                 notStrictEqual(
 | |
|                     fu.fileupload('option', 'fileInput')[0],
 | |
|                     fileInputElement,
 | |
|                     'Replaces file input with replaceFileInput: true'
 | |
|                 );
 | |
|             },
 | |
|             add: $.noop
 | |
|         });
 | |
|         fuo._onChange({
 | |
|             data: {fileupload: fuo},
 | |
|             target: fileInput[0]
 | |
|         });
 | |
|     });
 | |
| 
 | |
|     asyncTest('forceIframeTransport', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             forceIframeTransport: true,
 | |
|             done: function (e, data) {
 | |
|                 strictEqual(
 | |
|                     data.dataType.substr(0, 6),
 | |
|                     'iframe',
 | |
|                     'Iframe Transport is used'
 | |
|                 );
 | |
|                 start();
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     test('singleFileUploads', function () {
 | |
|         expect(3);
 | |
|         var fu = $('#fileupload').fileupload(),
 | |
|             param = {files: [{name: '1'}, {name: '2'}]},
 | |
|             index = 1;
 | |
|         (fu.data('blueimp-fileupload') || fu.data('fileupload'))
 | |
|             ._isXHRUpload = function () {
 | |
|                 return true;
 | |
|             };
 | |
|         $('#fileupload').fileupload({
 | |
|             singleFileUploads: true,
 | |
|             add: function () {
 | |
|                 ok(true, 'Triggers callback number ' + index.toString());
 | |
|                 index += 1;
 | |
|             }
 | |
|         }).fileupload('add', param).fileupload(
 | |
|             'option',
 | |
|             'singleFileUploads',
 | |
|             false
 | |
|         ).fileupload('add', param);
 | |
|     });
 | |
| 
 | |
|     test('limitMultiFileUploads', function () {
 | |
|         expect(3);
 | |
|         var fu = $('#fileupload').fileupload(),
 | |
|             param = {files: [
 | |
|                 {name: '1'},
 | |
|                 {name: '2'},
 | |
|                 {name: '3'},
 | |
|                 {name: '4'},
 | |
|                 {name: '5'}
 | |
|             ]},
 | |
|             index = 1;
 | |
|         (fu.data('blueimp-fileupload') || fu.data('fileupload'))
 | |
|             ._isXHRUpload = function () {
 | |
|                 return true;
 | |
|             };
 | |
|         $('#fileupload').fileupload({
 | |
|             singleFileUploads: false,
 | |
|             limitMultiFileUploads: 2,
 | |
|             add: function () {
 | |
|                 ok(true, 'Triggers callback number ' + index.toString());
 | |
|                 index += 1;
 | |
|             }
 | |
|         }).fileupload('add', param);
 | |
|     });
 | |
| 
 | |
|     test('limitMultiFileUploadSize', function () {
 | |
|         expect(7);
 | |
|         var fu = $('#fileupload').fileupload(),
 | |
|             param = {files: [
 | |
|                 {name: '1-1', size: 100000},
 | |
|                 {name: '1-2', size: 40000},
 | |
|                 {name: '2-1', size: 100000},
 | |
|                 {name: '3-1', size: 50000},
 | |
|                 {name: '3-2', size: 40000},
 | |
|                 {name: '4-1', size: 45000} // New request due to limitMultiFileUploads
 | |
|             ]},
 | |
|             param2 = {files: [
 | |
|                 {name: '5-1'},
 | |
|                 {name: '5-2'},
 | |
|                 {name: '6-1'},
 | |
|                 {name: '6-2'},
 | |
|                 {name: '7-1'}
 | |
|             ]},
 | |
|             index = 1;
 | |
|         (fu.data('blueimp-fileupload') || fu.data('fileupload'))
 | |
|             ._isXHRUpload = function () {
 | |
|                 return true;
 | |
|             };
 | |
|         $('#fileupload').fileupload({
 | |
|             singleFileUploads: false,
 | |
|             limitMultiFileUploads: 2,
 | |
|             limitMultiFileUploadSize: 150000,
 | |
|             limitMultiFileUploadSizeOverhead: 5000,
 | |
|             add: function () {
 | |
|                 ok(true, 'Triggers callback number ' + index.toString());
 | |
|                 index += 1;
 | |
|             }
 | |
|         }).fileupload('add', param).fileupload('add', param2);
 | |
|     });
 | |
| 
 | |
|     asyncTest('sequentialUploads', function () {
 | |
|         expect(6);
 | |
|         var param = {files: [
 | |
|                 {name: '1'},
 | |
|                 {name: '2'},
 | |
|                 {name: '3'},
 | |
|                 {name: '4'},
 | |
|                 {name: '5'},
 | |
|                 {name: '6'}
 | |
|             ]},
 | |
|             addIndex = 0,
 | |
|             sendIndex = 0,
 | |
|             loadIndex = 0,
 | |
|             fu = $('#fileupload').fileupload({
 | |
|                 sequentialUploads: true,
 | |
|                 add: function (e, data) {
 | |
|                     addIndex += 1;
 | |
|                     if (addIndex === 4) {
 | |
|                         data.submit().abort();
 | |
|                     } else {
 | |
|                         data.submit();
 | |
|                     }
 | |
|                 },
 | |
|                 send: function () {
 | |
|                     sendIndex += 1;
 | |
|                 },
 | |
|                 done: function () {
 | |
|                     loadIndex += 1;
 | |
|                     strictEqual(sendIndex, loadIndex, 'upload in order');
 | |
|                 },
 | |
|                 fail: function (e, data) {
 | |
|                     strictEqual(data.errorThrown, 'abort', 'upload aborted');
 | |
|                 },
 | |
|                 stop: function () {
 | |
|                     start();
 | |
|                 }
 | |
|             });
 | |
|         (fu.data('blueimp-fileupload') || fu.data('fileupload'))
 | |
|             ._isXHRUpload = function () {
 | |
|                 return true;
 | |
|             };
 | |
|         fu.fileupload('add', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('limitConcurrentUploads', function () {
 | |
|         expect(12);
 | |
|         var param = {files: [
 | |
|                 {name: '1'},
 | |
|                 {name: '2'},
 | |
|                 {name: '3'},
 | |
|                 {name: '4'},
 | |
|                 {name: '5'},
 | |
|                 {name: '6'},
 | |
|                 {name: '7'},
 | |
|                 {name: '8'},
 | |
|                 {name: '9'},
 | |
|                 {name: '10'},
 | |
|                 {name: '11'},
 | |
|                 {name: '12'}
 | |
|             ]},
 | |
|             addIndex = 0,
 | |
|             sendIndex = 0,
 | |
|             loadIndex = 0,
 | |
|             fu = $('#fileupload').fileupload({
 | |
|                 limitConcurrentUploads: 3,
 | |
|                 add: function (e, data) {
 | |
|                     addIndex += 1;
 | |
|                     if (addIndex === 4) {
 | |
|                         data.submit().abort();
 | |
|                     } else {
 | |
|                         data.submit();
 | |
|                     }
 | |
|                 },
 | |
|                 send: function () {
 | |
|                     sendIndex += 1;
 | |
|                 },
 | |
|                 done: function () {
 | |
|                     loadIndex += 1;
 | |
|                     ok(sendIndex - loadIndex < 3);
 | |
|                 },
 | |
|                 fail: function (e, data) {
 | |
|                     strictEqual(data.errorThrown, 'abort', 'upload aborted');
 | |
|                 },
 | |
|                 stop: function () {
 | |
|                     start();
 | |
|                 }
 | |
|             });
 | |
|         (fu.data('blueimp-fileupload') || fu.data('fileupload'))
 | |
|             ._isXHRUpload = function () {
 | |
|                 return true;
 | |
|             };
 | |
|         fu.fileupload('add', param);
 | |
|     });
 | |
| 
 | |
|     if ($.support.xhrFileUpload) {
 | |
|         asyncTest('multipart', function () {
 | |
|             expect(2);
 | |
|             var param = {files: [{
 | |
|                     name: 'test.png',
 | |
|                     size: 123,
 | |
|                     type: 'image/png'
 | |
|                 }]},
 | |
|                 fu = $('#fileupload').fileupload({
 | |
|                     multipart: false,
 | |
|                     always: function (e, data) {
 | |
|                         strictEqual(
 | |
|                             data.contentType,
 | |
|                             param.files[0].type,
 | |
|                             'non-multipart upload sets file type as contentType'
 | |
|                         );
 | |
|                         strictEqual(
 | |
|                             data.headers['Content-Disposition'],
 | |
|                             'attachment; filename="' + param.files[0].name + '"',
 | |
|                             'non-multipart upload sets Content-Disposition header'
 | |
|                         );
 | |
|                         start();
 | |
|                     }
 | |
|                 });
 | |
|             fu.fileupload('send', param);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     module('UI Initialization', lifecycleUI);
 | |
| 
 | |
|     test('Widget initialization', function () {
 | |
|         var fu = $('#fileupload').fileupload();
 | |
|         ok(fu.data('blueimp-fileupload') || fu.data('fileupload'));
 | |
|         ok(
 | |
|             $('#fileupload').fileupload('option', 'uploadTemplate').length,
 | |
|             'Initialized upload template'
 | |
|         );
 | |
|         ok(
 | |
|             $('#fileupload').fileupload('option', 'downloadTemplate').length,
 | |
|             'Initialized download template'
 | |
|         );
 | |
|     });
 | |
| 
 | |
|     test('Buttonbar event listeners', function () {
 | |
|         var buttonbar = $('#fileupload .fileupload-buttonbar'),
 | |
|             files = [{name: 'test'}];
 | |
|         expect(4);
 | |
|         $('#fileupload').fileupload({
 | |
|             send: function () {
 | |
|                 ok(true, 'Started file upload via global start button');
 | |
|             },
 | |
|             fail: function (e, data) {
 | |
|                 ok(true, 'Canceled file upload via global cancel button');
 | |
|                 data.context.remove();
 | |
|             },
 | |
|             destroy: function () {
 | |
|                 ok(true, 'Delete action called via global delete button');
 | |
|             }
 | |
|         });
 | |
|         $('#fileupload').fileupload('add', {files: files});
 | |
|         buttonbar.find('.cancel').click();
 | |
|         $('#fileupload').fileupload('add', {files: files});
 | |
|         buttonbar.find('.start').click();
 | |
|         buttonbar.find('.cancel').click();
 | |
|         files[0].deleteUrl = 'http://example.org/banana.jpg';
 | |
|         ($('#fileupload').data('blueimp-fileupload') ||
 | |
|                 $('#fileupload').data('fileupload'))
 | |
|             ._renderDownload(files)
 | |
|             .appendTo($('#fileupload .files')).show()
 | |
|             .find('.toggle').click();
 | |
|         buttonbar.find('.delete').click();
 | |
|     });
 | |
| 
 | |
|     module('UI API', lifecycleUI);
 | |
| 
 | |
|     test('destroy', function () {
 | |
|         var buttonbar = $('#fileupload .fileupload-buttonbar'),
 | |
|             files = [{name: 'test'}];
 | |
|         expect(1);
 | |
|         $('#fileupload').fileupload({
 | |
|             send: function () {
 | |
|                 ok(true, 'This test should not run');
 | |
|                 return false;
 | |
|             }
 | |
|         })
 | |
|             .fileupload('add', {files: files})
 | |
|             .fileupload('destroy');
 | |
|         buttonbar.find('.start').click(function () {
 | |
|             ok(true, 'Clicked global start button');
 | |
|             return false;
 | |
|         }).click();
 | |
|     });
 | |
| 
 | |
|     test('disable/enable', function () {
 | |
|         var buttonbar = $('#fileupload .fileupload-buttonbar');
 | |
|         $('#fileupload').fileupload();
 | |
|         $('#fileupload').fileupload('disable');
 | |
|         strictEqual(
 | |
|             buttonbar.find('input[type=file], button').not(':disabled').length,
 | |
|             0,
 | |
|             'Disables the buttonbar buttons'
 | |
|         );
 | |
|         $('#fileupload').fileupload('enable');
 | |
|         strictEqual(
 | |
|             buttonbar.find('input[type=file], button').not(':disabled').length,
 | |
|             4,
 | |
|             'Enables the buttonbar buttons'
 | |
|         );
 | |
|     });
 | |
| 
 | |
|     module('UI Callbacks', lifecycleUI);
 | |
| 
 | |
|     test('destroy', function () {
 | |
|         expect(3);
 | |
|         $('#fileupload').fileupload({
 | |
|             destroy: function (e, data) {
 | |
|                 ok(true, 'Triggers destroy callback');
 | |
|                 strictEqual(
 | |
|                     data.url,
 | |
|                     'test',
 | |
|                     'Passes over deletion url parameter'
 | |
|                 );
 | |
|                 strictEqual(
 | |
|                     data.type,
 | |
|                     'DELETE',
 | |
|                     'Passes over deletion request type parameter'
 | |
|                 );
 | |
|             }
 | |
|         });
 | |
|         ($('#fileupload').data('blueimp-fileupload') ||
 | |
|                 $('#fileupload').data('fileupload'))
 | |
|             ._renderDownload([{
 | |
|                 name: 'test',
 | |
|                 deleteUrl: 'test',
 | |
|                 deleteType: 'DELETE'
 | |
|             }])
 | |
|             .appendTo($('#fileupload .files'))
 | |
|             .show()
 | |
|             .find('.toggle').click();
 | |
|         $('#fileupload .fileupload-buttonbar .delete').click();
 | |
|     });
 | |
| 
 | |
|     asyncTest('added', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             added: function (e, data) {
 | |
|                 start();
 | |
|                 strictEqual(
 | |
|                     data.files[0].name,
 | |
|                     param.files[0].name,
 | |
|                     'Triggers added callback'
 | |
|                 );
 | |
|             },
 | |
|             send: function () {
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('add', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('started', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             started: function () {
 | |
|                 start();
 | |
|                 ok('Triggers started callback');
 | |
|                 return false;
 | |
|             },
 | |
|             sent: function () {
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('sent', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             sent: function (e, data) {
 | |
|                 start();
 | |
|                 strictEqual(
 | |
|                     data.files[0].name,
 | |
|                     param.files[0].name,
 | |
|                     'Triggers sent callback'
 | |
|                 );
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('completed', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             completed: function () {
 | |
|                 start();
 | |
|                 ok('Triggers completed callback');
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('failed', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             failed: function () {
 | |
|                 start();
 | |
|                 ok('Triggers failed callback');
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param).abort();
 | |
|     });
 | |
| 
 | |
|     asyncTest('stopped', function () {
 | |
|         expect(1);
 | |
|         var param = {files: [{name: 'test'}]};
 | |
|         $('#fileupload').fileupload({
 | |
|             stopped: function () {
 | |
|                 start();
 | |
|                 ok('Triggers stopped callback');
 | |
|                 return false;
 | |
|             }
 | |
|         }).fileupload('send', param);
 | |
|     });
 | |
| 
 | |
|     asyncTest('destroyed', function () {
 | |
|         expect(1);
 | |
|         $('#fileupload').fileupload({
 | |
|             dataType: 'html',
 | |
|             destroyed: function () {
 | |
|                 start();
 | |
|                 ok(true, 'Triggers destroyed callback');
 | |
|             }
 | |
|         });
 | |
|         ($('#fileupload').data('blueimp-fileupload') ||
 | |
|                 $('#fileupload').data('fileupload'))
 | |
|             ._renderDownload([{
 | |
|                 name: 'test',
 | |
|                 deleteUrl: '.',
 | |
|                 deleteType: 'GET'
 | |
|             }])
 | |
|             .appendTo($('#fileupload .files'))
 | |
|             .show()
 | |
|             .find('.toggle').click();
 | |
|         $('#fileupload .fileupload-buttonbar .delete').click();
 | |
|     });
 | |
| 
 | |
|     module('UI Options', lifecycleUI);
 | |
| 
 | |
|     test('autoUpload', function () {
 | |
|         expect(1);
 | |
|         $('#fileupload')
 | |
|             .fileupload({
 | |
|                 autoUpload: true,
 | |
|                 send: function () {
 | |
|                     ok(true, 'Started file upload automatically');
 | |
|                     return false;
 | |
|                 }
 | |
|             })
 | |
|             .fileupload('add', {files: [{name: 'test'}]})
 | |
|             .fileupload('option', 'autoUpload', false)
 | |
|             .fileupload('add', {files: [{name: 'test'}]});
 | |
|     });
 | |
| 
 | |
|     test('maxNumberOfFiles', function () {
 | |
|         expect(3);
 | |
|         var addIndex = 0,
 | |
|             sendIndex = 0;
 | |
|         $('#fileupload')
 | |
|             .fileupload({
 | |
|                 autoUpload: true,
 | |
|                 maxNumberOfFiles: 3,
 | |
|                 singleFileUploads: false,
 | |
|                 send: function () {
 | |
|                     strictEqual(
 | |
|                         sendIndex += 1,
 | |
|                         addIndex
 | |
|                     );
 | |
|                 },
 | |
|                 progress: $.noop,
 | |
|                 progressall: $.noop,
 | |
|                 done: $.noop,
 | |
|                 stop: $.noop
 | |
|             })
 | |
|             .fileupload('add', {files: [{name: (addIndex += 1)}]})
 | |
|             .fileupload('add', {files: [{name: (addIndex += 1)}]})
 | |
|             .fileupload('add', {files: [{name: (addIndex += 1)}]})
 | |
|             .fileupload('add', {files: [{name: 'test'}]});
 | |
|     });
 | |
| 
 | |
|     test('maxFileSize', function () {
 | |
|         expect(2);
 | |
|         var addIndex = 0,
 | |
|             sendIndex = 0;
 | |
|         $('#fileupload')
 | |
|             .fileupload({
 | |
|                 autoUpload: true,
 | |
|                 maxFileSize: 1000,
 | |
|                 send: function () {
 | |
|                     strictEqual(
 | |
|                         sendIndex += 1,
 | |
|                         addIndex
 | |
|                     );
 | |
|                     return false;
 | |
|                 }
 | |
|             })
 | |
|             .fileupload('add', {files: [{
 | |
|                 name: (addIndex += 1)
 | |
|             }]})
 | |
|             .fileupload('add', {files: [{
 | |
|                 name: (addIndex += 1),
 | |
|                 size: 999
 | |
|             }]})
 | |
|             .fileupload('add', {files: [{
 | |
|                 name: 'test',
 | |
|                 size: 1001
 | |
|             }]})
 | |
|             .fileupload({
 | |
|                 send: function (e, data) {
 | |
|                     ok(
 | |
|                         !$.blueimp.fileupload.prototype.options
 | |
|                             .send.call(this, e, data)
 | |
|                     );
 | |
|                     return false;
 | |
|                 }
 | |
|             });
 | |
|     });
 | |
| 
 | |
|     test('minFileSize', function () {
 | |
|         expect(2);
 | |
|         var addIndex = 0,
 | |
|             sendIndex = 0;
 | |
|         $('#fileupload')
 | |
|             .fileupload({
 | |
|                 autoUpload: true,
 | |
|                 minFileSize: 1000,
 | |
|                 send: function () {
 | |
|                     strictEqual(
 | |
|                         sendIndex += 1,
 | |
|                         addIndex
 | |
|                     );
 | |
|                     return false;
 | |
|                 }
 | |
|             })
 | |
|             .fileupload('add', {files: [{
 | |
|                 name: (addIndex += 1)
 | |
|             }]})
 | |
|             .fileupload('add', {files: [{
 | |
|                 name: (addIndex += 1),
 | |
|                 size: 1001
 | |
|             }]})
 | |
|             .fileupload('add', {files: [{
 | |
|                 name: 'test',
 | |
|                 size: 999
 | |
|             }]})
 | |
|             .fileupload({
 | |
|                 send: function (e, data) {
 | |
|                     ok(
 | |
|                         !$.blueimp.fileupload.prototype.options
 | |
|                             .send.call(this, e, data)
 | |
|                     );
 | |
|                     return false;
 | |
|                 }
 | |
|             });
 | |
|     });
 | |
| 
 | |
|     test('acceptFileTypes', function () {
 | |
|         expect(2);
 | |
|         var addIndex = 0,
 | |
|             sendIndex = 0;
 | |
|         $('#fileupload')
 | |
|             .fileupload({
 | |
|                 autoUpload: true,
 | |
|                 acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
 | |
|                 disableImageMetaDataLoad: true,
 | |
|                 send: function () {
 | |
|                     strictEqual(
 | |
|                         sendIndex += 1,
 | |
|                         addIndex
 | |
|                     );
 | |
|                     return false;
 | |
|                 }
 | |
|             })
 | |
|             .fileupload('add', {files: [{
 | |
|                 name: (addIndex += 1) + '.jpg'
 | |
|             }]})
 | |
|             .fileupload('add', {files: [{
 | |
|                 name: (addIndex += 1),
 | |
|                 type: 'image/jpeg'
 | |
|             }]})
 | |
|             .fileupload('add', {files: [{
 | |
|                 name: 'test.txt',
 | |
|                 type: 'text/plain'
 | |
|             }]})
 | |
|             .fileupload({
 | |
|                 send: function (e, data) {
 | |
|                     ok(
 | |
|                         !$.blueimp.fileupload.prototype.options
 | |
|                             .send.call(this, e, data)
 | |
|                     );
 | |
|                     return false;
 | |
|                 }
 | |
|             });
 | |
|     });
 | |
| 
 | |
|     test('acceptFileTypes as HTML5 data attribute', function () {
 | |
|         expect(2);
 | |
|         var regExp = /(\.|\/)(gif|jpe?g|png)$/i;
 | |
|         $('#fileupload')
 | |
|             .attr('data-accept-file-types', regExp.toString())
 | |
|             .fileupload();
 | |
|         strictEqual(
 | |
|             $.type($('#fileupload').fileupload('option', 'acceptFileTypes')),
 | |
|             $.type(regExp)
 | |
|         );
 | |
|         strictEqual(
 | |
|             $('#fileupload').fileupload('option', 'acceptFileTypes').toString(),
 | |
|             regExp.toString()
 | |
|         );
 | |
|     });
 | |
| 
 | |
| });
 |