OSDN Git Service

Merge branch 'master' into v03_test
[pettanr/pettanr.git] / spec / controllers / original_pictures_controller_spec.rb
1 # -*- encoding: utf-8 -*-
2 require 'spec_helper'
3
4 describe OriginalPicturesController do
5   before do
6     Factory :admin
7     @user = Factory( :user_yas)
8     @author = @user.author
9     @artist = Factory :artist_yas, :author_id => @author.id
10   end
11
12   describe '一覧表示に於いて' do
13     before do
14       @op = Factory :original_picture, :artist_id => @artist.id 
15       sign_in @user
16       OriginalPicture.stub(:list).and_return([@op, @op, @op])
17     end
18     context 'パラメータpageについて' do
19       it '@pageに値が入る' do
20         get :index, :page => 5
21         assigns(:page).should eq 5
22       end
23       it '省略されると@pageに1値が入る' do
24         get :index
25         assigns(:page).should eq 1
26       end
27       it '与えられたpage_sizeがセットされている' do
28         get :index, :page_size => 15
29         assigns(:page_size).should eq 15
30       end
31       it '省略されると@page_sizeにデフォルト値が入る' do
32         get :index
33         assigns(:page_size).should eq OriginalPicture.default_page_size\r
34       end
35       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
36         get :index, :page_size => 1500
37         assigns(:page_size).should eq OriginalPicture.max_page_size
38       end
39       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
40         get :index, :page_size => 0
41         assigns(:page_size).should eq OriginalPicture.default_page_size
42       end
43     end
44     context 'つつがなく終わるとき' do
45       it 'ステータスコード200 OKを返す' do
46         get :index
47         response.should be_success 
48       end
49       it '原画モデルに一覧を問い合わせている' do
50         OriginalPicture.should_receive(:list).exactly(1)\r
51         get :index
52       end
53       it '@original_picturesにリストを取得している' do
54         get :index
55         assigns(:original_pictures).should have_at_least(3).items
56       end
57       context 'html形式' do
58         it 'indexテンプレートを描画する' do
59           get :index
60           response.should render_template("index")
61         end
62       end
63       context 'json形式' do
64         it 'jsonデータを返す' do
65           get :index, :format => :json
66           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
67         end
68         it 'データがリスト構造になっている' do
69           get :index, :format => :json
70           json = JSON.parse response.body
71           json.should have_at_least(3).items
72         end
73         it 'リストの先頭くらいは原画っぽいものであって欲しい' do
74           get :index, :format => :json
75           json = JSON.parse response.body
76           json.first.has_key?("ext").should be_true
77         end
78       end
79     end
80     context '作家権限がないとき' do
81       before do
82         sign_out @user
83       end
84       context 'html形式' do
85         it 'ステータスコード302 Foundを返す' do
86           get :index
87           response.status.should eq 302
88         end
89         it 'サインインページへ遷移する' do
90           get :index
91           response.should redirect_to '/users/sign_in'
92         end
93       end
94       context 'json形式' do
95         it 'ステータスコード401 Unauthorizedを返す' do
96           get :index, :format => :json
97           response.status.should eq 401
98         end
99         it '応答メッセージにUnauthorizedを返す' do
100           get :index, :format => :json
101           response.message.should match(/Unauthorized/)
102         end
103       end
104     end
105     context '作家が絵師でないとき' do
106       before do
107         Author.any_instance.stub(:artist?).and_return(false)
108       end
109       context 'html形式' do
110         it 'ステータスコード302 Foundを返す' do
111           get :index
112           response.status.should eq 302
113         end
114         it '絵師登録ページへ遷移する' do
115           get :index
116           response.should redirect_to new_artist_path
117         end
118       end
119       context 'json形式' do
120         it '例外403 forbiddenを返す' do
121           lambda{
122             get :index, :format => :json
123           }.should raise_error(ActiveRecord::Forbidden)
124         end
125       end
126     end
127   end
128   
129   describe '単体表示に於いて' do
130     before do
131       @pic = Factory :original_picture, :artist_id => @artist.id 
132       sign_in @user
133       OriginalPicture.stub(:show).and_return(@pic)
134     end
135     context 'つつがなく終わるとき' do
136       it 'ステータスコード200 OKを返す' do
137         get :show, :id => @pic.id
138         response.should be_success
139       end
140       it '原画モデルに単体取得を問い合わせている' do
141         OriginalPicture.should_receive(:show).exactly(1)\r
142         get :show
143       end
144       it '@original_pictureにアレを取得している' do
145         get :show, :id => @pic.id
146         assigns(:original_picture).id.should eq(@pic.id)
147       end
148       context 'html形式' do
149         it 'showテンプレートを描画する' do
150           get :show, :id => @pic.id
151           response.should render_template("show")
152         end
153       end
154       context 'json形式' do
155         it 'jsonデータを返す' do
156           get :show, :id => @pic.id, :format => :json
157           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
158         end
159         it 'データがアレになっている' do
160           get :show, :id => @pic.id, :format => :json
161           json = JSON.parse response.body
162           json["ext"].should match(/png/)
163         end
164       end
165       #画像送信では、send_dataにスタブをおいてテストしたいが、ここに噛ませると
166       #renderが働かず、エラーとなってしまう。そこで、原画のファイル取得部分に
167       #スタブをおいてsend_dataがデータを返す体裁でテストする。
168       context 'png形式' do
169         it '画像モデルに画像データを問い合わせる' do
170           OriginalPicture.any_instance.should_receive(:restore).exactly(1)\r
171           get :show, :id => @pic.id, :format => :png
172         end
173         it '画像を送信する' do
174           OriginalPicture.any_instance.stub(:restore).and_return('aaa')\r
175           get :show, :id => @pic.id, :format => :png
176           response.body.should eq 'aaa'
177         end
178       end
179       context 'gif形式' do
180         it '画像モデルに画像データを問い合わせる' do
181           OriginalPicture.any_instance.should_receive(:restore).exactly(1)\r
182           get :show, :id => @pic.id, :format => :gif
183         end
184         it '画像を送信する' do
185           OriginalPicture.any_instance.stub(:restore).and_return('bbb')\r
186           get :show, :id => @pic.id, :format => :gif
187           response.body.should eq 'bbb'
188         end
189       end
190       context 'jpeg形式' do
191         it '画像モデルに画像データを問い合わせる' do
192           OriginalPicture.any_instance.should_receive(:restore).exactly(1)\r
193           get :show, :id => @pic.id, :format => :jpeg
194         end
195         it '画像を送信する' do
196           OriginalPicture.any_instance.stub(:restore).and_return('ccc')\r
197           get :show, :id => @pic.id, :format => :jpeg
198           response.body.should eq 'ccc'
199         end
200       end
201     end
202     context '作家権限がないとき' do
203       before do
204         sign_out @user
205       end
206       context 'html形式' do
207         it 'ステータスコード302 Foundを返す' do
208           get :show, :id => @pic.id
209           response.status.should eq 302
210         end
211         it 'サインインページへ遷移する' do
212           get :show, :id => @pic.id
213           response.body.should redirect_to '/users/sign_in'
214         end
215       end
216       context 'json形式' do
217         it 'ステータスコード401 Unauthorizedを返す' do
218           get :show, :id => @pic.id, :format => :json
219           response.status.should eq 401
220         end
221         it '応答メッセージにUnauthorizedを返す' do
222           get :show, :id => @pic.id, :format => :json
223           response.message.should match(/Unauthorized/)
224         end
225       end
226     end
227     context '作家が絵師でないとき' do
228       before do
229         Author.any_instance.stub(:artist?).and_return(false)
230       end
231       context 'html形式' do
232         it 'ステータスコード302 Foundを返す' do
233           get :show, :id => @pic.id
234           response.status.should eq 302
235         end
236         it '絵師登録ページへ遷移する' do
237           get :show, :id => @pic.id
238           response.should redirect_to new_artist_path
239         end
240       end
241       context 'json形式' do
242         it '例外403 forbiddenを返す' do
243           lambda{
244             get :show, :id => @pic.id, :format => :json
245           }.should raise_error(ActiveRecord::Forbidden)
246         end
247       end
248     end
249 =begin
250     context '対象原画がないとき' do
251       before do
252         OriginalPicture.unstub(:show)
253       end
254       context 'html形式' do
255         it '例外404 not_foundを返す' do
256           lambda{
257             get :show, :id => 0
258           }.should raise_error(ActiveRecord::RecordNotFound)
259         end
260       end
261       context 'json形式' do
262         it '例外404 not_foundを返す' do
263           lambda{ 
264             get :show, :id => 0, :format => :json
265           }.should raise_error(ActiveRecord::RecordNotFound)
266         end
267       end
268     end
269     context '他人の原画を見ようとしたとき' do
270       before do
271         OriginalPicture.stub(:show).and_return(@pic)
272         OriginalPicture.any_instance.stub(:own?).with(any_args()).and_return(false)
273       end
274       context 'html形式' do
275         it '例外403 forbiddenを返す' do
276           lambda{
277             get :show, :id => @pic.id
278           }.should raise_error(ActiveRecord::Forbidden)
279         end
280       end
281       context 'json形式' do
282         it '例外403 forbiddenを返す' do
283           lambda{
284             get :show, :id => @pic.id, :format => :json
285           }.should raise_error(ActiveRecord::Forbidden)
286         end
287       end
288     end
289 =end
290   end
291
292   describe '新規作成フォーム表示に於いて' do
293     before do
294       sign_in @user
295     end
296     context 'つつがなく終わるとき' do
297       it 'ステータスコード200 OKを返す' do
298         get :new
299         response.should be_success 
300       end
301       it '@original_pictureに新規データを用意している' do
302         get :new
303         assigns(:original_picture).should be_a_new(OriginalPicture)
304       end
305       it '原画モデルにデフォルト値補充を依頼している' do
306         OriginalPicture.any_instance.should_receive(:supply_default).exactly(1)\r
307         get :new
308       end
309       context 'html形式' do
310         it 'ページテンプレートnewを描画する' do
311           get :new
312           response.should render_template("new")
313         end
314       end
315       context 'js形式' do
316         it '部分テンプレートnew.jsを描画する' do
317           get :new, :format => :js
318           response.should render_template("new")
319         end
320       end
321     end
322     context '作家権限がないとき' do
323       before do
324         sign_out @user
325       end
326       context 'html形式' do
327         it 'ステータスコード302 Foundを返す' do
328           get :new
329           response.status.should eq 302
330         end
331         it 'サインインページへ遷移する' do
332           get :new
333           response.body.should redirect_to '/users/sign_in'
334         end
335       end
336       context 'js形式' do
337         it 'ステータスコード401 Unauthorizedを返す' do
338           get :new, :format => :js
339           response.status.should eq 401
340         end
341         it '応答メッセージにUnauthorizedを返す' do
342           get :new, :format => :js
343           response.message.should match(/Unauthorized/)
344         end
345       end
346     end
347     context '作家が絵師でないとき' do
348       before do
349         Author.any_instance.stub(:artist?).and_return(false)
350       end
351       context 'html形式' do
352         it 'ステータスコード302 Foundを返す' do
353           get :new
354           response.status.should eq 302
355         end
356         it '絵師登録ページへ遷移する' do
357           get :new
358           response.should redirect_to new_artist_path
359         end
360       end
361       context 'js形式' do
362         it 'ステータスコード200 Okを返す' do
363           get :new, :format => :js
364           response.status.should eq 200
365         end
366         it '絵師登録部分テンプレートartists/new.jsを描画する' do
367           get :new, :format => :js
368           response.should render_template("artists/new")
369         end
370       end
371     end
372   end
373
374   describe '新規作成に於いて' do
375     before do
376       sign_in @user
377     end
378     context 'つつがなく終わるとき' do
379       it 'モデルに保存依頼する' do
380         OriginalPicture.any_instance.should_receive(:save).exactly(1)
381         post :create, :original_picture => Factory.attributes_for(:original_picture)
382       end
383       it "@original_pictureに作成された原画を保持していて、それがDBにある" do
384         post :create, :original_picture => Factory.attributes_for(:original_picture)
385         assigns(:original_picture).should be_a(OriginalPicture)
386         assigns(:original_picture).should be_persisted
387       end
388       context 'html形式' do
389         it 'ステータスコード302 Foundを返す' do
390           OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
391           OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
392           post :create, :original_picture => Factory.attributes_for(:original_picture)
393           response.status.should eq 302
394         end
395         it '作成された原画の表示ページへ遷移する' do
396           OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
397           OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
398           post :create, :original_picture => Factory.attributes_for(:original_picture)
399           response.should redirect_to(OriginalPicture.last)
400         end
401       end
402       context 'json形式' do
403         it 'ステータスコード200 OKを返す' do
404           OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
405           OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
406           post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
407           response.should be_success 
408         end
409         it '作成された原画をjsonデータで返す' do
410           OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
411           OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
412           post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
413           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
414         end
415         it 'データがアレになっている' do
416           OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
417           OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
418           post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
419           json = JSON.parse response.body
420           json["ext"].should match(/png/)
421         end
422       end
423     end
424     context '作家権限がないとき' do
425       before do
426         sign_out @user
427       end
428       context 'html形式' do
429         it 'ステータスコード302 Foundを返す' do
430           post :create, :original_picture => Factory.attributes_for(:original_picture)
431           response.status.should eq 302
432         end
433         it 'サインインページへ遷移する' do
434           post :create, :original_picture => Factory.attributes_for(:original_picture)
435           response.body.should redirect_to '/users/sign_in'
436         end
437       end
438       context 'json形式' do
439         it 'ステータスコード401 Unauthorizedを返す' do
440           post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
441           response.status.should eq 401
442         end
443         it '応答メッセージにUnauthorizedを返す' do
444           post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
445           response.message.should match(/Unauthorized/)
446         end
447       end
448     end
449     context '作家が絵師でないとき' do
450       before do
451         Author.any_instance.stub(:artist?).and_return(false)
452       end
453       context 'html形式' do
454         it 'ステータスコード302 Foundを返す' do
455           post :create, :original_picture => Factory.attributes_for(:original_picture)
456           response.status.should eq 302
457         end
458         it '絵師登録ページへ遷移する' do
459           post :create, :original_picture => Factory.attributes_for(:original_picture)
460           response.should redirect_to new_artist_path
461         end
462       end
463       context 'json形式' do
464         it '例外403 forbiddenを返す' do
465           lambda{
466             post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
467           }.should raise_error(ActiveRecord::Forbidden)
468         end
469       end
470     end
471     context '検証、保存に失敗した' do
472       before do
473         OriginalPicture.any_instance.stub(:save).and_return(false)
474       end
475       it "未保存のコミックを保持している" do
476         post :create, :original_picture => Factory.attributes_for(:original_picture)
477         assigns(:original_picture).should be_a_new(OriginalPicture)
478       end
479       context 'html形式' do
480         it 'ステータスコード200 OKを返す' do
481           post :create, :original_picture => Factory.attributes_for(:original_picture)
482           response.status.should eq 200
483         end
484         it '新規ページを描画する' do
485           post :create, :original_picture => Factory.attributes_for(:original_picture)
486           response.should render_template("new")
487         end
488       end
489       context 'json形式' do
490         it 'ステータスコード422 unprocessable_entity を返す' do
491           post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
492           response.status.should eq 422
493         end
494         it '応答メッセージUnprocessable Entityを返す' do
495           post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
496           response.message.should match(/Unprocessable/)
497         end
498       end
499     end
500   end
501
502   describe '編集フォーム表示に於いて' do
503     before do
504       @pic = Factory :original_picture, :artist_id => @artist.id 
505       sign_in @user
506       OriginalPicture.stub(:show).and_return(@pic)
507     end
508     context 'つつがなく終わるとき' do
509       it 'ステータスコード200 OKを返す' do
510         get :edit, :id => @pic.id
511         response.should be_success 
512       end
513       it '原画モデルに単体取得を問い合わせている' do
514         OriginalPicture.should_receive(:show).exactly(1)\r
515         get :edit, :id => @pic.id
516       end
517       it '@original_pictureにデータを用意している' do
518         get :edit, :id => @pic.id
519         assigns(:original_picture).should eq @pic
520       end
521       context 'html形式' do
522         it 'ページテンプレートeditを描画する' do
523           get :edit, :id => @pic.id
524           response.should render_template("edit")
525         end
526       end
527       context 'js形式' do
528         it '部分テンプレートedit.jsを描画する' do
529           get :edit, :id => @pic.id, :format => :js
530           response.should render_template("edit")
531         end
532       end
533     end
534     context '作家権限がないとき' do
535       before do
536         sign_out @user
537       end
538       context 'html形式' do
539         it 'ステータスコード302 Foundを返す' do
540           get :edit, :id => @pic.id
541           response.status.should eq 302
542         end
543         it 'サインインページへ遷移する' do
544           get :edit, :id => @pic.id
545           response.body.should redirect_to '/users/sign_in'
546         end
547       end
548       context 'js形式' do
549         it 'ステータスコード401 Unauthorizedを返す' do
550           get :edit, :id => @pic.id, :format => :js
551           response.status.should eq 401
552         end
553         it '応答メッセージにUnauthorizedを返す' do
554           get :edit, :id => @pic.id, :format => :js
555           response.message.should match(/Unauthorized/)
556         end
557       end
558     end
559     context '作家が絵師でないとき' do
560       before do
561         Author.any_instance.stub(:artist?).and_return(false)
562       end
563       context 'html形式' do
564         it 'ステータスコード302 Foundを返す' do
565           get :edit, :id => @pic.id
566           response.status.should eq 302
567         end
568         it '絵師登録ページへ遷移する' do
569           get :edit, :id => @pic.id
570           response.should redirect_to new_artist_path
571         end
572       end
573       context 'js形式' do
574         it 'ステータスコード200 Okを返す' do
575           get :edit, :id => @pic.id, :format => :js
576           response.status.should eq 200
577         end
578         it '絵師登録部分テンプレートartists/new.jsを描画する' do
579           get :edit, :id => @pic.id, :format => :js
580           response.should render_template("artists/new")
581         end
582       end
583     end
584   end
585
586   describe '更新に於いて' do
587     before do
588       @pic = Factory :original_picture, :artist_id => @artist.id 
589       sign_in @user
590     end
591     context '事前チェックしておく' do
592       it '原画モデルに単体取得を問い合わせている' do
593         OriginalPicture.should_receive(:show).exactly(1)\r
594         put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture)
595       end
596       it 'モデルに更新を依頼する' do
597         OriginalPicture.any_instance.stub(:own?).with(any_args()).and_return(true)
598         OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
599         OriginalPicture.any_instance.should_receive(:save).exactly(1)
600         put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture)
601       end
602       it '@original_pictureにアレを取得している' do
603         OriginalPicture.any_instance.stub(:own?).with(any_args()).and_return(true)
604         OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
605         OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
606         put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture)
607         assigns(:original_picture).id.should eq(@pic.id)
608       end
609     end
610     context 'つつがなく終わるとき' do
611       it '更新される' do
612         OriginalPicture.any_instance.stub(:own?).with(any_args()).and_return(true)
613         OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
614         put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture, :ext => 'jpeg')
615         OriginalPicture.find(@pic.id).ext.should eq 'jpeg'
616       end
617       context 'html形式' do
618         it 'ステータスコード302 Foundを返す' do
619           OriginalPicture.any_instance.stub(:own?).with(any_args()).and_return(true)
620           OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
621           OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
622           put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture)
623           response.status.should eq 302
624         end
625         it '更新された原画の表示ページへ遷移する' do
626           OriginalPicture.any_instance.stub(:own?).with(any_args()).and_return(true)
627           OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
628           OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
629           put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture)
630           response.should redirect_to(@pic)
631         end
632       end
633       context 'json形式' do
634         it 'ステータスコード200 OKを返す' do
635           OriginalPicture.any_instance.stub(:own?).with(any_args()).and_return(true)
636           OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
637           OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
638           put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture), :format => :json
639           response.should be_success 
640         end
641         it 'ページ本体は特に返さない' do
642           OriginalPicture.any_instance.stub(:own?).with(any_args()).and_return(true)
643           OriginalPicture.any_instance.stub(:save).with(any_args()).and_return(true)
644           OriginalPicture.any_instance.stub(:store).with(any_args()).and_return(true)
645           put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture), :format => :json
646           response.body.should match /./
647         end
648       end
649     end
650     context '作家権限がないとき' do
651       before do
652         sign_out @user
653       end
654       context 'html形式' do
655         it 'ステータスコード302 Foundを返す' do
656           post :create, :original_picture => Factory.attributes_for(:original_picture)
657           response.status.should eq 302
658         end
659         it 'サインインページへ遷移する' do
660           post :create, :original_picture => Factory.attributes_for(:original_picture)
661           response.body.should redirect_to '/users/sign_in'
662         end
663       end
664       context 'json形式' do
665         it 'ステータスコード401 Unauthorizedを返す' do
666           post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
667           response.status.should eq 401
668         end
669         it '応答メッセージにUnauthorizedを返す' do
670           post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
671           response.message.should match(/Unauthorized/)
672         end
673       end
674     end
675     context '作家が絵師でないとき' do
676       before do
677         Author.any_instance.stub(:artist?).and_return(false)
678       end
679       context 'html形式' do
680         it 'ステータスコード302 Foundを返す' do
681           post :create, :original_picture => Factory.attributes_for(:original_picture)
682           response.status.should eq 302
683         end
684         it '絵師登録ページへ遷移する' do
685           post :create, :original_picture => Factory.attributes_for(:original_picture)
686           response.should redirect_to new_artist_path
687         end
688       end
689       context 'json形式' do
690         it '例外403 forbiddenを返す' do
691           lambda{
692             post :create, :original_picture => Factory.attributes_for(:original_picture), :format => :json
693           }.should raise_error(ActiveRecord::Forbidden)
694         end
695       end
696     end
697     context '検証、保存に失敗した' do
698       before do
699         OriginalPicture.any_instance.stub(:save).and_return(false)
700       end
701       context 'html形式' do
702         it 'ステータスコード200 Okを返す' do
703           put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture)
704           response.status.should eq 200
705         end
706         it '編集ページを描画する' do
707           put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture)
708           response.should render_template("edit")
709         end
710       end
711       context 'json形式' do
712         it 'ステータスコード422 unprocessable_entity を返す' do
713           put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture), :format => :json
714           response.status.should eq 422
715         end
716         it '応答メッセージUnprocessable Entityを返す' do
717           put :update, :id => @pic.id, :original_picture => Factory.attributes_for(:original_picture), :format => :json
718           response.message.should match(/Unprocessable/)
719         end
720       end
721     end
722   end
723
724 end