From 4d732f10210c6ee49eb7d045263ad1202301534b Mon Sep 17 00:00:00 2001 From: Tom Wilson Date: Sat, 9 Mar 2013 23:16:29 -0500 Subject: [PATCH] added spec and refactored out $ dependency --- .DS_Store | Bin 0 -> 12292 bytes examples/.DS_Store | Bin 0 -> 15364 bytes examples/nodejs/.DS_Store | Bin 0 -> 12292 bytes examples/nodejs/index.html | 24 +- examples/nodejs/libs/.DS_Store | Bin 0 -> 12292 bytes examples/nodejs/libs/js/ng-upload.js | 181 +- examples/nodejs/ng-upload.js | 113 - examples/nodejs/node_modules/.bin/express | 16 +- examples/nodejs/node_modules/.bin/express.cmd | 6 - .../node_modules/buffer-crc32/package.json | 1 - .../node_modules/commander/package.json | 1 - .../connect/node_modules/bytes/package.json | 1 - .../node_modules/formidable/package.json | 1 - .../node_modules/formidable/test/run.js | 0 .../connect/node_modules/pause/package.json | 1 - .../connect/node_modules/qs/package.json | 1 - .../express/node_modules/connect/package.json | 1 - .../cookie-signature/package.json | 1 - .../express/node_modules/cookie/package.json | 1 - .../express/node_modules/fresh/package.json | 1 - .../express/node_modules/mkdirp/package.json | 1 - .../node_modules/range-parser/package.json | 1 - .../send/node_modules/mime/package.json | 1 - .../express/node_modules/send/package.json | 1 - .../nodejs/node_modules/express/package.json | 1 - examples/nodejsfoo.mov | Bin 0 -> 8151853 bytes libs/angular-mocks.js | 1793 ++ libs/angular.js | 14733 ++++++++++++++++ ng-upload.js | 181 +- test/ngUploadSpec.js | 29 +- testacular.conf.js | 70 + 31 files changed, 16813 insertions(+), 348 deletions(-) create mode 100644 .DS_Store create mode 100644 examples/.DS_Store create mode 100644 examples/nodejs/.DS_Store create mode 100644 examples/nodejs/libs/.DS_Store delete mode 100644 examples/nodejs/ng-upload.js mode change 100644 => 120000 examples/nodejs/node_modules/.bin/express delete mode 100644 examples/nodejs/node_modules/.bin/express.cmd mode change 100644 => 100755 examples/nodejs/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js create mode 100644 examples/nodejsfoo.mov create mode 100644 libs/angular-mocks.js create mode 100644 libs/angular.js create mode 100644 testacular.conf.js diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ef1227bbbbb3628b22a5875bbbcb75c703c96087 GIT binary patch literal 12292 zcmeHMU2GIp6u#%Szzm(0TNLfW7MB(k%L4s@@*_XncCqD83fun{%k0ho6Q(oG&TLDp zm5LCbFq#52B7(91owt=1YjTppxlY7tI zd(OFc&$s8ByJwdW0R)NC|jq7<2H5#nUK?&$j$S5(1PMplRGa9lM z3jzUwfIvVXAP^7;+zSZcoz0sx%f0Vw#V8OE2>dS*;LnFRb}o~Fobsjj=)l1%0Z^9X zve$5qb%5s+4`ecsQ@-?EaZkT`fWQ@k5(9j9)W^9w%48s?eCfLr@ZAXnCqq!7fOk6j z#XWNZNneUlARrJ3Bfx8S32XLaL?t7)*Y6qA&YeP8z&R-i49GSiTK*a=E+G}l4SO>w5VqF=8i7)`N_w@GlE5mHzn4ypF9d!-ca(eWf zgL0THa4`BES=;K&>0Cd|DzmDY&6}#Lx0q(ycuseEv$mNZu^eul&Do~eX*&krroYeC zkGb3?r0N@R?3~-?IrbU2zi-9zj=o>V&5bcVg-1Ay$kO`@s^X8YTKiOM$KC>~T=?Ka zixg!5KM>0`4jFo`dz|CkuR2-X(hTcx@0j5j8B_1F)DgWB60%%~E?&Zv>d2!-RjG^2 z&PhWWp0~%=_?}vUEvt#vR!5Xl%Rz3{meX<6B;5Fk6-=p%BudR>rb=B7240A+Uc;0I zr73LT$X!P<&kAf^b9DU%C3IA`sb+MOY54xx<}J~!+rlQjWB%vFcJUzFQY^AaX)irV zlKZmu$Oyva6xfcP(OtX4VLi*k+O0b7-cjAsHFk-|*13;^)>XQnEcJ8i7ERN&+G1+f zChPs_^vWH0)+Up_TE-NuCXFOT`p7|&BNOB_d6S$WACZsAd2)eVB$vrI*NNx2^8i7gT=4}s$nUtgtf2&Q zI<@EoJ?X!BTIA)R|GGHRQ#hN6dZPjL_RK;(B;LT_y-dAt7x;vG_>rn*E7mk`N$uJ< zolGS;b2~G<)c5n(%kg5KdX&5)F*r42k)=v}HfnYwMf775=P{dCh}G0amp>NHUnY4e z8+)=Yx-v0?nj*n5qw5=DN>gNAD5H_BtgH}QzahGDQadU`%OI+QQzB%*qR~ z?N3MBJ7(~n>#;Mod(Sf!OT+47+?>Gs(=jCx=?NVmF_@;+-6GnTq(FZ5NcJbW1@l0G zDAYh5)FZi)(1HZp4(&*?9ykaY&_IVnNU=N|hZm7#C*c&*>~(kxNp=R_fp_5p_z*sY z&){<;+C{jGRO3YZ0e*y^;1~EE{(`^Z79|wue9GuzT0?8;awJ?6(rqicS(~bcemSS+s$pf zy(Fz^+E9fmrKnUv)PE{ew1o<4A0YlADhdiBoYpE;5Jd4Gi}(h?-|X%Mb8+iGR*THS z&Tn_-_nX=I?0jc$<``qpG@vhIEW#L5=oFS~l>EgZ%EdY1KtHF9EKodS`JFzI0L_B@K-3{ zwoY*o*PTJsvoe(gB!P(p#M-@_Wth!$W)!X8UrO~`rjx6!{TQ&Mw5)uRqN*M4pTIiOp-Q7J&t(#99G>xI={+wxNoSjD2 zA=}L>9P0I^w4G_m8lt?LPfaJS^njJj8I6|JYCd2%@w9CX^kp33ozB{p)nYrQsHQ!U zGY;g0&xE2xhht}RYu&(vN%ebPe84fb8&tVDXvC-qhci_ur^q)8Ne{Y24-cij}KYuh9Y@VTYAW85Y;6e>~dQv^Ey(8XxrDC*MrY z8#mp{LzUXrpeIn&MB47_BfL(YH@Doky)_uaZh>J-(#bXV8yQ3A?-Gl6qFuo5460vM z+C@~Ot{ZxFVPIEBYrV^{oN@1?IvVwgRr+{Vu{suG3D(21Y?z&3Pq9<%Rd#`0WS7{R z?0t5bU1eXh@7NFQXZ8#G6%Zx^hgmQis$dQ*fqGa4G1vkLXon6+!+y9QhT#w#h9mG0 zoPa0c88{8k!wc{toP&$-I=llPz(;TyK7lLnC42+l!*7UKie*@i6*wKMZ~-pFMOcTc zu@N_8E2dCK1NWefLpXxR@L_xePvWz98qeWt_?FihEa*G!-4{}Po34sw>~A%eoD7h$ zP;u&JmhqJePrSEJpE1vsb8~!bpt)N8v!-0Jcq80ZLtz9L4Y+ZGM94fGnxjR6M&1sR zm2p53a{`}~50k>D%n23^NhM6WUQ!c0{5jIZp$bihwffL?G@VpV?W3m6ztjq~pz7f*+rkyJ`;$0k>VJ3yLe+M0-b=Ca|u+MimZY()_2y`X0-( zE9@)wExX2kWWR$3Ghsd~hFTJ66dFmS>tF-4z)t9aUNB)FIB*aigySUAN8vGe9G-^f zNTx5tD{vkzz$JKtr1~L=^fR~$pTid<)obt*GNdma$yJE866caw7vU1D!8@@5*Wh~G zhAp_AMB9d4B-;HrfP*C4gLo8=;}dua&lJg3F9_AoKU*xt))(xRVxQKjrJDzUDcKkv=&)>vw%cFkYsAt`9igUxsy5VHK-TWK&XTZ&~jVIUt za{WJkv+iG7{|o)eLlTe#Bmqf45|9KW0ZBj-kOU+FNk9^i1SA1TKoXDy{+|T?0Q%;6 Au>b%7 literal 0 HcmV?d00001 diff --git a/examples/nodejs/.DS_Store b/examples/nodejs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d73daa21074ed3ec7231a9aa9ca9c03ca9af5140 GIT binary patch literal 12292 zcmeHMU2GIp6u#%Szzm(0TNLfW7MB(k%L4s@@*~K$U2OT2!uFRI%k0ho6Q(oG&TLDp zm8uY*Fq#52B7(91owkbR8gNZSS_a<}C zoqNu?ch0xxo7*!bgg|>2n?nS&D0pJXPSv5aYF@cvB5 zT1*H81Ofs9fq+0jAaExjfM+&uQkiq#*NR>sAQ1RpBEa7dalE)p26Eb$-m3#UuLM9@ ziPK)gG2;W2@jxa6Iqgf-U<2P3rSA$si2=Sl&c_40WFV(~>AMpMiVp~OhM+&58Kh=GLhxS(0S-qO_=P_2#Y~^_i(>k5Btg4gvc~q$HB(XNRFVSu=w> za+{ghOlQ2?|29!ERE+KNOla1#J^QP+RZKjzvp4OfItZn8;Er(lYbGB)A+m6AP860r+V=lJ|sRs5t zcFyha90v?s-?w6UN8hL8;>Nh1!Yv#|Wa-@nHSvd6t$nP$YfphyFTD4@MT)W?e*nuh z4jFo`cY@rb;~y240A+Uc;0or6p|P$UR3f zuL^8kYjphvCA3wqsb+MOY54qX^Oor2Tf-*(FEkEDdt&HcivD`eH)XCma3Y%*-u# z)+dv`TE+vfmNb(T86XEqj!cqML!@sD-7l64t^dNI^I3g?%stDjWq9EU>|aDR==+!AtNmyaKPmoA3^tfwOQ9&cjFW z8C--f;4*vzSKwQ?3O~a&xDGccrB$?=E};!HL08e$bUocdJ82i)PSbRl>eQl>^o0NL zw8+CD|GwDMlQ^19x!`kP#qKhcL&EJJx|1pQ^#Y%0_digxY{i<^EvcP*XOgHSS7tN9 zOL;$Uz1%M5r$@zG5`t4Q7Fnvq%Tclysi7Z}IDgr^LaeSny8NMV-ZIHc)!3sA(UpnY zs3{T~Gr6%TrnE%Xg)$jg$|?%6^&6raH-*{7=6K{o=EamYr6cU^$gHvu+xA4Xv+FkA zb3InZcI|$$YH3(qjGGg8Upl5FB7LC^BnC5d`lkr?IVq4IJ#zg{Zo)iJAPRNR0F6kh zB(x#1wm~P7s}BxB1~ky&5K=1-$Kg37*9ka@^m-NEKysaix8QAf58j85;S=~233dT4 zA;mbszJu@K2lxqog+Jg=xJd~GI-fGSnAXvHx*Untf;4-aZl!H>hetGn=1NF*ph&M^ z-kD9Z@pR5IZR;@36-jxkdHK5vUsc2F|83>J|Ce7tXaoWRf&V-LP?<`n+A)lBFA!d9 z$MHId7jN8d+LxXScHD%|d*wLFnSU7KI3DPdft>awYOww59|COa@BGOv&VMW<#QA?$ np8p>IL?;js2nYlO0s;YnfIvVXAP^7;2m}NI0s(=*-HX6qi_r|x literal 0 HcmV?d00001 diff --git a/examples/nodejs/index.html b/examples/nodejs/index.html index 586e68d..dff0d9b 100644 --- a/examples/nodejs/index.html +++ b/examples/nodejs/index.html @@ -27,7 +27,7 @@

