From 2b120ef8860ec764b9dcd1c98d9caf6acb53dc65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Wed, 3 Apr 2013 01:17:17 +0200 Subject: [PATCH] add UploadsController specs --- app/controllers/uploads_controller.rb | 3 + spec/controllers/uploads_controller_spec.rb | 70 ++++++++++++++++++++ spec/fixtures/images/logo-dev.png | Bin 0 -> 3266 bytes spec/fixtures/images/logo.png | Bin 0 -> 2290 bytes 4 files changed, 73 insertions(+) create mode 100644 spec/controllers/uploads_controller_spec.rb create mode 100644 spec/fixtures/images/logo-dev.png create mode 100644 spec/fixtures/images/logo.png diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb index 1e71187bedd..e3554723690 100644 --- a/app/controllers/uploads_controller.rb +++ b/app/controllers/uploads_controller.rb @@ -1,5 +1,8 @@ class UploadsController < ApplicationController + before_filter :ensure_logged_in + def create + requires_parameter(:topic_id) file = params[:file] || params[:files].first upload = Upload.create_for(current_user, file, params[:topic_id]) render_serialized(upload, UploadSerializer, root: false) diff --git a/spec/controllers/uploads_controller_spec.rb b/spec/controllers/uploads_controller_spec.rb new file mode 100644 index 00000000000..6a1da3fc210 --- /dev/null +++ b/spec/controllers/uploads_controller_spec.rb @@ -0,0 +1,70 @@ +require 'spec_helper' + +describe UploadsController do + + it 'requires you to be logged in' do + -> { xhr :post, :create }.should raise_error(Discourse::NotLoggedIn) + end + + context 'logged in' do + + before do + @user = log_in :user + end + + context '.create' do + + context 'missing params' do + it 'raises an error without the topic_id param' do + -> { xhr :post, :create }.should raise_error(Discourse::InvalidParameters) + end + end + + context 'correct params' do + + let(:logo) do + ActionDispatch::Http::UploadedFile.new({ + filename: 'logo.png', + content_type: 'image/png', + tempfile: File.new("#{Rails.root}/spec/fixtures/images/logo.png") + }) + end + + let(:logo_dev) do + ActionDispatch::Http::UploadedFile.new({ + filename: 'logo-dev.png', + content_type: 'image/png', + tempfile: File.new("#{Rails.root}/spec/fixtures/images/logo-dev.png") + }) + end + + let(:files) { [ logo_dev, logo ] } + + context 'with a file' do + it 'is succesful' do + xhr :post, :create, topic_id: 1234, file: logo + response.should be_success + end + end + + context 'with some files' do + + it 'is succesful' do + xhr :post, :create, topic_id: 1234, files: files + response.should be_success + end + + it 'takes the first file' do + xhr :post, :create, topic_id: 1234, files: files + response.body.should match /logo-dev.png/ + end + + end + + end + + end + + end + +end diff --git a/spec/fixtures/images/logo-dev.png b/spec/fixtures/images/logo-dev.png new file mode 100644 index 0000000000000000000000000000000000000000..1b309fc375521a473c1cea08fdd6ed809c834d3b GIT binary patch literal 3266 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 literal 0 HcmV?d00001 diff --git a/spec/fixtures/images/logo.png b/spec/fixtures/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d7600f7ab60abfc7c00f2f9a336777cb0e4515 GIT binary patch literal 2290 zcmeAS@N?(olHy`uVBq!ia0y~yVEDqoz~IEe%)r19p2WR`fq}6tz$e6&fq_9;UV(VT zu$^d0~g^w{x|9`G~Dyb+ z>F?9IUz=U|^QZJ*YkljY%&>Zz!`_Tn=E_Vz@AHQkWp8 z$gpPRmr9#YY1-cx#7MdsFlh|;vo?&&*`v9e1`>Gh$USwE%`$LG*D`RDb z)lI)oH2r(Ol)G`AjFo%9pz!)4EvRo;5)eC_p1 zI9@Cg8@s?z=}ULGyPV<@SH*2A%BKRA9>u#UY))fXv$uOfg66~&?)prjw5-(Q*WDNx z7z9d!{DK+wJ2bo(Fi4nxUg7@w{(^u{fBt4NFtBrbx;TbZ#66vrI)As7KeZ% z?+|&m%hbNVXu;mK)+dhl-@SLaYwM2ZcfOx(?Y+rls;f6UdjDD8XT4^hHnK?U+FSB^ zIa6ubZ-ti(D|tfw~`uVGZa}Is~Dv-Y5hTn{QRcYzCbJ_RbdxbOa zYD+!2u2bUI;~AAN1HISg?+e=@6?kw3_ZH^1mot8bZrU1c`}JjbWyY~!2JVl0(n?Q8 zOj>nd&6Rf_+zk$Iy|ebJ=@I6GAvFu$o6Z)G{=3DrGIr)_%awuZCl7Y^$=Y7diHmx} zy;rENNUNzLcXeLNyVkVNF{{_}wNLJE{Tu5ndFb7~{B6 zPP3ily14>;rGHzF{kvLGemvB3wU740ngW(9FK=ab8f`Cb&XUSKvCua^AiOx!c{*c> zl=MLl*PB;NrERvpJ-V!xbD~O{?JMO!1}baH_U(${`Wq<0cKYZdAK_b?Te3ri1#zhGqf@Hv*k-e?Y2TGqEV6TgoF8u%d6~0w<-4K{okpu2m%HS( zOD0vV&s%;}^~K(^OT8|*Gaq^HCU`60o_(&^$xQ-2s;`1FPWac$7ahs@AA{;?<%e@C!hG7|9bD< z4CC!qXFjwz3+&vLc&%mOpTnwaWuyd~A85B2%FdQnSGE4$$6#w}70mjpmBaVSg*53E zr!&0HyY5K+bdLRo;4`tCp$l>yj(@tH!)eU3IKTaW*MjoJ%e5Wk`3`?r!=gJs^SDH# zL|;_D)eNs#-YBMCkB+IAJ5p{;lZ&n7G~xUD@7Yr=_g{w}BBcWThT& z?gutY8-G`?wn@!xeHb;tJ5rfxi^M+J_z%nO?dB^JeI3Bm`&Ti| z<$7Df>7_rlYJ{I;3CFkiJxykd!?QY7{KFzpeVl`LB+@)+gCOZaiy!ZU%eZ7eb z)c3uKt+nF~e)hog<2s&>OOqx%r5S*C->}*8*8p^(UE%1nz3Nk zlt&5=PcCt-y<{M172zaPUA<2H6My0&cFxbHE47(2LfswS2Wv^JoSq_h!672jK|B97 z-=ny|Ghz$R*MHYI?Q32pf373^+U*nP^;ndQA9G~{&r^Q3^j-gtS62i24Wk)jW6T!* znfjaCN#?g@Z-n}Gp%cch{qyfc#M=v(l^7R(epb5krFwoo$9B(kD^G^(OJmcK?($@g z%01w6YsyUS3;T7K9r)K)%5?+ zcTDzNTIF#4N!SvOzwSPNo;Fe9p_UrzRbF~ zqH)K>jh1PO^^@L}&*(hr;2*PT`PQkM{bNeDyB^MPPdqAc{NKOl_y0fRE6eY7pJv{? zCr;if)W&>*pU}%k_hlX*VsLw+Xc76~-IRXSS6}_hKAJDC+qJJIX*2Vm9~XpI#zuyp zyx{!t)OP_x=flVL6lbWsSlFDFl2Wl?;)8Z}so1*<8;=G5Q*7SGqrlI;WopgTe~DWM4fe$O#} literal 0 HcmV?d00001