| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939 |
- (function() {
- chai.should();
- describe("Dropzone", function() {
- var getMockFile, xhr;
- getMockFile = function() {
- return {
- status: Dropzone.ADDED,
- accepted: true,
- name: "test file name",
- size: 123456,
- type: "text/html"
- };
- };
- xhr = null;
- beforeEach(function() {
- return xhr = sinon.useFakeXMLHttpRequest();
- });
- describe("Emitter", function() {
- var emitter;
- emitter = null;
- beforeEach(function() {
- return emitter = new Dropzone.prototype.Emitter();
- });
- it(".on() should return the object itself", function() {
- return (emitter.on("test", function() {})).should.equal(emitter);
- });
- it(".on() should properly register listeners", function() {
- var callback, callback2;
- (emitter._callbacks === void 0).should.be["true"];
- callback = function() {};
- callback2 = function() {};
- emitter.on("test", callback);
- emitter.on("test", callback2);
- emitter.on("test2", callback);
- emitter._callbacks.test.length.should.equal(2);
- emitter._callbacks.test[0].should.equal(callback);
- emitter._callbacks.test[1].should.equal(callback2);
- emitter._callbacks.test2.length.should.equal(1);
- return emitter._callbacks.test2[0].should.equal(callback);
- });
- it(".emit() should return the object itself", function() {
- return emitter.emit('test').should.equal(emitter);
- });
- it(".emit() should properly invoke all registered callbacks with arguments", function() {
- var callCount1, callCount12, callCount2, callback1, callback12, callback2;
- callCount1 = 0;
- callCount12 = 0;
- callCount2 = 0;
- callback1 = function(var1, var2) {
- callCount1++;
- var1.should.equal('callback1 var1');
- return var2.should.equal('callback1 var2');
- };
- callback12 = function(var1, var2) {
- callCount12++;
- var1.should.equal('callback1 var1');
- return var2.should.equal('callback1 var2');
- };
- callback2 = function(var1, var2) {
- callCount2++;
- var1.should.equal('callback2 var1');
- return var2.should.equal('callback2 var2');
- };
- emitter.on("test1", callback1);
- emitter.on("test1", callback12);
- emitter.on("test2", callback2);
- callCount1.should.equal(0);
- callCount12.should.equal(0);
- callCount2.should.equal(0);
- emitter.emit("test1", "callback1 var1", "callback1 var2");
- callCount1.should.equal(1);
- callCount12.should.equal(1);
- callCount2.should.equal(0);
- emitter.emit("test2", "callback2 var1", "callback2 var2");
- callCount1.should.equal(1);
- callCount12.should.equal(1);
- callCount2.should.equal(1);
- emitter.emit("test1", "callback1 var1", "callback1 var2");
- callCount1.should.equal(2);
- callCount12.should.equal(2);
- return callCount2.should.equal(1);
- });
- return describe(".off()", function() {
- var callback1, callback2, callback3, callback4;
- callback1 = function() {};
- callback2 = function() {};
- callback3 = function() {};
- callback4 = function() {};
- beforeEach(function() {
- return emitter._callbacks = {
- 'test1': [callback1, callback2],
- 'test2': [callback3],
- 'test3': [callback1, callback4],
- 'test4': []
- };
- });
- it("should work without any listeners", function() {
- var emt;
- emitter._callbacks = void 0;
- emt = emitter.off();
- emitter._callbacks.should.eql({});
- return emt.should.equal(emitter);
- });
- it("should properly remove all event listeners", function() {
- var emt;
- emt = emitter.off();
- emitter._callbacks.should.eql({});
- return emt.should.equal(emitter);
- });
- it("should properly remove all event listeners for specific event", function() {
- var emt;
- emitter.off("test1");
- (emitter._callbacks["test1"] === void 0).should.be["true"];
- emitter._callbacks["test2"].length.should.equal(1);
- emitter._callbacks["test3"].length.should.equal(2);
- emt = emitter.off("test2");
- (emitter._callbacks["test2"] === void 0).should.be["true"];
- return emt.should.equal(emitter);
- });
- return it("should properly remove specific event listener", function() {
- var emt;
- emitter.off("test1", callback1);
- emitter._callbacks["test1"].length.should.equal(1);
- emitter._callbacks["test1"][0].should.equal(callback2);
- emitter._callbacks["test3"].length.should.equal(2);
- emt = emitter.off("test3", callback4);
- emitter._callbacks["test3"].length.should.equal(1);
- emitter._callbacks["test3"][0].should.equal(callback1);
- return emt.should.equal(emitter);
- });
- });
- });
- describe("static functions", function() {
- describe("Dropzone.createElement()", function() {
- var element;
- element = Dropzone.createElement("<div class=\"test\"><span>Hallo</span></div>");
- it("should properly create an element from a string", function() {
- return element.tagName.should.equal("DIV");
- });
- it("should properly add the correct class", function() {
- return element.classList.contains("test").should.be.ok;
- });
- it("should properly create child elements", function() {
- return element.querySelector("span").tagName.should.equal("SPAN");
- });
- return it("should always return only one element", function() {
- element = Dropzone.createElement("<div></div><span></span>");
- return element.tagName.should.equal("DIV");
- });
- });
- describe("Dropzone.elementInside()", function() {
- var child1, child2, element;
- element = Dropzone.createElement("<div id=\"test\"><div class=\"child1\"><div class=\"child2\"></div></div></div>");
- document.body.appendChild(element);
- child1 = element.querySelector(".child1");
- child2 = element.querySelector(".child2");
- after(function() {
- return document.body.removeChild(element);
- });
- it("should return yes if elements are the same", function() {
- return Dropzone.elementInside(element, element).should.be.ok;
- });
- it("should return yes if element is direct child", function() {
- return Dropzone.elementInside(child1, element).should.be.ok;
- });
- it("should return yes if element is some child", function() {
- Dropzone.elementInside(child2, element).should.be.ok;
- return Dropzone.elementInside(child2, document.body).should.be.ok;
- });
- return it("should return no unless element is some child", function() {
- Dropzone.elementInside(element, child1).should.not.be.ok;
- return Dropzone.elementInside(document.body, child1).should.not.be.ok;
- });
- });
- describe("Dropzone.optionsForElement()", function() {
- var element, testOptions;
- testOptions = {
- url: "/some/url",
- method: "put"
- };
- before(function() {
- return Dropzone.options.testElement = testOptions;
- });
- after(function() {
- return delete Dropzone.options.testElement;
- });
- element = document.createElement("div");
- it("should take options set in Dropzone.options from camelized id", function() {
- element.id = "test-element";
- return Dropzone.optionsForElement(element).should.equal(testOptions);
- });
- it("should return undefined if no options set", function() {
- element.id = "test-element2";
- return expect(Dropzone.optionsForElement(element)).to.equal(void 0);
- });
- it("should return undefined and not throw if it's a form with an input element of the name 'id'", function() {
- element = Dropzone.createElement("<form><input name=\"id\" /</form>");
- return expect(Dropzone.optionsForElement(element)).to.equal(void 0);
- });
- return it("should ignore input fields with the name='id'", function() {
- element = Dropzone.createElement("<form id=\"test-element\"><input type=\"hidden\" name=\"id\" value=\"fooo\" /></form>");
- return Dropzone.optionsForElement(element).should.equal(testOptions);
- });
- });
- describe("Dropzone.forElement()", function() {
- var dropzone, element;
- element = document.createElement("div");
- element.id = "some-test-element";
- dropzone = null;
- before(function() {
- document.body.appendChild(element);
- return dropzone = new Dropzone(element, {
- url: "/test"
- });
- });
- after(function() {
- dropzone.disable();
- return document.body.removeChild(element);
- });
- it("should throw an exception if no dropzone attached", function() {
- return expect(function() {
- return Dropzone.forElement(document.createElement("div"));
- }).to["throw"]("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
- });
- it("should accept css selectors", function() {
- return expect(Dropzone.forElement("#some-test-element")).to.equal(dropzone);
- });
- return it("should accept native elements", function() {
- return expect(Dropzone.forElement(element)).to.equal(dropzone);
- });
- });
- describe("Dropzone.discover()", function() {
- var element1, element2, element3;
- element1 = document.createElement("div");
- element1.className = "dropzone";
- element2 = element1.cloneNode();
- element3 = element1.cloneNode();
- element1.id = "test-element-1";
- element2.id = "test-element-2";
- element3.id = "test-element-3";
- describe("specific options", function() {
- before(function() {
- Dropzone.options.testElement1 = {
- url: "test-url"
- };
- Dropzone.options.testElement2 = false;
- document.body.appendChild(element1);
- document.body.appendChild(element2);
- return Dropzone.discover();
- });
- after(function() {
- document.body.removeChild(element1);
- return document.body.removeChild(element2);
- });
- it("should find elements with a .dropzone class", function() {
- return element1.dropzone.should.be.ok;
- });
- return it("should not create dropzones with disabled options", function() {
- return expect(element2.dropzone).to.not.be.ok;
- });
- });
- return describe("Dropzone.autoDiscover", function() {
- before(function() {
- Dropzone.options.testElement3 = {
- url: "test-url"
- };
- return document.body.appendChild(element3);
- });
- after(function() {
- return document.body.removeChild(element3);
- });
- it("should create dropzones even if Dropzone.autoDiscover == false", function() {
- Dropzone.autoDiscover = false;
- Dropzone.discover();
- return expect(element3.dropzone).to.be.ok;
- });
- return it("should not automatically be called if Dropzone.autoDiscover == false", function() {
- Dropzone.autoDiscover = false;
- Dropzone.discover = function() {
- return expect(false).to.be.ok;
- };
- return Dropzone._autoDiscoverFunction();
- });
- });
- });
- describe("Dropzone.isValidFile()", function() {
- it("should return true if called without acceptedFiles", function() {
- return Dropzone.isValidFile({
- type: "some/type"
- }, null).should.be.ok;
- });
- it("should properly validate if called with concrete mime types", function() {
- var acceptedMimeTypes;
- acceptedMimeTypes = "text/html,image/jpeg,application/json";
- Dropzone.isValidFile({
- type: "text/html"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- type: "image/jpeg"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- type: "application/json"
- }, acceptedMimeTypes).should.be.ok;
- return Dropzone.isValidFile({
- type: "image/bmp"
- }, acceptedMimeTypes).should.not.be.ok;
- });
- it("should properly validate if called with base mime types", function() {
- var acceptedMimeTypes;
- acceptedMimeTypes = "text/*,image/*,application/*";
- Dropzone.isValidFile({
- type: "text/html"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- type: "image/jpeg"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- type: "application/json"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- type: "image/bmp"
- }, acceptedMimeTypes).should.be.ok;
- return Dropzone.isValidFile({
- type: "some/type"
- }, acceptedMimeTypes).should.not.be.ok;
- });
- it("should properly validate if called with mixed mime types", function() {
- var acceptedMimeTypes;
- acceptedMimeTypes = "text/*,image/jpeg,application/*";
- Dropzone.isValidFile({
- type: "text/html"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- type: "image/jpeg"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- type: "image/bmp"
- }, acceptedMimeTypes).should.not.be.ok;
- Dropzone.isValidFile({
- type: "application/json"
- }, acceptedMimeTypes).should.be.ok;
- return Dropzone.isValidFile({
- type: "some/type"
- }, acceptedMimeTypes).should.not.be.ok;
- });
- it("should properly validate even with spaces in between", function() {
- var acceptedMimeTypes;
- acceptedMimeTypes = "text/html , image/jpeg, application/json";
- Dropzone.isValidFile({
- type: "text/html"
- }, acceptedMimeTypes).should.be.ok;
- return Dropzone.isValidFile({
- type: "image/jpeg"
- }, acceptedMimeTypes).should.be.ok;
- });
- return it("should properly validate extensions", function() {
- var acceptedMimeTypes;
- acceptedMimeTypes = "text/html , image/jpeg, .pdf ,.png";
- Dropzone.isValidFile({
- name: "somxsfsd",
- type: "text/html"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- name: "somesdfsdf",
- type: "image/jpeg"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- name: "somesdfadfadf",
- type: "application/json"
- }, acceptedMimeTypes).should.not.be.ok;
- Dropzone.isValidFile({
- name: "some-file file.pdf",
- type: "random/type"
- }, acceptedMimeTypes).should.be.ok;
- Dropzone.isValidFile({
- name: "some-file.pdf file.gif",
- type: "random/type"
- }, acceptedMimeTypes).should.not.be.ok;
- return Dropzone.isValidFile({
- name: "some-file file.png",
- type: "random/type"
- }, acceptedMimeTypes).should.be.ok;
- });
- });
- return describe("Dropzone.confirm", function() {
- beforeEach(function() {
- return sinon.stub(window, "confirm");
- });
- afterEach(function() {
- return window.confirm.restore();
- });
- it("should forward to window.confirm and call the callbacks accordingly", function() {
- var accepted, rejected;
- accepted = rejected = false;
- window.confirm.returns(true);
- Dropzone.confirm("test question", (function() {
- return accepted = true;
- }), (function() {
- return rejected = true;
- }));
- window.confirm.args[0][0].should.equal("test question");
- accepted.should.equal(true);
- rejected.should.equal(false);
- accepted = rejected = false;
- window.confirm.returns(false);
- Dropzone.confirm("test question 2", (function() {
- return accepted = true;
- }), (function() {
- return rejected = true;
- }));
- window.confirm.args[1][0].should.equal("test question 2");
- accepted.should.equal(false);
- return rejected.should.equal(true);
- });
- return it("should not error if rejected is not provided", function() {
- var accepted, rejected;
- accepted = rejected = false;
- window.confirm.returns(false);
- Dropzone.confirm("test question", (function() {
- return accepted = true;
- }));
- window.confirm.args[0][0].should.equal("test question");
- accepted.should.equal(false);
- return rejected.should.equal(false);
- });
- });
- });
- describe("Dropzone.getElement() / getElements()", function() {
- var tmpElements;
- tmpElements = [];
- beforeEach(function() {
- tmpElements = [];
- tmpElements.push(Dropzone.createElement("<div class=\"tmptest\"></div>"));
- tmpElements.push(Dropzone.createElement("<div id=\"tmptest1\" class=\"random\"></div>"));
- tmpElements.push(Dropzone.createElement("<div class=\"random div\"></div>"));
- return tmpElements.forEach(function(el) {
- return document.body.appendChild(el);
- });
- });
- afterEach(function() {
- return tmpElements.forEach(function(el) {
- return document.body.removeChild(el);
- });
- });
- describe(".getElement()", function() {
- it("should accept a string", function() {
- var el;
- el = Dropzone.getElement(".tmptest");
- el.should.equal(tmpElements[0]);
- el = Dropzone.getElement("#tmptest1");
- return el.should.equal(tmpElements[1]);
- });
- it("should accept a node", function() {
- var el;
- el = Dropzone.getElement(tmpElements[2]);
- return el.should.equal(tmpElements[2]);
- });
- return it("should fail if invalid selector", function() {
- var errorMessage;
- errorMessage = "Invalid `clickable` option provided. Please provide a CSS selector or a plain HTML element.";
- expect(function() {
- return Dropzone.getElement("lblasdlfsfl", "clickable");
- }).to["throw"](errorMessage);
- expect(function() {
- return Dropzone.getElement({
- "lblasdlfsfl": "lblasdlfsfl"
- }, "clickable");
- }).to["throw"](errorMessage);
- return expect(function() {
- return Dropzone.getElement(["lblasdlfsfl"], "clickable");
- }).to["throw"](errorMessage);
- });
- });
- return describe(".getElements()", function() {
- it("should accept a list of strings", function() {
- var els;
- els = Dropzone.getElements([".tmptest", "#tmptest1"]);
- return els.should.eql([tmpElements[0], tmpElements[1]]);
- });
- it("should accept a list of nodes", function() {
- var els;
- els = Dropzone.getElements([tmpElements[0], tmpElements[2]]);
- return els.should.eql([tmpElements[0], tmpElements[2]]);
- });
- it("should accept a mixed list", function() {
- var els;
- els = Dropzone.getElements(["#tmptest1", tmpElements[2]]);
- return els.should.eql([tmpElements[1], tmpElements[2]]);
- });
- it("should accept a string selector", function() {
- var els;
- els = Dropzone.getElements(".random");
- return els.should.eql([tmpElements[1], tmpElements[2]]);
- });
- it("should accept a single node", function() {
- var els;
- els = Dropzone.getElements(tmpElements[1]);
- return els.should.eql([tmpElements[1]]);
- });
- return it("should fail if invalid selector", function() {
- var errorMessage;
- errorMessage = "Invalid `clickable` option provided. Please provide a CSS selector, a plain HTML element or a list of those.";
- expect(function() {
- return Dropzone.getElements("lblasdlfsfl", "clickable");
- }).to["throw"](errorMessage);
- return expect(function() {
- return Dropzone.getElements(["lblasdlfsfl"], "clickable");
- }).to["throw"](errorMessage);
- });
- });
- });
- describe("constructor()", function() {
- var dropzone;
- dropzone = null;
- afterEach(function() {
- if (dropzone != null) {
- return dropzone.destroy();
- }
- });
- it("should throw an exception if the element is invalid", function() {
- return expect(function() {
- return dropzone = new Dropzone("#invalid-element");
- }).to["throw"]("Invalid dropzone element.");
- });
- it("should throw an exception if assigned twice to the same element", function() {
- var element;
- element = document.createElement("div");
- dropzone = new Dropzone(element, {
- url: "url"
- });
- return expect(function() {
- return new Dropzone(element, {
- url: "url"
- });
- }).to["throw"]("Dropzone already attached.");
- });
- it("should throw an exception if both acceptedFiles and acceptedMimeTypes are specified", function() {
- var element;
- element = document.createElement("div");
- return expect(function() {
- return dropzone = new Dropzone(element, {
- url: "test",
- acceptedFiles: "param",
- acceptedMimeTypes: "types"
- });
- }).to["throw"]("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
- });
- it("should set itself as element.dropzone", function() {
- var element;
- element = document.createElement("div");
- dropzone = new Dropzone(element, {
- url: "url"
- });
- return element.dropzone.should.equal(dropzone);
- });
- it("should add itself to Dropzone.instances", function() {
- var element;
- element = document.createElement("div");
- dropzone = new Dropzone(element, {
- url: "url"
- });
- return Dropzone.instances[Dropzone.instances.length - 1].should.equal(dropzone);
- });
- it("should use the action attribute not the element with the name action", function() {
- var element;
- element = Dropzone.createElement("<form action=\"real-action\"><input type=\"hidden\" name=\"action\" value=\"wrong-action\" /></form>");
- dropzone = new Dropzone(element);
- return dropzone.options.url.should.equal("real-action");
- });
- return describe("options", function() {
- var element, element2;
- element = null;
- element2 = null;
- beforeEach(function() {
- element = document.createElement("div");
- element.id = "test-element";
- element2 = document.createElement("div");
- element2.id = "test-element2";
- return Dropzone.options.testElement = {
- url: "/some/url",
- parallelUploads: 10
- };
- });
- afterEach(function() {
- return delete Dropzone.options.testElement;
- });
- it("should take the options set in Dropzone.options", function() {
- dropzone = new Dropzone(element);
- dropzone.options.url.should.equal("/some/url");
- return dropzone.options.parallelUploads.should.equal(10);
- });
- it("should prefer passed options over Dropzone.options", function() {
- dropzone = new Dropzone(element, {
- url: "/some/other/url"
- });
- return dropzone.options.url.should.equal("/some/other/url");
- });
- it("should take the default options if nothing set in Dropzone.options", function() {
- dropzone = new Dropzone(element2, {
- url: "/some/url"
- });
- return dropzone.options.parallelUploads.should.equal(2);
- });
- it("should call the fallback function if forceFallback == true", function(done) {
- return dropzone = new Dropzone(element, {
- url: "/some/other/url",
- forceFallback: true,
- fallback: function() {
- return done();
- }
- });
- });
- it("should set acceptedFiles if deprecated acceptedMimetypes option has been passed", function() {
- dropzone = new Dropzone(element, {
- url: "/some/other/url",
- acceptedMimeTypes: "my/type"
- });
- return dropzone.options.acceptedFiles.should.equal("my/type");
- });
- return describe("options.clickable", function() {
- var clickableElement;
- clickableElement = null;
- dropzone = null;
- beforeEach(function() {
- clickableElement = document.createElement("div");
- clickableElement.className = "some-clickable";
- return document.body.appendChild(clickableElement);
- });
- afterEach(function() {
- document.body.removeChild(clickableElement);
- if (dropzone != null) {
- return dropzone.destroy;
- }
- });
- it("should use the default element if clickable == true", function() {
- dropzone = new Dropzone(element, {
- clickable: true
- });
- return dropzone.clickableElements.should.eql([dropzone.element]);
- });
- it("should lookup the element if clickable is a CSS selector", function() {
- dropzone = new Dropzone(element, {
- clickable: ".some-clickable"
- });
- return dropzone.clickableElements.should.eql([clickableElement]);
- });
- it("should simply use the provided element", function() {
- dropzone = new Dropzone(element, {
- clickable: clickableElement
- });
- return dropzone.clickableElements.should.eql([clickableElement]);
- });
- it("should accept multiple clickable elements", function() {
- dropzone = new Dropzone(element, {
- clickable: [document.body, ".some-clickable"]
- });
- return dropzone.clickableElements.should.eql([document.body, clickableElement]);
- });
- return it("should throw an exception if the element is invalid", function() {
- return expect(function() {
- return dropzone = new Dropzone(element, {
- clickable: ".some-invalid-clickable"
- });
- }).to["throw"]("Invalid `clickable` option provided. Please provide a CSS selector, a plain HTML element or a list of those.");
- });
- });
- });
- });
- describe("init()", function() {
- describe("clickable", function() {
- var dropzone, dropzones, name, _results;
- dropzones = {
- "using acceptedFiles": new Dropzone(Dropzone.createElement("<form action=\"/\"></form>"), {
- clickable: true,
- acceptedFiles: "audio/*,video/*"
- }),
- "using acceptedMimeTypes": new Dropzone(Dropzone.createElement("<form action=\"/\"></form>"), {
- clickable: true,
- acceptedMimeTypes: "audio/*,video/*"
- })
- };
- it("should not add an accept attribute if no acceptParameter", function() {
- var dropzone;
- dropzone = new Dropzone(Dropzone.createElement("<form action=\"/\"></form>"), {
- clickable: true,
- acceptParameter: null,
- acceptedMimeTypes: null
- });
- return dropzone.hiddenFileInput.hasAttribute("accept").should.be["false"];
- });
- _results = [];
- for (name in dropzones) {
- dropzone = dropzones[name];
- _results.push(describe(name, function() {
- return (function(dropzone) {
- it("should create a hidden file input if clickable", function() {
- dropzone.hiddenFileInput.should.be.ok;
- return dropzone.hiddenFileInput.tagName.should.equal("INPUT");
- });
- it("should use the acceptParameter", function() {
- return dropzone.hiddenFileInput.getAttribute("accept").should.equal("audio/*,video/*");
- });
- return it("should create a new input element when something is selected to reset the input field", function() {
- var event, hiddenFileInput, i, _i, _results1;
- _results1 = [];
- for (i = _i = 0; _i <= 3; i = ++_i) {
- hiddenFileInput = dropzone.hiddenFileInput;
- event = document.createEvent("HTMLEvents");
- event.initEvent("change", true, true);
- hiddenFileInput.dispatchEvent(event);
- dropzone.hiddenFileInput.should.not.equal(hiddenFileInput);
- _results1.push(Dropzone.elementInside(hiddenFileInput, document).should.not.be.ok);
- }
- return _results1;
- });
- })(dropzone);
- }));
- }
- return _results;
- });
- it("should create a .dz-message element", function() {
- var dropzone, element;
- element = Dropzone.createElement("<form class=\"dropzone\" action=\"/\"></form>");
- dropzone = new Dropzone(element, {
- clickable: true,
- acceptParameter: null,
- acceptedMimeTypes: null
- });
- return element.querySelector(".dz-message").should.be["instanceof"](Element);
- });
- return it("should not create a .dz-message element if there already is one", function() {
- var dropzone, element, msg;
- element = Dropzone.createElement("<form class=\"dropzone\" action=\"/\"></form>");
- msg = Dropzone.createElement("<div class=\"dz-message\">TEST</div>");
- element.appendChild(msg);
- dropzone = new Dropzone(element, {
- clickable: true,
- acceptParameter: null,
- acceptedMimeTypes: null
- });
- element.querySelector(".dz-message").should.equal(msg);
- return element.querySelectorAll(".dz-message").length.should.equal(1);
- });
- });
- describe("options", function() {
- var dropzone, element;
- element = null;
- dropzone = null;
- beforeEach(function() {
- element = Dropzone.createElement("<div></div>");
- return dropzone = new Dropzone(element, {
- maxFilesize: 4,
- url: "url",
- acceptedMimeTypes: "audio/*,image/png",
- maxFiles: 3
- });
- });
- return describe("file specific", function() {
- var file;
- file = null;
- beforeEach(function() {
- file = {
- name: "test name",
- size: 2 * 1024 * 1024,
- width: 200,
- height: 100
- };
- return dropzone.options.addedfile.call(dropzone, file);
- });
- describe(".addedFile()", function() {
- return it("should properly create the previewElement", function() {
- file.previewElement.should.be["instanceof"](Element);
- file.previewElement.querySelector("[data-dz-name]").innerHTML.should.eql("test name");
- return file.previewElement.querySelector("[data-dz-size]").innerHTML.should.eql("<strong>2.1</strong> MB");
- });
- });
- describe(".error()", function() {
- it("should properly insert the error", function() {
- dropzone.options.error.call(dropzone, file, "test message");
- return file.previewElement.querySelector("[data-dz-errormessage]").innerHTML.should.eql("test message");
- });
- return it("should properly insert the error when provided with an object containing the error", function() {
- dropzone.options.error.call(dropzone, file, {
- error: "test message"
- });
- return file.previewElement.querySelector("[data-dz-errormessage]").innerHTML.should.eql("test message");
- });
- });
- describe(".thumbnail()", function() {
- return it("should properly insert the error", function() {
- var thumbnail, transparentGif;
- transparentGif = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==";
- dropzone.options.thumbnail.call(dropzone, file, transparentGif);
- thumbnail = file.previewElement.querySelector("[data-dz-thumbnail]");
- thumbnail.src.should.eql(transparentGif);
- return thumbnail.alt.should.eql("test name");
- });
- });
- describe(".uploadprogress()", function() {
- return it("should properly set the width", function() {
- dropzone.options.uploadprogress.call(dropzone, file, 0);
- file.previewElement.querySelector("[data-dz-uploadprogress]").style.width.should.eql("0%");
- dropzone.options.uploadprogress.call(dropzone, file, 80);
- file.previewElement.querySelector("[data-dz-uploadprogress]").style.width.should.eql("80%");
- dropzone.options.uploadprogress.call(dropzone, file, 90);
- file.previewElement.querySelector("[data-dz-uploadprogress]").style.width.should.eql("90%");
- dropzone.options.uploadprogress.call(dropzone, file, 100);
- return file.previewElement.querySelector("[data-dz-uploadprogress]").style.width.should.eql("100%");
- });
- });
- return describe(".resize()", function() {
- describe("with default thumbnail settings", function() {
- return it("should properly return target dimensions", function() {
- var info;
- info = dropzone.options.resize.call(dropzone, file);
- info.optWidth.should.eql(120);
- return info.optHeight.should.eql(120);
- });
- });
- return describe("with null thumbnail settings", function() {
- return it("should properly return target dimensions", function() {
- var i, info, setting, testSettings, _i, _len, _results;
- testSettings = [[null, null], [null, 150], [150, null]];
- _results = [];
- for (i = _i = 0, _len = testSettings.length; _i < _len; i = ++_i) {
- setting = testSettings[i];
- dropzone.options.thumbnailWidth = setting[0];
- dropzone.options.thumbnailHeight = setting[1];
- info = dropzone.options.resize.call(dropzone, file);
- if (i === 0) {
- info.optWidth.should.eql(200);
- info.optHeight.should.eql(100);
- }
- if (i === 1) {
- info.optWidth.should.eql(300);
- info.optHeight.should.eql(150);
- }
- if (i === 2) {
- info.optWidth.should.eql(150);
- _results.push(info.optHeight.should.eql(75));
- } else {
- _results.push(void 0);
- }
- }
- return _results;
- });
- });
- });
- });
- });
- describe("instance", function() {
- var dropzone, element, requests;
- element = null;
- dropzone = null;
- requests = null;
- beforeEach(function() {
- requests = [];
- xhr.onCreate = function(xhr) {
- return requests.push(xhr);
- };
- element = Dropzone.createElement("<div></div>");
- document.body.appendChild(element);
- return dropzone = new Dropzone(element, {
- maxFilesize: 4,
- maxFiles: 100,
- url: "url",
- acceptedMimeTypes: "audio/*,image/png",
- uploadprogress: function() {}
- });
- });
- afterEach(function() {
- document.body.removeChild(element);
- dropzone.destroy();
- return xhr.restore();
- });
- describe(".accept()", function() {
- it("should pass if the filesize is OK", function() {
- return dropzone.accept({
- size: 2 * 1024 * 1024,
- type: "audio/mp3"
- }, function(err) {
- return expect(err).to.be.undefined;
- });
- });
- it("shouldn't pass if the filesize is too big", function() {
- return dropzone.accept({
- size: 10 * 1024 * 1024,
- type: "audio/mp3"
- }, function(err) {
- return err.should.eql("File is too big (10MiB). Max filesize: 4MiB.");
- });
- });
- it("should properly accept files which mime types are listed in acceptedFiles", function() {
- dropzone.accept({
- type: "audio/mp3"
- }, function(err) {
- return expect(err).to.be.undefined;
- });
- dropzone.accept({
- type: "image/png"
- }, function(err) {
- return expect(err).to.be.undefined;
- });
- return dropzone.accept({
- type: "audio/wav"
- }, function(err) {
- return expect(err).to.be.undefined;
- });
- });
- it("should properly reject files when the mime type isn't listed in acceptedFiles", function() {
- return dropzone.accept({
- type: "image/jpeg"
- }, function(err) {
- return err.should.eql("You can't upload files of this type.");
- });
- });
- it("should fail if maxFiles has been exceeded and call the event maxfilesexceeded", function() {
- var called, file;
- sinon.stub(dropzone, "getAcceptedFiles");
- file = {
- type: "audio/mp3"
- };
- dropzone.getAcceptedFiles.returns({
- length: 99
- });
- dropzone.options.dictMaxFilesExceeded = "You can only upload {{maxFiles}} files.";
- called = false;
- dropzone.on("maxfilesexceeded", function(lfile) {
- lfile.should.equal(file);
- return called = true;
- });
- dropzone.accept(file, function(err) {
- return expect(err).to.be.undefined;
- });
- called.should.not.be.ok;
- dropzone.getAcceptedFiles.returns({
- length: 100
- });
- dropzone.accept(file, function(err) {
- return expect(err).to.equal("You can only upload 100 files.");
- });
- called.should.be.ok;
- return dropzone.getAcceptedFiles.restore();
- });
- return it("should properly handle if maxFiles is 0", function() {
- var called, file;
- file = {
- type: "audio/mp3"
- };
- dropzone.options.maxFiles = 0;
- called = false;
- dropzone.on("maxfilesexceeded", function(lfile) {
- lfile.should.equal(file);
- return called = true;
- });
- dropzone.accept(file, function(err) {
- return expect(err).to.equal("You can not upload any more files.");
- });
- return called.should.be.ok;
- });
- });
- describe(".removeFile()", function() {
- return it("should abort uploading if file is currently being uploaded", function(done) {
- var mockFile;
- mockFile = getMockFile();
- dropzone.uploadFile = function(file) {};
- dropzone.accept = function(file, done) {
- return done();
- };
- sinon.stub(dropzone, "cancelUpload");
- dropzone.addFile(mockFile);
- return setTimeout(function() {
- mockFile.status.should.equal(Dropzone.UPLOADING);
- dropzone.getUploadingFiles()[0].should.equal(mockFile);
- dropzone.cancelUpload.callCount.should.equal(0);
- dropzone.removeFile(mockFile);
- dropzone.cancelUpload.callCount.should.equal(1);
- return done();
- }, 10);
- });
- });
- describe(".cancelUpload()", function() {
- it("should properly cancel upload if file currently uploading", function(done) {
- var mockFile;
- mockFile = getMockFile();
- dropzone.accept = function(file, done) {
- return done();
- };
- dropzone.addFile(mockFile);
- return setTimeout(function() {
- mockFile.status.should.equal(Dropzone.UPLOADING);
- dropzone.getUploadingFiles()[0].should.equal(mockFile);
- dropzone.cancelUpload(mockFile);
- mockFile.status.should.equal(Dropzone.CANCELED);
- dropzone.getUploadingFiles().length.should.equal(0);
- dropzone.getQueuedFiles().length.should.equal(0);
- return done();
- }, 10);
- });
- it("should properly cancel the upload if file is not yet uploading", function() {
- var mockFile;
- mockFile = getMockFile();
- dropzone.accept = function(file, done) {
- return done();
- };
- dropzone.options.parallelUploads = 0;
- dropzone.addFile(mockFile);
- mockFile.status.should.equal(Dropzone.QUEUED);
- dropzone.getQueuedFiles()[0].should.equal(mockFile);
- dropzone.cancelUpload(mockFile);
- mockFile.status.should.equal(Dropzone.CANCELED);
- dropzone.getQueuedFiles().length.should.equal(0);
- return dropzone.getUploadingFiles().length.should.equal(0);
- });
- it("should call processQueue()", function(done) {
- var mockFile;
- mockFile = getMockFile();
- dropzone.accept = function(file, done) {
- return done();
- };
- dropzone.options.parallelUploads = 0;
- sinon.spy(dropzone, "processQueue");
- dropzone.addFile(mockFile);
- return setTimeout(function() {
- dropzone.processQueue.callCount.should.equal(1);
- dropzone.cancelUpload(mockFile);
- dropzone.processQueue.callCount.should.equal(2);
- return done();
- }, 10);
- });
- return it("should properly cancel all files with the same XHR if uploadMultiple is true", function(done) {
- var mock1, mock2, mock3;
- mock1 = getMockFile();
- mock2 = getMockFile();
- mock3 = getMockFile();
- dropzone.accept = function(file, done) {
- return done();
- };
- dropzone.options.uploadMultiple = true;
- dropzone.options.parallelUploads = 3;
- sinon.spy(dropzone, "processFiles");
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- dropzone.addFile(mock3);
- return setTimeout(function() {
- var _ref;
- dropzone.processFiles.callCount.should.equal(1);
- sinon.spy(mock1.xhr, "abort");
- dropzone.cancelUpload(mock1);
- expect((mock1.xhr === (_ref = mock2.xhr) && _ref === mock3.xhr)).to.be.ok;
- mock1.status.should.equal(Dropzone.CANCELED);
- mock2.status.should.equal(Dropzone.CANCELED);
- mock3.status.should.equal(Dropzone.CANCELED);
- mock1.xhr.abort.callCount.should.equal(1);
- return done();
- }, 10);
- });
- });
- describe(".disable()", function() {
- return it("should properly cancel all pending uploads", function(done) {
- dropzone.accept = function(file, done) {
- return done();
- };
- dropzone.options.parallelUploads = 1;
- dropzone.addFile(getMockFile());
- dropzone.addFile(getMockFile());
- return setTimeout(function() {
- dropzone.getUploadingFiles().length.should.equal(1);
- dropzone.getQueuedFiles().length.should.equal(1);
- dropzone.files.length.should.equal(2);
- sinon.spy(requests[0], "abort");
- requests[0].abort.callCount.should.equal(0);
- dropzone.disable();
- requests[0].abort.callCount.should.equal(1);
- dropzone.getUploadingFiles().length.should.equal(0);
- dropzone.getQueuedFiles().length.should.equal(0);
- dropzone.files.length.should.equal(2);
- dropzone.files[0].status.should.equal(Dropzone.CANCELED);
- dropzone.files[1].status.should.equal(Dropzone.CANCELED);
- return done();
- }, 10);
- });
- });
- describe(".destroy()", function() {
- it("should properly cancel all pending uploads and remove all file references", function(done) {
- dropzone.accept = function(file, done) {
- return done();
- };
- dropzone.options.parallelUploads = 1;
- dropzone.addFile(getMockFile());
- dropzone.addFile(getMockFile());
- return setTimeout(function() {
- dropzone.getUploadingFiles().length.should.equal(1);
- dropzone.getQueuedFiles().length.should.equal(1);
- dropzone.files.length.should.equal(2);
- sinon.spy(dropzone, "disable");
- dropzone.destroy();
- dropzone.disable.callCount.should.equal(1);
- element.should.not.have.property("dropzone");
- return done();
- }, 10);
- });
- it("should be able to create instance of dropzone on the same element after destroy", function() {
- dropzone.destroy();
- return (function() {
- return new Dropzone(element, {
- maxFilesize: 4,
- url: "url",
- acceptedMimeTypes: "audio/*,image/png",
- uploadprogress: function() {}
- });
- }).should.not["throw"](Error);
- });
- return it("should remove itself from Dropzone.instances", function() {
- (Dropzone.instances.indexOf(dropzone) !== -1).should.be.ok;
- dropzone.destroy();
- return (Dropzone.instances.indexOf(dropzone) === -1).should.be.ok;
- });
- });
- describe(".filesize()", function() {
- it("should handle files with 0 size properly", function() {
- return dropzone.filesize(0).should.eql("<strong>0</strong> b");
- });
- it("should convert to KiloBytes, etc..", function() {
- dropzone.options.filesizeBase.should.eql(1000);
- dropzone.filesize(2 * 1000 * 1000).should.eql("<strong>2</strong> MB");
- dropzone.filesize(2 * 1024 * 1024).should.eql("<strong>2.1</strong> MB");
- dropzone.filesize(2 * 1000 * 1000 * 1000).should.eql("<strong>2</strong> GB");
- dropzone.filesize(2 * 1024 * 1024 * 1024).should.eql("<strong>2.1</strong> GB");
- dropzone.filesize(2.5111 * 1000 * 1000 * 1000).should.eql("<strong>2.5</strong> GB");
- dropzone.filesize(1.1 * 1000).should.eql("<strong>1.1</strong> KB");
- return dropzone.filesize(999 * 1000).should.eql("<strong>1</strong> MB");
- });
- return it("should convert to KibiBytes, etc.. when the filesizeBase is changed to 1024", function() {
- dropzone.options.filesizeBase = 1024;
- dropzone.filesize(2 * 1024 * 1024).should.eql("<strong>2</strong> MB");
- return dropzone.filesize(2 * 1000 * 1000).should.eql("<strong>1.9</strong> MB");
- });
- });
- describe("._updateMaxFilesReachedClass()", function() {
- it("should properly add the dz-max-files-reached class", function() {
- dropzone.getAcceptedFiles = function() {
- return {
- length: 10
- };
- };
- dropzone.options.maxFiles = 10;
- dropzone.element.classList.contains("dz-max-files-reached").should.not.be.ok;
- dropzone._updateMaxFilesReachedClass();
- return dropzone.element.classList.contains("dz-max-files-reached").should.be.ok;
- });
- it("should fire the 'maxfilesreached' event when appropriate", function() {
- var spy;
- spy = sinon.spy();
- dropzone.on("maxfilesreached", function() {
- return spy();
- });
- dropzone.getAcceptedFiles = function() {
- return {
- length: 9
- };
- };
- dropzone.options.maxFiles = 10;
- dropzone._updateMaxFilesReachedClass();
- spy.should.not.have.been.called;
- dropzone.getAcceptedFiles = function() {
- return {
- length: 10
- };
- };
- dropzone._updateMaxFilesReachedClass();
- spy.should.have.been.called;
- dropzone.getAcceptedFiles = function() {
- return {
- length: 11
- };
- };
- dropzone._updateMaxFilesReachedClass();
- return spy.should.have.been.calledOnce;
- });
- return it("should properly remove the dz-max-files-reached class", function() {
- dropzone.getAcceptedFiles = function() {
- return {
- length: 10
- };
- };
- dropzone.options.maxFiles = 10;
- dropzone.element.classList.contains("dz-max-files-reached").should.not.be.ok;
- dropzone._updateMaxFilesReachedClass();
- dropzone.element.classList.contains("dz-max-files-reached").should.be.ok;
- dropzone.getAcceptedFiles = function() {
- return {
- length: 9
- };
- };
- dropzone._updateMaxFilesReachedClass();
- return dropzone.element.classList.contains("dz-max-files-reached").should.not.be.ok;
- });
- });
- return describe("events", function() {
- return describe("progress updates", function() {
- return it("should properly emit a totaluploadprogress event", function(done) {
- var totalProgressExpectation, _called;
- dropzone.files = [
- {
- size: 1990,
- accepted: true,
- status: Dropzone.UPLOADING,
- upload: {
- progress: 20,
- total: 2000,
- bytesSent: 400
- }
- }, {
- size: 1990,
- accepted: true,
- status: Dropzone.UPLOADING,
- upload: {
- progress: 10,
- total: 2000,
- bytesSent: 200
- }
- }
- ];
- _called = 0;
- dropzone.on("totaluploadprogress", function(progress) {
- progress.should.equal(totalProgressExpectation);
- if (++_called === 3) {
- return done();
- }
- });
- totalProgressExpectation = 15;
- dropzone.emit("uploadprogress", {});
- totalProgressExpectation = 97.5;
- dropzone.files[0].upload.bytesSent = 2000;
- dropzone.files[1].upload.bytesSent = 1900;
- dropzone.emit("uploadprogress", {});
- totalProgressExpectation = 100;
- dropzone.files[0].upload.bytesSent = 2000;
- dropzone.files[1].upload.bytesSent = 2000;
- dropzone.emit("uploadprogress", {});
- dropzone.files[0].status = Dropzone.CANCELED;
- return dropzone.files[1].status = Dropzone.CANCELED;
- });
- });
- });
- });
- describe("helper function", function() {
- var dropzone, element;
- element = null;
- dropzone = null;
- beforeEach(function() {
- element = Dropzone.createElement("<div></div>");
- return dropzone = new Dropzone(element, {
- url: "url"
- });
- });
- describe("getExistingFallback()", function() {
- it("should return undefined if no fallback", function() {
- return expect(dropzone.getExistingFallback()).to.equal(void 0);
- });
- it("should only return the fallback element if it contains exactly fallback", function() {
- element.appendChild(Dropzone.createElement("<form class=\"fallbacks\"></form>"));
- element.appendChild(Dropzone.createElement("<form class=\"sfallback\"></form>"));
- return expect(dropzone.getExistingFallback()).to.equal(void 0);
- });
- it("should return divs as fallback", function() {
- var fallback;
- fallback = Dropzone.createElement("<form class=\" abc fallback test \"></form>");
- element.appendChild(fallback);
- return fallback.should.equal(dropzone.getExistingFallback());
- });
- return it("should return forms as fallback", function() {
- var fallback;
- fallback = Dropzone.createElement("<div class=\" abc fallback test \"></div>");
- element.appendChild(fallback);
- return fallback.should.equal(dropzone.getExistingFallback());
- });
- });
- describe("getFallbackForm()", function() {
- it("should use the paramName without [0] if uploadMultiple is false", function() {
- var fallback, fileInput;
- dropzone.options.uploadMultiple = false;
- dropzone.options.paramName = "myFile";
- fallback = dropzone.getFallbackForm();
- fileInput = fallback.querySelector("input[type=file]");
- return fileInput.name.should.equal("myFile");
- });
- return it("should properly add [0] to the file name if uploadMultiple is true", function() {
- var fallback, fileInput;
- dropzone.options.uploadMultiple = true;
- dropzone.options.paramName = "myFile";
- fallback = dropzone.getFallbackForm();
- fileInput = fallback.querySelector("input[type=file]");
- return fileInput.name.should.equal("myFile[0]");
- });
- });
- describe("getAcceptedFiles() / getRejectedFiles()", function() {
- var mock1, mock2, mock3, mock4;
- mock1 = mock2 = mock3 = mock4 = null;
- beforeEach(function() {
- mock1 = getMockFile();
- mock2 = getMockFile();
- mock3 = getMockFile();
- mock4 = getMockFile();
- dropzone.options.accept = function(file, done) {
- if (file === mock1 || file === mock3) {
- return done();
- } else {
- return done("error");
- }
- };
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- dropzone.addFile(mock3);
- return dropzone.addFile(mock4);
- });
- it("getAcceptedFiles() should only return accepted files", function() {
- return dropzone.getAcceptedFiles().should.eql([mock1, mock3]);
- });
- return it("getRejectedFiles() should only return rejected files", function() {
- return dropzone.getRejectedFiles().should.eql([mock2, mock4]);
- });
- });
- describe("getQueuedFiles()", function() {
- return it("should return all files with the status Dropzone.QUEUED", function() {
- var mock1, mock2, mock3, mock4;
- mock1 = getMockFile();
- mock2 = getMockFile();
- mock3 = getMockFile();
- mock4 = getMockFile();
- dropzone.options.accept = function(file, done) {
- return file.done = done;
- };
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- dropzone.addFile(mock3);
- dropzone.addFile(mock4);
- dropzone.getQueuedFiles().should.eql([]);
- mock1.done();
- mock3.done();
- dropzone.getQueuedFiles().should.eql([mock1, mock3]);
- mock1.status.should.equal(Dropzone.QUEUED);
- mock3.status.should.equal(Dropzone.QUEUED);
- mock2.status.should.equal(Dropzone.ADDED);
- return mock4.status.should.equal(Dropzone.ADDED);
- });
- });
- describe("getUploadingFiles()", function() {
- return it("should return all files with the status Dropzone.UPLOADING", function(done) {
- var mock1, mock2, mock3, mock4;
- mock1 = getMockFile();
- mock2 = getMockFile();
- mock3 = getMockFile();
- mock4 = getMockFile();
- dropzone.options.accept = function(file, _done) {
- return file.done = _done;
- };
- dropzone.uploadFile = function() {};
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- dropzone.addFile(mock3);
- dropzone.addFile(mock4);
- dropzone.getUploadingFiles().should.eql([]);
- mock1.done();
- mock3.done();
- return setTimeout((function() {
- dropzone.getUploadingFiles().should.eql([mock1, mock3]);
- mock1.status.should.equal(Dropzone.UPLOADING);
- mock3.status.should.equal(Dropzone.UPLOADING);
- mock2.status.should.equal(Dropzone.ADDED);
- mock4.status.should.equal(Dropzone.ADDED);
- return done();
- }), 10);
- });
- });
- describe("getActiveFiles()", function() {
- return it("should return all files with the status Dropzone.UPLOADING or Dropzone.QUEUED", function(done) {
- var mock1, mock2, mock3, mock4;
- mock1 = getMockFile();
- mock2 = getMockFile();
- mock3 = getMockFile();
- mock4 = getMockFile();
- dropzone.options.accept = function(file, _done) {
- return file.done = _done;
- };
- dropzone.uploadFile = function() {};
- dropzone.options.parallelUploads = 2;
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- dropzone.addFile(mock3);
- dropzone.addFile(mock4);
- dropzone.getActiveFiles().should.eql([]);
- mock1.done();
- mock3.done();
- mock4.done();
- return setTimeout((function() {
- dropzone.getActiveFiles().should.eql([mock1, mock3, mock4]);
- mock1.status.should.equal(Dropzone.UPLOADING);
- mock3.status.should.equal(Dropzone.UPLOADING);
- mock2.status.should.equal(Dropzone.ADDED);
- mock4.status.should.equal(Dropzone.QUEUED);
- return done();
- }), 10);
- });
- });
- return describe("getFilesWithStatus()", function() {
- return it("should return all files with provided status", function() {
- var mock1, mock2, mock3, mock4;
- mock1 = getMockFile();
- mock2 = getMockFile();
- mock3 = getMockFile();
- mock4 = getMockFile();
- dropzone.options.accept = function(file, _done) {
- return file.done = _done;
- };
- dropzone.uploadFile = function() {};
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- dropzone.addFile(mock3);
- dropzone.addFile(mock4);
- dropzone.getFilesWithStatus(Dropzone.ADDED).should.eql([mock1, mock2, mock3, mock4]);
- mock1.status = Dropzone.UPLOADING;
- mock3.status = Dropzone.QUEUED;
- mock4.status = Dropzone.QUEUED;
- dropzone.getFilesWithStatus(Dropzone.ADDED).should.eql([mock2]);
- dropzone.getFilesWithStatus(Dropzone.UPLOADING).should.eql([mock1]);
- return dropzone.getFilesWithStatus(Dropzone.QUEUED).should.eql([mock3, mock4]);
- });
- });
- });
- return describe("file handling", function() {
- var dropzone, mockFile;
- mockFile = null;
- dropzone = null;
- beforeEach(function() {
- var element;
- mockFile = getMockFile();
- element = Dropzone.createElement("<div></div>");
- return dropzone = new Dropzone(element, {
- url: "/the/url"
- });
- });
- afterEach(function() {
- return dropzone.destroy();
- });
- describe("addFile()", function() {
- it("should properly set the status of the file", function() {
- var doneFunction;
- doneFunction = null;
- dropzone.accept = function(file, done) {
- return doneFunction = done;
- };
- dropzone.processFile = function() {};
- dropzone.uploadFile = function() {};
- dropzone.addFile(mockFile);
- mockFile.status.should.eql(Dropzone.ADDED);
- doneFunction();
- mockFile.status.should.eql(Dropzone.QUEUED);
- mockFile = getMockFile();
- dropzone.addFile(mockFile);
- mockFile.status.should.eql(Dropzone.ADDED);
- doneFunction("error");
- return mockFile.status.should.eql(Dropzone.ERROR);
- });
- it("should properly set the status of the file if autoProcessQueue is false and not call processQueue", function(done) {
- var doneFunction;
- doneFunction = null;
- dropzone.options.autoProcessQueue = false;
- dropzone.accept = function(file, done) {
- return doneFunction = done;
- };
- dropzone.processFile = function() {};
- dropzone.uploadFile = function() {};
- dropzone.addFile(mockFile);
- sinon.stub(dropzone, "processQueue");
- mockFile.status.should.eql(Dropzone.ADDED);
- doneFunction();
- mockFile.status.should.eql(Dropzone.QUEUED);
- dropzone.processQueue.callCount.should.equal(0);
- return setTimeout((function() {
- dropzone.processQueue.callCount.should.equal(0);
- return done();
- }), 10);
- });
- it("should not add the file to the queue if autoQueue is false", function() {
- var doneFunction;
- doneFunction = null;
- dropzone.options.autoQueue = false;
- dropzone.accept = function(file, done) {
- return doneFunction = done;
- };
- dropzone.processFile = function() {};
- dropzone.uploadFile = function() {};
- dropzone.addFile(mockFile);
- mockFile.status.should.eql(Dropzone.ADDED);
- doneFunction();
- return mockFile.status.should.eql(Dropzone.ADDED);
- });
- it("should create a remove link if configured to do so", function() {
- dropzone.options.addRemoveLinks = true;
- dropzone.processFile = function() {};
- dropzone.uploadFile = function() {};
- sinon.stub(dropzone, "processQueue");
- dropzone.addFile(mockFile);
- return dropzone.files[0].previewElement.querySelector("a[data-dz-remove].dz-remove").should.be.ok;
- });
- it("should attach an event handler to data-dz-remove links", function() {
- var event, file, removeLink1, removeLink2;
- dropzone.options.previewTemplate = "<div class=\"dz-preview dz-file-preview\">\n <div class=\"dz-details\">\n <div class=\"dz-filename\"><span data-dz-name></span></div>\n <div class=\"dz-size\" data-dz-size></div>\n <img data-dz-thumbnail />\n </div>\n <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n <div class=\"dz-success-mark\"><span>✔</span></div>\n <div class=\"dz-error-mark\"><span>✘</span></div>\n <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n <a class=\"link1\" data-dz-remove></a>\n <a class=\"link2\" data-dz-remove></a>\n</div>";
- sinon.stub(dropzone, "processQueue");
- dropzone.addFile(mockFile);
- file = dropzone.files[0];
- removeLink1 = file.previewElement.querySelector("a[data-dz-remove].link1");
- removeLink2 = file.previewElement.querySelector("a[data-dz-remove].link2");
- sinon.stub(dropzone, "removeFile");
- event = document.createEvent("HTMLEvents");
- event.initEvent("click", true, true);
- removeLink1.dispatchEvent(event);
- dropzone.removeFile.callCount.should.eql(1);
- event = document.createEvent("HTMLEvents");
- event.initEvent("click", true, true);
- removeLink2.dispatchEvent(event);
- return dropzone.removeFile.callCount.should.eql(2);
- });
- return describe("thumbnails", function() {
- it("should properly queue the thumbnail creation", function(done) {
- var ct_callback, ct_file, doneFunction, mock1, mock2, mock3;
- doneFunction = null;
- dropzone.accept = function(file, done) {
- return doneFunction = done;
- };
- dropzone.processFile = function() {};
- dropzone.uploadFile = function() {};
- mock1 = getMockFile();
- mock2 = getMockFile();
- mock3 = getMockFile();
- mock1.type = "image/jpg";
- mock2.type = "image/jpg";
- mock3.type = "image/jpg";
- dropzone.on("thumbnail", function() {
- return console.log("HII");
- });
- ct_file = ct_callback = null;
- dropzone.createThumbnail = function(file, callback) {
- ct_file = file;
- return ct_callback = callback;
- };
- sinon.spy(dropzone, "createThumbnail");
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- dropzone.addFile(mock3);
- dropzone.files.length.should.eql(3);
- return setTimeout((function() {
- dropzone.createThumbnail.callCount.should.eql(1);
- mock1.should.equal(ct_file);
- ct_callback();
- dropzone.createThumbnail.callCount.should.eql(2);
- mock2.should.equal(ct_file);
- ct_callback();
- dropzone.createThumbnail.callCount.should.eql(3);
- mock3.should.equal(ct_file);
- return done();
- }), 10);
- });
- return describe("when file is SVG", function() {
- return it("should use the SVG image itself", function(done) {
- var blob, createBlob;
- createBlob = function(data, type) {
- var BlobBuilder, builder, e;
- try {
- return new Blob([data], {
- type: type
- });
- } catch (_error) {
- e = _error;
- BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
- builder = new BlobBuilder();
- builder.append(data.buffer || data);
- return builder.getBlob(type);
- }
- };
- blob = createBlob('foo', 'image/svg+xml');
- dropzone.on("thumbnail", function(file, dataURI) {
- var fileReader;
- file.should.equal(blob);
- fileReader = new FileReader;
- fileReader.onload = function() {
- fileReader.result.should.equal(dataURI);
- return done();
- };
- return fileReader.readAsDataURL(file);
- });
- return dropzone.createThumbnail(blob);
- });
- });
- });
- });
- describe("enqueueFile()", function() {
- it("should be wrapped by enqueueFiles()", function() {
- var mock1, mock2, mock3;
- sinon.stub(dropzone, "enqueueFile");
- mock1 = getMockFile();
- mock2 = getMockFile();
- mock3 = getMockFile();
- dropzone.enqueueFiles([mock1, mock2, mock3]);
- dropzone.enqueueFile.callCount.should.equal(3);
- dropzone.enqueueFile.args[0][0].should.equal(mock1);
- dropzone.enqueueFile.args[1][0].should.equal(mock2);
- return dropzone.enqueueFile.args[2][0].should.equal(mock3);
- });
- it("should fail if the file has already been processed", function() {
- mockFile.status = Dropzone.ERROR;
- expect((function() {
- return dropzone.enqueueFile(mockFile);
- })).to["throw"]("This file can't be queued because it has already been processed or was rejected.");
- mockFile.status = Dropzone.COMPLETE;
- expect((function() {
- return dropzone.enqueueFile(mockFile);
- })).to["throw"]("This file can't be queued because it has already been processed or was rejected.");
- mockFile.status = Dropzone.UPLOADING;
- return expect((function() {
- return dropzone.enqueueFile(mockFile);
- })).to["throw"]("This file can't be queued because it has already been processed or was rejected.");
- });
- return it("should set the status to QUEUED and call processQueue asynchronously if everything's ok", function(done) {
- mockFile.status = Dropzone.ADDED;
- sinon.stub(dropzone, "processQueue");
- dropzone.processQueue.callCount.should.equal(0);
- dropzone.enqueueFile(mockFile);
- mockFile.status.should.equal(Dropzone.QUEUED);
- dropzone.processQueue.callCount.should.equal(0);
- return setTimeout(function() {
- dropzone.processQueue.callCount.should.equal(1);
- return done();
- }, 10);
- });
- });
- describe("uploadFiles()", function() {
- var requests;
- requests = null;
- beforeEach(function() {
- requests = [];
- return xhr.onCreate = function(xhr) {
- return requests.push(xhr);
- };
- });
- afterEach(function() {
- return xhr.restore();
- });
- it("should be wrapped by uploadFile()", function() {
- sinon.stub(dropzone, "uploadFiles");
- dropzone.uploadFile(mockFile);
- dropzone.uploadFiles.callCount.should.equal(1);
- return dropzone.uploadFiles.calledWith([mockFile]).should.be.ok;
- });
- it("should use url options if strings", function(done) {
- dropzone.addFile(mockFile);
- return setTimeout(function() {
- expect(requests.length).to.equal(1);
- expect(requests[0].url).to.equal(dropzone.options.url);
- expect(requests[0].method).to.equal(dropzone.options.method);
- return done();
- }, 10);
- });
- it("should call url options if functions", function(done) {
- var method, url;
- method = "PUT";
- url = "/custom/upload/url";
- dropzone.options.method = sinon.stub().returns(method);
- dropzone.options.url = sinon.stub().returns(url);
- dropzone.addFile(mockFile);
- return setTimeout(function() {
- dropzone.options.method.callCount.should.equal(1);
- dropzone.options.url.callCount.should.equal(1);
- sinon.assert.calledWith(dropzone.options.method, [mockFile]);
- sinon.assert.calledWith(dropzone.options.url, [mockFile]);
- expect(requests.length).to.equal(1);
- expect(requests[0].url).to.equal(url);
- expect(requests[0].method).to.equal(method);
- return done();
- }, 10);
- });
- it("should ignore the onreadystate callback if readyState != 4", function(done) {
- dropzone.addFile(mockFile);
- return setTimeout(function() {
- mockFile.status.should.eql(Dropzone.UPLOADING);
- requests[0].status = 200;
- requests[0].readyState = 3;
- requests[0].onload();
- mockFile.status.should.eql(Dropzone.UPLOADING);
- requests[0].readyState = 4;
- requests[0].onload();
- mockFile.status.should.eql(Dropzone.SUCCESS);
- return done();
- }, 10);
- });
- it("should emit error and errormultiple when response was not OK", function(done) {
- var complete, completemultiple, error, errormultiple;
- dropzone.options.uploadMultiple = true;
- error = false;
- errormultiple = false;
- complete = false;
- completemultiple = false;
- dropzone.on("error", function() {
- return error = true;
- });
- dropzone.on("errormultiple", function() {
- return errormultiple = true;
- });
- dropzone.on("complete", function() {
- return complete = true;
- });
- dropzone.on("completemultiple", function() {
- return completemultiple = true;
- });
- dropzone.addFile(mockFile);
- return setTimeout(function() {
- mockFile.status.should.eql(Dropzone.UPLOADING);
- requests[0].status = 400;
- requests[0].readyState = 4;
- requests[0].onload();
- expect((((true === error && error === errormultiple) && errormultiple === complete) && complete === completemultiple)).to.be.ok;
- return done();
- }, 10);
- });
- it("should include hidden files in the form and unchecked checkboxes and radiobuttons should be excluded", function(done) {
- var element, formData, mock1;
- element = Dropzone.createElement("<form action=\"/the/url\">\n <input type=\"hidden\" name=\"test\" value=\"hidden\" />\n <input type=\"checkbox\" name=\"unchecked\" value=\"1\" />\n <input type=\"checkbox\" name=\"checked\" value=\"value1\" checked=\"checked\" />\n <input type=\"radio\" value=\"radiovalue1\" name=\"radio1\" />\n <input type=\"radio\" value=\"radiovalue2\" name=\"radio1\" checked=\"checked\" />\n <select name=\"select\"><option value=\"1\">1</option><option value=\"2\" selected>2</option></select>\n</form>");
- dropzone = new Dropzone(element, {
- url: "/the/url"
- });
- formData = null;
- dropzone.on("sending", function(file, xhr, tformData) {
- formData = tformData;
- return sinon.spy(tformData, "append");
- });
- mock1 = getMockFile();
- dropzone.addFile(mock1);
- return setTimeout(function() {
- formData.append.callCount.should.equal(5);
- formData.append.args[0][0].should.eql("test");
- formData.append.args[0][1].should.eql("hidden");
- formData.append.args[1][0].should.eql("checked");
- formData.append.args[1][1].should.eql("value1");
- formData.append.args[2][0].should.eql("radio1");
- formData.append.args[2][1].should.eql("radiovalue2");
- formData.append.args[3][0].should.eql("select");
- formData.append.args[3][1].should.eql("2");
- formData.append.args[4][0].should.eql("file");
- formData.append.args[4][1].should.equal(mock1);
- return done();
- }, 10);
- });
- it("should all values of a select that has the multiple attribute", function(done) {
- var element, formData, mock1;
- element = Dropzone.createElement("<form action=\"/the/url\">\n <select name=\"select\" multiple>\n <option value=\"value1\">1</option>\n <option value=\"value2\" selected>2</option>\n <option value=\"value3\">3</option>\n <option value=\"value4\" selected>4</option>\n </select>\n</form>");
- dropzone = new Dropzone(element, {
- url: "/the/url"
- });
- formData = null;
- dropzone.on("sending", function(file, xhr, tformData) {
- formData = tformData;
- return sinon.spy(tformData, "append");
- });
- mock1 = getMockFile();
- dropzone.addFile(mock1);
- return setTimeout(function() {
- formData.append.callCount.should.equal(3);
- formData.append.args[0][0].should.eql("select");
- formData.append.args[0][1].should.eql("value2");
- formData.append.args[1][0].should.eql("select");
- formData.append.args[1][1].should.eql("value4");
- formData.append.args[2][0].should.eql("file");
- formData.append.args[2][1].should.equal(mock1);
- return done();
- }, 10);
- });
- describe("settings()", function() {
- it("should correctly set `withCredentials` on the xhr object", function() {
- dropzone.uploadFile(mockFile);
- requests.length.should.eql(1);
- requests[0].withCredentials.should.eql(false);
- dropzone.options.withCredentials = true;
- dropzone.uploadFile(mockFile);
- requests.length.should.eql(2);
- return requests[1].withCredentials.should.eql(true);
- });
- it("should correctly override headers on the xhr object", function() {
- dropzone.options.headers = {
- "Foo-Header": "foobar"
- };
- dropzone.uploadFile(mockFile);
- return requests[0].requestHeaders["Foo-Header"].should.eql('foobar');
- });
- it("should not set headers on the xhr object that are empty", function() {
- dropzone.options.headers = {
- "X-Requested-With": null
- };
- dropzone.uploadFile(mockFile);
- return Object.keys(requests[0].requestHeaders).should.not.contain("X-Requested-With");
- });
- it("should properly use the paramName without [n] as file upload if uploadMultiple is false", function(done) {
- var formData, mock1, mock2, sendingCount;
- dropzone.options.uploadMultiple = false;
- dropzone.options.paramName = "myName";
- formData = [];
- sendingCount = 0;
- dropzone.on("sending", function(files, xhr, tformData) {
- sendingCount++;
- formData.push(tformData);
- return sinon.spy(tformData, "append");
- });
- mock1 = getMockFile();
- mock2 = getMockFile();
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- return setTimeout(function() {
- sendingCount.should.equal(2);
- formData.length.should.equal(2);
- formData[0].append.callCount.should.equal(1);
- formData[1].append.callCount.should.equal(1);
- formData[0].append.args[0][0].should.eql("myName");
- formData[0].append.args[0][0].should.eql("myName");
- return done();
- }, 10);
- });
- return it("should properly use the paramName with [n] as file upload if uploadMultiple is true", function(done) {
- var formData, mock1, mock2, sendingCount, sendingMultipleCount;
- dropzone.options.uploadMultiple = true;
- dropzone.options.paramName = "myName";
- formData = null;
- sendingMultipleCount = 0;
- sendingCount = 0;
- dropzone.on("sending", function(file, xhr, tformData) {
- return sendingCount++;
- });
- dropzone.on("sendingmultiple", function(files, xhr, tformData) {
- sendingMultipleCount++;
- formData = tformData;
- return sinon.spy(tformData, "append");
- });
- mock1 = getMockFile();
- mock2 = getMockFile();
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- return setTimeout(function() {
- sendingCount.should.equal(2);
- sendingMultipleCount.should.equal(1);
- dropzone.uploadFiles([mock1, mock2]);
- formData.append.callCount.should.equal(2);
- formData.append.args[0][0].should.eql("myName[0]");
- formData.append.args[1][0].should.eql("myName[1]");
- return done();
- }, 10);
- });
- });
- it("should not change the file name if the options.renameFilename is not set", function(done) {
- var mockFilename, renamedFilename;
- mockFilename = 'T3sT ;:_-.,!¨@&%&';
- renamedFilename = dropzone._renameFilename(mockFilename);
- return setTimeout(function() {
- renamedFilename.should.equal(mockFilename);
- return done();
- }, 10);
- });
- it("should rename the file name if options.renamedFilename is set", function(done) {
- var renamedFilename;
- dropzone.options.renameFilename = function(name) {
- return name.toLowerCase().replace(/[^\w]/gi, '');
- };
- renamedFilename = dropzone._renameFilename('T3sT ;:_-.,!¨@&%&');
- return setTimeout(function() {
- renamedFilename.should.equal('t3st_');
- return done();
- }, 10);
- });
- return describe("should properly set status of file", function() {
- return it("should correctly set `withCredentials` on the xhr object", function(done) {
- dropzone.addFile(mockFile);
- return setTimeout(function() {
- mockFile.status.should.eql(Dropzone.UPLOADING);
- requests.length.should.equal(1);
- requests[0].status = 400;
- requests[0].readyState = 4;
- requests[0].onload();
- mockFile.status.should.eql(Dropzone.ERROR);
- mockFile = getMockFile();
- dropzone.addFile(mockFile);
- return setTimeout(function() {
- mockFile.status.should.eql(Dropzone.UPLOADING);
- requests.length.should.equal(2);
- requests[1].status = 200;
- requests[1].readyState = 4;
- requests[1].onload();
- mockFile.status.should.eql(Dropzone.SUCCESS);
- return done();
- }, 10);
- }, 10);
- });
- });
- });
- return describe("complete file", function() {
- return it("should properly emit the queuecomplete event when the complete queue is finished", function(done) {
- var completedFiles, mock1, mock2, mock3;
- mock1 = getMockFile();
- mock2 = getMockFile();
- mock3 = getMockFile();
- mock1.status = Dropzone.ADDED;
- mock2.status = Dropzone.ADDED;
- mock3.status = Dropzone.ADDED;
- mock1.name = "mock1";
- mock2.name = "mock2";
- mock3.name = "mock3";
- dropzone.uploadFiles = function(files) {
- return setTimeout(((function(_this) {
- return function() {
- return _this._finished(files, null, null);
- };
- })(this)), 1);
- };
- completedFiles = 0;
- dropzone.on("complete", function(file) {
- return completedFiles++;
- });
- dropzone.on("queuecomplete", function() {
- completedFiles.should.equal(3);
- return done();
- });
- dropzone.addFile(mock1);
- dropzone.addFile(mock2);
- return dropzone.addFile(mock3);
- });
- });
- });
- });
- }).call(this);
|