Example 1 - Running with default configuration (requirement: v0.1.1 and abov Current value of foo is: {{foo}}. (Works with the active $scope.)

-
+

@@ -53,7 +53,7 @@

Example 2 - Using Options: uploadOptionsEnableControls option (requir

- +

@@ -68,7 +68,7 @@

Example 2 - Using Options: uploadOptionsEnableControls option (requir

Example 3 - Submitting forms with any html element (requirement: v0.1.1 and above)

This examples show how to use any html element to submit your form. It makes use of a 'div', an 'a', and an 'img' tags to submit the same form.
- +

@@ -97,7 +97,7 @@

Example 4 - Processing Callback Function Contents (requirement: v0.2.0 and a

Example 4.1: The example below displays all statuses, without inspection.

- +

@@ -110,7 +110,7 @@

Example 4 - Processing Callback Function Contents (requirement: v0.2.0 and a
Example 4.2: The example below displays only the server response, ignoring other contents

- +

@@ -125,7 +125,7 @@

Example 4 - Processing Callback Function Contents (requirement: v0.2.0 and a

Example 5 - Processing a full form (requirement: v0.2.0)

Post a full form with a file and other inputs (text, etc) to the server and get a JSON result.

- +

@@ -163,7 +163,7 @@

Example 5 - Processing a full form (requirement: v0.2.0)

var app = angular.module('ngUploadApp', ['ngUpload']); app.controller('Example1Ctrl', function ($scope) { $scope.foo = "Hello World"; - $scope.bar = function (content) { + $scope.bar = function(content) { console.log(content); $scope.uploadResponse = content; } @@ -184,14 +184,14 @@

Example 5 - Processing a full form (requirement: v0.2.0)

}); app.controller('Example4Ctrl', function ($scope) { - $scope.uploadFile1 = function (content, isComplete) { + $scope.uploadFile1 = function (content, completed) { console.log(content); $scope.uploadResponse1 = content; }; - $scope.uploadFile2 = function (content, isComplete) { + $scope.uploadFile2 = function (content, completed) { console.log(content); - if (isComplete) + if (completed) $scope.uploadResponse2 = "[Status: Completed] " + content; else $scope.uploadResponse2 = "[Status: Incomplete] Content ignored. Check log the actual content."; @@ -199,8 +199,8 @@

Example 5 - Processing a full form (requirement: v0.2.0)

}); app.controller('Example5Ctrl', function ($scope) { - $scope.uploadComplete = function (content, isComplete) { - if (isComplete && content.length > 0) + $scope.uploadComplete = function (content, completed) { + if (completed && content.length > 0) { $scope.response = JSON.parse(content); // Presumed content is a json string! $scope.response.style = { diff --git a/examples/nodejs/libs/.DS_Store b/examples/nodejs/libs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f7805d309d17e5ab1582fe69df00f1af8b754813 GIT binary patch literal 12292 zcmeHMU2GIp6u#%Szzm(0TNLfW7MB(k%L4s@@*_XncCqD83fun{%k0hoBh#5?XSOBQ zN>zwY7)^}vNrTZB6T^cd_+X6kLLyIQqmhUjec-_uV`2hm44ykP+rSPrAu$H!-em5% zbI&>V&iVFyb9<(Q5NOS74TMw?LL|JnWEI%mqH#UHLX8G9vrq#1lZQC?@k~nJ|Nf`f(iw^-EsZ6 zXHFpLOVJAi1Oj0Mc#RzNU|&`L%oKj+2gHt-qM`G z^dWmZZD@K%&F%BXuIlEURyF5oI#u@&YP@lmZJRhA3aon#%{?^CswO6y);A>Ljm?dd ziTK32rp82kbz}47q%27?dr?|YvvOlcm-@`)vqz`=r-p#}BvKN^^TiM}Cu?SKH*V;~ zWIAJ=eoSS9{F?-i>Ed)ub1Rg{J>5OMef`QXn?Gjggp|~nKqu*o!+c%=0_}tTW52&X?EI@89?AI*EnG4 zx$bd}XTR!XbxSj>gS}&hV`NOd%Th=5N=V3ZA-Zr8Q>r5m7FDG#GCM5|X}I4mTjOhL z1-7InT3a1aN-YPuRa;KSUXyU)N0u?AE|MrUlbI@YIT&~$x^fj$8kDB6g(G(z#(XNU zHOy*$|-KLt+O{U@VvyGdgo415bddK|ViS6J)wxw8Pfzn>OlO*?L?U50L%PFvJ z+oL;nhQoT2hqY66+})$PrEBawkF9eL2d%4gJz47K)-9T*YqiBhtWDPY!|9ou@T^TH zeYK2-Ts3JVDbh#wlN^~KC&=sMB>8}RNY0S6bpgLg9BzMkik?EVL;mMmMVzWHrA?spFi_#YMc4Sswh;4m5+TL*s@7W$B zV>@>}QL#9zF2>DCyEh$E5|N(J1`>m5D*aRB`kWNVj~=mpC)Z&PC=i7jsDpYWR1#W{ zR9m4PiPZ!9Ap;udZ~$qQhokTu66+WoM{2zaZy>Qw!dvh*ya(^Y$M6Y!isU*67m!|@ zT;IX>@B{n=zrr8zCtRn50-Z}4T}W$aEnSKvYeI@`rdwzW-R_ahpt%x)?JH6%n0JZ< z8%yUb)3y%ceUXeeo8I1CnQvaj>;J7YfB(O|MTNCMKp^m+LIBEB=~OE|@=PxkUTeqk z+K(4++-}O3o(p!|gwK2BILhgN7~(h{=#qh)@+E4p{p%kB{{GKxasFcwAt<8 literal 0 HcmV?d00001 diff --git a/examples/nodejs/libs/js/ng-upload.js b/examples/nodejs/libs/js/ng-upload.js index 264ed32..7223dbb 100644 --- a/examples/nodejs/libs/js/ng-upload.js +++ b/examples/nodejs/libs/js/ng-upload.js @@ -21,96 +21,91 @@ // }); // angular.module('ngUpload', []) - .directive('ngUpload', function () { - return { - restrict: 'A', - link: function (scope, element, attrs) { - - // Options (just 1 for now) - // Each option should be prefixed with 'upload-Options-' or 'uploadOptions' - // { - // // specify whether to enable the submit button when uploading forms - // enableControls: bool - // } - var options = {}; - options.enableControls = attrs['uploadOptionsEnableControls']; - - // get scope function to execute on successful form upload - if (attrs['ngUpload']) { - - element.attr("target", "upload_iframe"); - element.attr("method", "post"); - - // Append a timestamp field to the url to prevent browser caching results - element.attr("action", element.attr("action") + "?_t=" + new Date().getTime()); - - element.attr("enctype", "multipart/form-data"); - element.attr("encoding", "multipart/form-data"); - - // Retrieve the callback function - var fn = attrs['ngUpload'].split('(')[0]; - var callbackFn = scope.$eval(fn); - if (callbackFn == null || callbackFn == undefined || !angular.isFunction(callbackFn)) - { - var message = "The expression on the ngUpload directive does not point to a valid function."; - // console.error(message); - throw message + "\n"; - } - - // Helper function to create new iframe for each form submission - var addNewDisposableIframe = function (submitControl) { - // create a new iframe - var iframe = $("