OSDN Git Service

v07
[pettanr/pettanr.git] / spec / controllers / home_controller_spec.rb
1 # -*- encoding: utf-8 -*-
2 require 'spec_helper'
3 #ユーザホーム
4
5 describe HomeController do
6   before do
7     SpeechBalloonTemplate.delete_all
8     @admin =FactoryGirl.create :admin
9     @sp = FactoryGirl.create :system_picture
10     @lg = FactoryGirl.create :license_group
11     @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id
12     @speech_balloon_template = FactoryGirl.create :speech_balloon_template, "name" => "circle@pettan.com", "classname" => "CircleSpeechBalloon", "caption" => "cc",  "system_picture_id" => @sp.id, "settings" => '{}'
13     @writing_format = FactoryGirl.create :writing_format
14     @user = FactoryGirl.create( :user_yas)
15     @author = FactoryGirl.create :author, :user_id => @user.id
16     @artist = FactoryGirl.create :artist_yas, :author_id => @author.id
17     @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
18     @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id
19     @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op.id, :picture_id => @p.id
20     @panel = FactoryGirl.create :panel, :author_id => @author.id
21   end
22   
23 if MagicNumber['run_mode'] == 1
24   describe '自分のスクロール一覧表示に於いて' do
25     before do
26       @scroll = FactoryGirl.create :scroll, :author_id => @author.id
27       sign_in @user
28       Scroll.stub(:mylist).and_return([@scroll, @scroll, @scroll])
29     end
30     context 'パラメータpageについて' do
31       it '@pageに値が入る' do
32         get :scrolls, :page => 5
33         assigns(:page).should eq 5
34       end
35       it '省略されると@pageに1値が入る' do
36         get :scrolls
37         assigns(:page).should eq 1
38       end
39       it '与えられたpage_sizeがセットされている' do
40         get :scrolls, :page_size => 15
41         assigns(:page_size).should eq 15
42       end
43       it '省略されると@page_sizeにデフォルト値が入る' do
44         get :scrolls
45         assigns(:page_size).should eq Author.default_scroll_page_size
46       end
47       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
48         get :scrolls, :page_size => 1500
49         assigns(:page_size).should eq Author.scroll_max_page_size
50       end
51       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
52         get :scrolls, :page_size => 0
53         assigns(:page_size).should eq Author.default_scroll_page_size
54       end
55     end
56     context 'つつがなく終わるとき' do
57       it 'ステータスコード200 OKを返す' do
58         get :scrolls
59         response.should be_success 
60       end
61       it 'スクロールモデルに一覧を問い合わせている' do
62         Scroll.should_receive(:mylist).exactly(1)
63         get :scrolls
64       end
65       it '@scrollsにリストを取得している' do
66         get :scrolls
67         assigns(:scrolls).should have_at_least(3).items
68       end
69       context 'html形式' do
70         it '@paginateにページ制御を取得している' do
71           get :scrolls
72           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
73         end
74         it 'scrollsテンプレートを描画する' do
75           get :scrolls
76           response.should render_template("scrolls")
77         end
78       end
79       context 'json形式' do
80         it 'jsonデータを返す' do
81           get :scrolls, :format => :json
82           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
83         end
84         it 'スクロールモデルにjson一覧出力オプションを問い合わせている' do
85           Scroll.should_receive(:list_json_opt).exactly(1)
86           get :scrolls, :format => :json
87         end
88         it 'データがリスト構造になっている' do
89           get :scrolls, :format => :json
90           json = JSON.parse response.body
91           json.should have_at_least(3).items
92         end
93         it 'リストの先頭くらいはスクロールっぽいものであって欲しい' do
94           get :scrolls, :format => :json
95           json = JSON.parse response.body
96           json.first.has_key?("title").should be_true
97           json.first.has_key?("visible").should be_true
98         end
99       end
100     end
101     context '作家権限がないとき' do
102       before do
103         sign_out @user
104       end
105       context 'html形式' do
106         it 'ステータスコード302 Foundを返す' do
107           get :scrolls
108           response.status.should eq 302
109         end
110         it 'サインインページへ遷移する' do
111           get :scrolls
112           response.should redirect_to '/users/sign_in'
113         end
114       end
115       context 'json形式' do
116         it 'ステータスコード401 Unauthorizedを返す' do
117           get :scrolls, :format => :json
118           response.status.should eq 401
119         end
120         it '応答メッセージにUnauthorizedを返す' do
121           get :scrolls, :format => :json
122           response.message.should match(/Unauthorized/)
123         end
124       end
125     end
126   end
127   
128   describe '自分のスクコマ一覧表示に於いて' do
129     before do
130       @scroll = FactoryGirl.create :scroll, :author_id => @author.id
131       @scroll_panel = FactoryGirl.create :scroll_panel, :author_id => @author.id, :scroll_id => @scroll.id
132       sign_in @user
133       ScrollPanel.stub(:mylist).and_return([@scroll_panel, @scroll_panel, @scroll_panel])
134     end
135     context 'パラメータpageについて' do
136       it '@pageに値が入る' do
137         get :scroll_panels, :page => 5
138         assigns(:page).should eq 5
139       end
140       it '省略されると@pageに1値が入る' do
141         get :scroll_panels
142         assigns(:page).should eq 1
143       end
144       it '与えられたpage_sizeがセットされている' do
145         get :scroll_panels, :page_size => 15
146         assigns(:page_size).should eq 15
147       end
148       it '省略されると@page_sizeにデフォルト値が入る' do
149         get :scroll_panels
150         assigns(:page_size).should eq Author.default_scroll_panel_page_size
151       end
152       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
153         get :scroll_panels, :page_size => 1500
154         assigns(:page_size).should eq Author.scroll_panel_max_page_size
155       end
156       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
157         get :scroll_panels, :page_size => 0
158         assigns(:page_size).should eq Author.default_scroll_panel_page_size
159       end
160     end
161     context 'つつがなく終わるとき' do
162       it 'ステータスコード200 OKを返す' do
163         get :scroll_panels
164         response.should be_success 
165       end
166       it 'スクコマモデルに一覧を問い合わせている' do
167         ScrollPanel.should_receive(:mylist).exactly(1)
168         get :scroll_panels
169       end
170       it '@scroll_panelsにリストを取得している' do
171         get :scroll_panels
172         assigns(:scroll_panels).should have_at_least(3).items
173       end
174       context 'html形式' do
175         it '@paginateにページ制御を取得している' do
176           get :scroll_panels
177           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
178         end
179         it 'scroll_panelsテンプレートを描画する' do
180           get :scroll_panels
181           response.should render_template("scroll_panels")
182         end
183       end
184       context 'json形式' do
185         it 'jsonデータを返す' do
186           get :scroll_panels, :format => :json
187           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
188         end
189         it 'スクコマモデルにjson一覧出力オプションを問い合わせている' do
190           ScrollPanel.should_receive(:list_json_opt).exactly(1)
191           get :scroll_panels, :format => :json
192         end
193         it 'データがリスト構造になっている' do
194           get :scroll_panels, :format => :json
195           json = JSON.parse response.body
196           json.should have_at_least(3).items
197         end
198         it 'リストの先頭くらいはスクコマっぽいものであって欲しい' do
199           get :scroll_panels, :format => :json
200           json = JSON.parse response.body
201           json.first.has_key?("scroll_id").should be_true
202           json.first.has_key?("panel_id").should be_true
203         end
204       end
205     end
206     context '作家権限がないとき' do
207       before do
208         sign_out @user
209       end
210       context 'html形式' do
211         it 'ステータスコード302 Foundを返す' do
212           get :scroll_panels
213           response.status.should eq 302
214         end
215         it 'サインインページへ遷移する' do
216           get :scroll_panels
217           response.should redirect_to '/users/sign_in'
218         end
219       end
220       context 'json形式' do
221         it 'ステータスコード401 Unauthorizedを返す' do
222           get :scroll_panels, :format => :json
223           response.status.should eq 401
224         end
225         it '応答メッセージにUnauthorizedを返す' do
226           get :scroll_panels, :format => :json
227           response.message.should match(/Unauthorized/)
228         end
229       end
230     end
231   end
232   
233   describe '自分のコミック一覧表示に於いて' do
234     before do
235       @comic = FactoryGirl.create :comic, :author_id => @author.id
236       sign_in @user
237       Comic.stub(:mylist).and_return([@comic, @comic, @comic])
238     end
239     context 'パラメータpageについて' do
240       it '@pageに値が入る' do
241         get :comics, :page => 5
242         assigns(:page).should eq 5
243       end
244       it '省略されると@pageに1値が入る' do
245         get :comics
246         assigns(:page).should eq 1
247       end
248       it '与えられたpage_sizeがセットされている' do
249         get :comics, :page_size => 15
250         assigns(:page_size).should eq 15
251       end
252       it '省略されると@page_sizeにデフォルト値が入る' do
253         get :comics
254         assigns(:page_size).should eq Author.default_comic_page_size
255       end
256       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
257         get :comics, :page_size => 1500
258         assigns(:page_size).should eq Author.comic_max_page_size
259       end
260       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
261         get :comics, :page_size => 0
262         assigns(:page_size).should eq Author.default_comic_page_size
263       end
264     end
265     context 'つつがなく終わるとき' do
266       it 'ステータスコード200 OKを返す' do
267         get :comics
268         response.should be_success 
269       end
270       it 'コミックモデルに一覧を問い合わせている' do
271         Comic.should_receive(:mylist).exactly(1)
272         get :comics
273       end
274       it '@comicsにリストを取得している' do
275         get :comics
276         assigns(:comics).should have_at_least(3).items
277       end
278       context 'html形式' do
279         it '@paginateにページ制御を取得している' do
280           get :comics
281           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
282         end
283         it 'comicsテンプレートを描画する' do
284           get :comics
285           response.should render_template("comics")
286         end
287       end
288       context 'json形式' do
289         it 'jsonデータを返す' do
290           get :comics, :format => :json
291           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
292         end
293         it 'コミックモデルにjson一覧出力オプションを問い合わせている' do
294           Comic.should_receive(:list_json_opt).exactly(1)
295           get :comics, :format => :json
296         end
297         it 'データがリスト構造になっている' do
298           get :comics, :format => :json
299           json = JSON.parse response.body
300           json.should have_at_least(3).items
301         end
302         it 'リストの先頭くらいはコミックっぽいものであって欲しい' do
303           get :comics, :format => :json
304           json = JSON.parse response.body
305           json.first.has_key?("title").should be_true
306           json.first.has_key?("visible").should be_true
307         end
308       end
309     end
310     context '作家権限がないとき' do
311       before do
312         sign_out @user
313       end
314       context 'html形式' do
315         it 'ステータスコード302 Foundを返す' do
316           get :comics
317           response.status.should eq 302
318         end
319         it 'サインインページへ遷移する' do
320           get :comics
321           response.should redirect_to '/users/sign_in'
322         end
323       end
324       context 'json形式' do
325         it 'ステータスコード401 Unauthorizedを返す' do
326           get :comics, :format => :json
327           response.status.should eq 401
328         end
329         it '応答メッセージにUnauthorizedを返す' do
330           get :comics, :format => :json
331           response.message.should match(/Unauthorized/)
332         end
333       end
334     end
335   end
336   
337   describe '自分のストーリー一覧表示に於いて' do
338     before do
339       @comic = FactoryGirl.create :comic, :author_id => @author.id
340       @story = FactoryGirl.create :story, :comic_id => @comic.id, :visible => 1
341       sign_in @user
342       Story.stub(:mylist).and_return([@story, @story, @story])
343     end
344     context 'パラメータpageについて' do
345       it '@pageに値が入る' do
346         get :stories, :page => 5
347         assigns(:page).should eq 5
348       end
349       it '省略されると@pageに1値が入る' do
350         get :stories
351         assigns(:page).should eq 1
352       end
353       it '与えられたpage_sizeがセットされている' do
354         get :stories, :page_size => 15
355         assigns(:page_size).should eq 15
356       end
357       it '省略されると@page_sizeにデフォルト値が入る' do
358         get :stories
359         assigns(:page_size).should eq Author.default_story_page_size
360       end
361       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
362         get :stories, :page_size => 1500
363         assigns(:page_size).should eq Author.story_max_page_size
364       end
365       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
366         get :stories, :page_size => 0
367         assigns(:page_size).should eq Author.default_story_page_size
368       end
369     end
370     context 'つつがなく終わるとき' do
371       it 'ステータスコード200 OKを返す' do
372         get :stories
373         response.should be_success 
374       end
375       it 'ストーリーモデルに一覧を問い合わせている' do
376         Story.should_receive(:mylist).exactly(1)
377         get :stories
378       end
379       it '@storiesにリストを取得している' do
380         get :stories
381         assigns(:stories).should have_at_least(3).items
382       end
383       context 'html形式' do
384         it '@paginateにページ制御を取得している' do
385           get :stories
386           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
387         end
388         it 'storiesテンプレートを描画する' do
389           get :stories
390           response.should render_template("stories")
391         end
392       end
393       context 'json形式' do
394         it 'jsonデータを返す' do
395           get :stories, :format => :json
396           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
397         end
398         it 'ストーリーモデルにjson一覧出力オプションを問い合わせている' do
399           Story.should_receive(:list_json_opt).exactly(1)
400           get :stories, :format => :json
401         end
402         it 'データがリスト構造になっている' do
403           get :stories, :format => :json
404           json = JSON.parse response.body
405           json.should have_at_least(3).items
406         end
407         it 'リストの先頭くらいはストーリーっぽいものであって欲しい' do
408           get :stories, :format => :json
409           json = JSON.parse response.body
410           json.first.has_key?("comic_id").should be_true
411           json.first.has_key?("title").should be_true
412         end
413       end
414     end
415     context '作家権限がないとき' do
416       before do
417         sign_out @user
418       end
419       context 'html形式' do
420         it 'ステータスコード302 Foundを返す' do
421           get :stories
422           response.status.should eq 302
423         end
424         it 'サインインページへ遷移する' do
425           get :stories
426           response.should redirect_to '/users/sign_in'
427         end
428       end
429       context 'json形式' do
430         it 'ステータスコード401 Unauthorizedを返す' do
431           get :stories, :format => :json
432           response.status.should eq 401
433         end
434         it '応答メッセージにUnauthorizedを返す' do
435           get :stories, :format => :json
436           response.message.should match(/Unauthorized/)
437         end
438       end
439     end
440   end
441   
442   describe '自分のスト紙一覧表示に於いて' do
443     before do
444       @comic = FactoryGirl.create :comic, :author_id => @author.id
445       @story = FactoryGirl.create :story, :comic_id => @comic.id, :visible => 1
446       @sheet = FactoryGirl.create :sheet, :author_id => @author.id
447       @story_sheet = FactoryGirl.create :story_sheet, :author_id => @author.id, :story_id => @story.id, :sheet_id => @sheet.id
448       sign_in @user
449       StorySheet.stub(:mylist).and_return([@story_sheet, @story_sheet, @story_sheet])
450     end
451     context 'パラメータpageについて' do
452       it '@pageに値が入る' do
453         get :story_sheets, :page => 5
454         assigns(:page).should eq 5
455       end
456       it '省略されると@pageに1値が入る' do
457         get :story_sheets
458         assigns(:page).should eq 1
459       end
460       it '与えられたpage_sizeがセットされている' do
461         get :story_sheets, :page_size => 15
462         assigns(:page_size).should eq 15
463       end
464       it '省略されると@page_sizeにデフォルト値が入る' do
465         get :story_sheets
466         assigns(:page_size).should eq Author.default_story_sheet_page_size
467       end
468       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
469         get :story_sheets, :page_size => 1500
470         assigns(:page_size).should eq Author.story_sheet_max_page_size
471       end
472       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
473         get :story_sheets, :page_size => 0
474         assigns(:page_size).should eq Author.default_story_sheet_page_size
475       end
476     end
477     context 'つつがなく終わるとき' do
478       it 'ステータスコード200 OKを返す' do
479         get :story_sheets
480         response.should be_success 
481       end
482       it 'スト紙モデルに一覧を問い合わせている' do
483         StorySheet.should_receive(:mylist).exactly(1)
484         get :story_sheets
485       end
486       it '@story_sheetsにリストを取得している' do
487         get :story_sheets
488         assigns(:story_sheets).should have_at_least(3).items
489       end
490       context 'html形式' do
491         it '@paginateにページ制御を取得している' do
492           get :story_sheets
493           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
494         end
495         it 'story_sheetsテンプレートを描画する' do
496           get :story_sheets
497           response.should render_template("story_sheets")
498         end
499       end
500       context 'json形式' do
501         it 'jsonデータを返す' do
502           get :story_sheets, :format => :json
503           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
504         end
505         it 'スト紙モデルにjson一覧出力オプションを問い合わせている' do
506           StorySheet.should_receive(:list_json_opt).exactly(1)
507           get :story_sheets, :format => :json
508         end
509         it 'データがリスト構造になっている' do
510           get :story_sheets, :format => :json
511           json = JSON.parse response.body
512           json.should have_at_least(3).items
513         end
514         it 'リストの先頭くらいはスト紙っぽいものであって欲しい' do
515           get :story_sheets, :format => :json
516           json = JSON.parse response.body
517           json.first.has_key?("story_id").should be_true
518           json.first.has_key?("sheet_id").should be_true
519         end
520       end
521     end
522     context '作家権限がないとき' do
523       before do
524         sign_out @user
525       end
526       context 'html形式' do
527         it 'ステータスコード302 Foundを返す' do
528           get :story_sheets
529           response.status.should eq 302
530         end
531         it 'サインインページへ遷移する' do
532           get :story_sheets
533           response.should redirect_to '/users/sign_in'
534         end
535       end
536       context 'json形式' do
537         it 'ステータスコード401 Unauthorizedを返す' do
538           get :story_sheets, :format => :json
539           response.status.should eq 401
540         end
541         it '応答メッセージにUnauthorizedを返す' do
542           get :story_sheets, :format => :json
543           response.message.should match(/Unauthorized/)
544         end
545       end
546     end
547   end
548   
549   describe '自分の用紙一覧表示に於いて' do
550     before do
551       @sheet = FactoryGirl.create :sheet, :author_id => @author.id
552       sign_in @user
553       Sheet.stub(:mylist).and_return([@sheet, @sheet, @sheet])
554     end
555     context 'パラメータpageについて' do
556       it '@pageに値が入る' do
557         get :sheets, :page => 5
558         assigns(:page).should eq 5
559       end
560       it '省略されると@pageに1値が入る' do
561         get :sheets
562         assigns(:page).should eq 1
563       end
564       it '与えられたpage_sizeがセットされている' do
565         get :sheets, :page_size => 15
566         assigns(:page_size).should eq 15
567       end
568       it '省略されると@page_sizeにデフォルト値が入る' do
569         get :sheets
570         assigns(:page_size).should eq Author.default_sheet_page_size
571       end
572       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
573         get :sheets, :page_size => 1500
574         assigns(:page_size).should eq Author.sheet_max_page_size
575       end
576       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
577         get :sheets, :page_size => 0
578         assigns(:page_size).should eq Author.default_sheet_page_size
579       end
580     end
581     context 'つつがなく終わるとき' do
582       it 'ステータスコード200 OKを返す' do
583         get :sheets
584         response.should be_success 
585       end
586       it '用紙モデルに一覧を問い合わせている' do
587         Sheet.should_receive(:mylist).exactly(1)
588         get :sheets
589       end
590       it '@sheetsにリストを取得している' do
591         get :sheets
592         assigns(:sheets).should have_at_least(3).items
593       end
594       context 'html形式' do
595         it '@paginateにページ制御を取得している' do
596           get :sheets
597           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
598         end
599         it 'sheetsテンプレートを描画する' do
600           get :sheets
601           response.should render_template("sheets")
602         end
603       end
604       context 'json形式' do
605         it 'jsonデータを返す' do
606           get :sheets, :format => :json
607           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
608         end
609         it '用紙モデルにjson一覧出力オプションを問い合わせている' do
610           Sheet.should_receive(:list_json_opt).exactly(1)
611           get :sheets, :format => :json
612         end
613         it 'データがリスト構造になっている' do
614           get :sheets, :format => :json
615           json = JSON.parse response.body
616           json.should have_at_least(3).items
617         end
618         it 'リストの先頭くらいは用紙っぽいものであって欲しい' do
619           get :sheets, :format => :json
620           json = JSON.parse response.body
621           json.first.has_key?("caption").should be_true
622           json.first.has_key?("visible").should be_true
623         end
624       end
625     end
626     context '作家権限がないとき' do
627       before do
628         sign_out @user
629       end
630       context 'html形式' do
631         it 'ステータスコード302 Foundを返す' do
632           get :sheets
633           response.status.should eq 302
634         end
635         it 'サインインページへ遷移する' do
636           get :sheets
637           response.should redirect_to '/users/sign_in'
638         end
639       end
640       context 'json形式' do
641         it 'ステータスコード401 Unauthorizedを返す' do
642           get :sheets, :format => :json
643           response.status.should eq 401
644         end
645         it '応答メッセージにUnauthorizedを返す' do
646           get :sheets, :format => :json
647           response.message.should match(/Unauthorized/)
648         end
649       end
650     end
651   end
652   
653   describe '自分の紙コマ一覧表示に於いて' do
654     before do
655       @sheet = FactoryGirl.create :sheet, :author_id => @user.author.id
656       @sheet_panel = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
657       sign_in @user
658       SheetPanel.stub(:mylist).and_return([@sheet_panel, @sheet_panel, @sheet_panel])
659     end
660     context 'パラメータpageについて' do
661       it '@pageに値が入る' do
662         get :sheet_panels, :page => 5
663         assigns(:page).should eq 5
664       end
665       it '省略されると@pageに1値が入る' do
666         get :sheet_panels
667         assigns(:page).should eq 1
668       end
669       it '与えられたpage_sizeがセットされている' do
670         get :sheet_panels, :page_size => 15
671         assigns(:page_size).should eq 15
672       end
673       it '省略されると@page_sizeにデフォルト値が入る' do
674         get :sheet_panels
675         assigns(:page_size).should eq Author.default_sheet_panel_page_size
676       end
677       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
678         get :sheet_panels, :page_size => 1500
679         assigns(:page_size).should eq Author.sheet_panel_max_page_size
680       end
681       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
682         get :sheet_panels, :page_size => 0
683         assigns(:page_size).should eq Author.default_sheet_panel_page_size
684       end
685     end
686     context 'つつがなく終わるとき' do
687       it 'ステータスコード200 OKを返す' do
688         get :sheet_panels
689         response.should be_success 
690       end
691       it '紙コマモデルに一覧を問い合わせている' do
692         SheetPanel.should_receive(:mylist).exactly(1)
693         get :sheet_panels
694       end
695       it '@sheet_panelsにリストを取得している' do
696         get :sheet_panels
697         assigns(:sheet_panels).should have_at_least(3).items
698       end
699       context 'html形式' do
700         it '@paginateにページ制御を取得している' do
701           get :sheet_panels
702           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
703         end
704         it 'sheet_panelsテンプレートを描画する' do
705           get :sheet_panels
706           response.should render_template("sheet_panels")
707         end
708       end
709       context 'json形式' do
710         it 'jsonデータを返す' do
711           get :sheet_panels, :format => :json
712           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
713         end
714         it '紙コマモデルにjson一覧出力オプションを問い合わせている' do
715           SheetPanel.should_receive(:list_json_opt).exactly(1)
716           get :sheet_panels, :format => :json
717         end
718         it 'データがリスト構造になっている' do
719           get :sheet_panels, :format => :json
720           json = JSON.parse response.body
721           json.should have_at_least(3).items
722         end
723         it 'リストの先頭くらいは紙コマっぽいものであって欲しい' do
724           get :sheet_panels, :format => :json
725           json = JSON.parse response.body
726           json.first.has_key?("panel_id").should be_true
727           json.first.has_key?("sheet_id").should be_true
728         end
729       end
730     end
731     context '作家権限がないとき' do
732       before do
733         sign_out @user
734       end
735       context 'html形式' do
736         it 'ステータスコード302 Foundを返す' do
737           get :sheet_panels
738           response.status.should eq 302
739         end
740         it 'サインインページへ遷移する' do
741           get :sheet_panels
742           response.should redirect_to '/users/sign_in'
743         end
744       end
745       context 'json形式' do
746         it 'ステータスコード401 Unauthorizedを返す' do
747           get :sheet_panels, :format => :json
748           response.status.should eq 401
749         end
750         it '応答メッセージにUnauthorizedを返す' do
751           get :sheet_panels, :format => :json
752           response.message.should match(/Unauthorized/)
753         end
754       end
755     end
756   end
757   
758   describe '自分のコマ一覧表示に於いて' do
759     before do
760       @panel = FactoryGirl.create :panel, :author_id => @author.id
761       sign_in @user
762       Panel.stub(:mylist).and_return([@panel, @panel, @panel])
763     end
764     context 'パラメータpageについて' do
765       it '@pageに値が入る' do
766         get :panels, :page => 5
767         assigns(:page).should eq 5
768       end
769       it '省略されると@pageに1値が入る' do
770         get :panels
771         assigns(:page).should eq 1
772       end
773       it '与えられたpage_sizeがセットされている' do
774         get :panels, :page_size => 15
775         assigns(:page_size).should eq 15
776       end
777       it '省略されると@page_sizeにデフォルト値が入る' do
778         get :panels
779         assigns(:page_size).should eq Author.default_panel_page_size
780       end
781       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
782         get :panels, :page_size => 1500
783         assigns(:page_size).should eq Author.panel_max_page_size
784       end
785       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
786         get :panels, :page_size => 0
787         assigns(:page_size).should eq Author.default_panel_page_size
788       end
789     end
790     context 'つつがなく終わるとき' do
791       it 'コマモデルに一覧を問い合わせている' do
792         Panel.should_receive(:mylist).exactly(1)
793         get :panels
794       end
795       it '@panelsにリストを取得している' do
796         get :panels
797         assigns(:panels).should have_at_least(3).items
798       end
799       context 'html形式' do
800         it '@paginateにページ制御を取得している' do
801           get :panels
802           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
803         end
804         it 'ステータスコード200 OKを返す' do
805           get :panels
806           response.should be_success 
807         end
808         it 'panelsテンプレートを描画する' do
809           get :panels
810           response.should render_template("panels")
811         end
812       end
813       context 'json形式' do
814         it 'ステータスコード200 OKを返す' do
815           get :panels, :format => :json
816           response.should be_success 
817         end
818         it 'jsonデータを返す' do
819           get :panels, :format => :json
820           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
821         end
822         it 'コマモデルにコマリストのjson出力を問い合わせている' do
823           Panel.should_receive(:list_as_json_text).exactly(1)
824           get :panels, :format => :json
825         end
826         it 'データがリスト構造になっている' do
827           get :panels, :format => :json
828           json = JSON.parse response.body
829           json.should have_at_least(3).items
830         end
831         it 'リストの先頭くらいはコマっぽいものであって欲しい' do
832           get :panels, :format => :json
833           json = JSON.parse response.body
834           json.first.has_key?("z").should be_true
835         end
836       end
837     end
838     context '作家権限がないとき' do
839       before do
840         sign_out @user
841       end
842       context 'html形式' do
843         it 'ステータスコード302 Foundを返す' do
844           get :panels
845           response.status.should eq 302
846         end
847         it 'サインインページへ遷移する' do
848           get :panels
849           response.should redirect_to '/users/sign_in'
850         end
851       end
852       context 'json形式' do
853         it 'ステータスコード401 Unauthorizedを返す' do
854           get :panels, :format => :json
855           response.status.should eq 401
856         end
857         it '応答メッセージにUnauthorizedを返す' do
858           get :panels, :format => :json
859           response.message.should match(/Unauthorized/)
860         end
861       end
862     end
863   end
864   
865   describe '自分のコマ絵一覧表示に於いて' do
866     before do
867       @pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :picture_id => @p.id,
868         :width => @p.width, :height => @p.height
869       sign_in @user
870       PanelPicture.stub(:mylist).and_return([@pp, @pp, @pp])
871     end
872     context 'パラメータpageについて' do
873       it '@pageに値が入る' do
874         get :panel_pictures, :page => 5
875         assigns(:page).should eq 5
876       end
877       it '省略されると@pageに1値が入る' do
878         get :panel_pictures
879         assigns(:page).should eq 1
880       end
881       it '与えられたpage_sizeがセットされている' do
882         get :panel_pictures, :page_size => 15
883         assigns(:page_size).should eq 15
884       end
885       it '省略されると@page_sizeにデフォルト値が入る' do
886         get :panel_pictures
887         assigns(:page_size).should eq Author.default_panel_picture_page_size
888       end
889       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
890         get :panel_pictures, :page_size => 1500
891         assigns(:page_size).should eq Author.panel_picture_max_page_size
892       end
893       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
894         get :panel_pictures, :page_size => 0
895         assigns(:page_size).should eq Author.default_panel_picture_page_size
896       end
897     end
898     context 'つつがなく終わるとき' do
899       it 'ステータスコード200 OKを返す' do
900         response.should be_success 
901       end
902       it 'コマ絵モデルに一覧を問い合わせている' do
903         PanelPicture.should_receive(:mylist).exactly(1)
904         get :panel_pictures
905       end
906       it '@panel_picturesにリストを取得している' do
907         get :panel_pictures
908         assigns(:panel_pictures).should have_at_least(3).items
909       end
910       context 'html形式' do
911         it '@paginateにページ制御を取得している' do
912           get :panel_pictures
913           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
914         end
915         it 'panel_picturesテンプレートを描画する' do
916           get :panel_pictures
917           response.should render_template("panel_pictures")
918         end
919       end
920       context 'json形式' do
921         it 'jsonデータを返す' do
922           get :panel_pictures, :format => :json
923           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
924         end
925         it 'コマ絵モデルにjson一覧出力オプションを問い合わせている' do
926           PanelPicture.should_receive(:list_json_opt).exactly(1)
927           get :panel_pictures, :format => :json
928         end
929         it 'データがリスト構造になっている' do
930           get :panel_pictures, :format => :json
931           json = JSON.parse response.body
932           json.should have_at_least(3).items
933         end
934         it 'リストの先頭くらいはコマ絵っぽいものであって欲しい' do
935           get :panel_pictures, :format => :json
936           json = JSON.parse response.body
937           json.first.has_key?("link").should be_true
938           json.first.has_key?("x").should be_true
939           json.first.has_key?("y").should be_true
940         end
941       end
942     end
943     context '作家権限がないとき' do
944       before do
945         sign_out @user
946       end
947       context 'html形式' do
948         it 'ステータスコード302 Foundを返す' do
949           get :panel_pictures
950           response.status.should eq 302
951         end
952         it 'サインインページへ遷移する' do
953           get :panel_pictures
954           response.should redirect_to '/users/sign_in'
955         end
956       end
957       context 'json形式' do
958         it 'ステータスコード401 Unauthorizedを返す' do
959           get :panel_pictures, :format => :json
960           response.status.should eq 401
961         end
962         it '応答メッセージにUnauthorizedを返す' do
963           get :panel_pictures, :format => :json
964           response.message.should match(/Unauthorized/)
965         end
966       end
967     end
968   end
969   
970   describe '自分のフキダシ一覧表示に於いて' do
971     before do
972       @sb = FactoryGirl.build :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id
973       @speech = @sb.build_speech(
974         FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)
975       )
976       @balloon = @sb.build_balloon(
977         FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)
978       )
979       @sb.boost
980       @sb.save!
981       sign_in @user
982       SpeechBalloon.stub(:mylist).and_return([@sb, @sb, @sb])
983     end
984     context 'パラメータpageについて' do
985       it '@pageに値が入る' do
986         get :speech_balloons, :page => 5
987         assigns(:page).should eq 5
988       end
989       it '省略されると@pageに1値が入る' do
990         get :speech_balloons
991         assigns(:page).should eq 1
992       end
993       it '与えられたpage_sizeがセットされている' do
994         get :speech_balloons, :page_size => 15
995         assigns(:page_size).should eq 15
996       end
997       it '省略されると@page_sizeにデフォルト値が入る' do
998         get :speech_balloons
999         assigns(:page_size).should eq Author.default_speech_balloon_page_size
1000       end
1001       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
1002         get :speech_balloons, :page_size => 1500
1003         assigns(:page_size).should eq Author.speech_balloon_max_page_size
1004       end
1005       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
1006         get :speech_balloons, :page_size => 0
1007         assigns(:page_size).should eq Author.default_speech_balloon_page_size
1008       end
1009     end
1010     context 'つつがなく終わるとき' do
1011       it 'ステータスコード200 OKを返す' do
1012         response.should be_success 
1013       end
1014       it 'フキダシモデルに一覧を問い合わせている' do
1015         SpeechBalloon.should_receive(:mylist).exactly(1)
1016         get :speech_balloons
1017       end
1018       it '@speech_balloonsにリストを取得している' do
1019         get :speech_balloons
1020         assigns(:speech_balloons).should have_at_least(3).items
1021       end
1022       context 'html形式' do
1023         it '@paginateにページ制御を取得している' do
1024           get :speech_balloons
1025           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
1026         end
1027         it 'speech_balloonsテンプレートを描画する' do
1028           get :speech_balloons
1029           response.should render_template("speech_balloons")
1030         end
1031       end
1032       context 'json形式' do
1033         it 'jsonデータを返す' do
1034           get :speech_balloons, :format => :json
1035           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1036         end
1037         it 'フキダシモデルにjson一覧出力オプションを問い合わせている' do
1038           SpeechBalloon.should_receive(:list_json_opt).exactly(1)
1039           get :speech_balloons, :format => :json
1040         end
1041         it 'データがリスト構造になっている' do
1042           get :speech_balloons, :format => :json
1043           json = JSON.parse response.body
1044           json.should have_at_least(3).items
1045         end
1046         it 'リストの先頭くらいはフキダシっぽいものであって欲しい' do
1047           get :speech_balloons, :format => :json
1048           json = JSON.parse response.body
1049           json.first.has_key?("speech_balloon_template_id").should be_true
1050           json.first.has_key?("z").should be_true
1051           json.first.has_key?("t").should be_true
1052         end
1053       end
1054     end
1055     context '作家権限がないとき' do
1056       before do
1057         sign_out @user
1058       end
1059       context 'html形式' do
1060         it 'ステータスコード302 Foundを返す' do
1061           get :speech_balloons
1062           response.status.should eq 302
1063         end
1064         it 'サインインページへ遷移する' do
1065           get :speech_balloons
1066           response.should redirect_to '/users/sign_in'
1067         end
1068       end
1069       context 'json形式' do
1070         it 'ステータスコード401 Unauthorizedを返す' do
1071           get :speech_balloons, :format => :json
1072           response.status.should eq 401
1073         end
1074         it '応答メッセージにUnauthorizedを返す' do
1075           get :speech_balloons, :format => :json
1076           response.message.should match(/Unauthorized/)
1077         end
1078       end
1079     end
1080   end
1081   
1082   describe '自分のコマの絵地一覧表示に於いて' do
1083     before do
1084       @gp = FactoryGirl.create :ground_picture, :panel_id => @panel.id, :picture_id => @p.id
1085       sign_in @user
1086       GroundPicture.stub(:mylist).and_return([@gp, @gp, @gp])
1087     end
1088     context 'パラメータpageについて' do
1089       it '@pageに値が入る' do
1090         get :ground_pictures, :page => 5
1091         assigns(:page).should eq 5
1092       end
1093       it '省略されると@pageに1値が入る' do
1094         get :ground_pictures
1095         assigns(:page).should eq 1
1096       end
1097       it '与えられたpage_sizeがセットされている' do
1098         get :ground_pictures, :page_size => 15
1099         assigns(:page_size).should eq 15
1100       end
1101       it '省略されると@page_sizeにデフォルト値が入る' do
1102         get :ground_pictures
1103         assigns(:page_size).should eq Author.default_ground_picture_page_size
1104       end
1105       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
1106         get :ground_pictures, :page_size => 1500
1107         assigns(:page_size).should eq Author.ground_picture_max_page_size
1108       end
1109       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
1110         get :ground_pictures, :page_size => 0
1111         assigns(:page_size).should eq Author.default_ground_picture_page_size
1112       end
1113     end
1114     context 'つつがなく終わるとき' do
1115       it 'ステータスコード200 OKを返す' do
1116         get :ground_pictures
1117         response.should be_success 
1118       end
1119       it '絵地モデルに一覧を問い合わせている' do
1120         GroundPicture.should_receive(:mylist).exactly(1)
1121         get :ground_pictures
1122       end
1123       it '@ground_picturesにリストを取得している' do
1124         get :ground_pictures
1125         assigns(:ground_pictures).should have_at_least(3).items
1126       end
1127       context 'html形式' do
1128         it '@paginateにページ制御を取得している' do
1129           get :ground_pictures
1130           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
1131         end
1132         it 'ground_picturesテンプレートを描画する' do
1133           get :ground_pictures
1134           response.should render_template("ground_pictures")
1135         end
1136       end
1137       context 'json形式' do
1138         it 'jsonデータを返す' do
1139           get :ground_pictures, :format => :json
1140           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1141         end
1142         it '絵地モデルにjson一覧出力オプションを問い合わせている' do
1143           GroundPicture.should_receive(:list_json_opt).exactly(1)
1144           get :ground_pictures, :format => :json
1145         end
1146         it 'データがリスト構造になっている' do
1147           get :ground_pictures, :format => :json
1148           json = JSON.parse response.body
1149           json.should have_at_least(3).items
1150         end
1151         it 'リストの先頭くらいは絵地っぽいものであって欲しい' do
1152           get :ground_pictures, :format => :json
1153           json = JSON.parse response.body
1154           json.first.has_key?("panel_id").should be_true
1155           json.first.has_key?("picture_id").should be_true
1156           json.first.has_key?("z").should be_true
1157         end
1158       end
1159     end
1160     context '作家権限がないとき' do
1161       before do
1162         sign_out @user
1163       end
1164       context 'html形式' do
1165         it 'ステータスコード302 Foundを返す' do
1166           get :ground_pictures
1167           response.status.should eq 302
1168         end
1169         it 'サインインページへ遷移する' do
1170           get :ground_pictures
1171           response.should redirect_to '/users/sign_in'
1172         end
1173       end
1174       context 'json形式' do
1175         it 'ステータスコード401 Unauthorizedを返す' do
1176           get :ground_pictures, :format => :json
1177           response.status.should eq 401
1178         end
1179         it '応答メッセージにUnauthorizedを返す' do
1180           get :ground_pictures, :format => :json
1181           response.message.should match(/Unauthorized/)
1182         end
1183       end
1184     end
1185   end
1186   
1187   describe '自分の色地一覧表示に於いて' do
1188     before do
1189       @gc = FactoryGirl.create :ground_color
1190       sign_in @user
1191       GroundColor.stub(:mylist).and_return([@gc, @gc, @gc])
1192     end
1193     context 'パラメータpageについて' do
1194       it '@pageに値が入る' do
1195         get :ground_colors, :page => 5
1196         assigns(:page).should eq 5
1197       end
1198       it '省略されると@pageに1値が入る' do
1199         get :ground_colors
1200         assigns(:page).should eq 1
1201       end
1202       it '与えられたpage_sizeがセットされている' do
1203         get :ground_colors, :page_size => 15
1204         assigns(:page_size).should eq 15
1205       end
1206       it '省略されると@page_sizeにデフォルト値が入る' do
1207         get :ground_colors
1208         assigns(:page_size).should eq Author.default_ground_color_page_size
1209       end
1210       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
1211         get :ground_colors, :page_size => 1500
1212         assigns(:page_size).should eq Author.ground_color_max_page_size
1213       end
1214       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
1215         get :ground_colors, :page_size => 0
1216         assigns(:page_size).should eq Author.default_ground_color_page_size
1217       end
1218     end
1219     context 'つつがなく終わるとき' do
1220       it 'ステータスコード200 OKを返す' do
1221         get :ground_colors
1222         response.should be_success 
1223       end
1224       it '色地モデルに一覧を問い合わせている' do
1225         GroundColor.should_receive(:mylist).exactly(1)
1226         get :ground_colors
1227       end
1228       it '@ground_colorsにリストを取得している' do
1229         get :ground_colors
1230         assigns(:ground_colors).should have_at_least(3).items
1231       end
1232       context 'html形式' do
1233         it '@paginateにページ制御を取得している' do
1234           get :ground_colors
1235           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
1236         end
1237         it 'ground_colorsテンプレートを描画する' do
1238           get :ground_colors
1239           response.should render_template("ground_colors")
1240         end
1241       end
1242       context 'json形式' do
1243         it 'jsonデータを返す' do
1244           get :ground_colors, :format => :json
1245           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1246         end
1247           it '色地モデルにjson一覧出力オプションを問い合わせている' do
1248           GroundColor.should_receive(:list_json_opt).exactly(1)
1249           get :ground_colors, :format => :json
1250         end
1251         it 'データがリスト構造になっている' do
1252           get :ground_colors, :format => :json
1253           json = JSON.parse response.body
1254           json.should have_at_least(3).items
1255         end
1256         it 'リストの先頭くらいは色地っぽいものであって欲しい' do
1257           get :ground_colors, :format => :json
1258           json = JSON.parse response.body
1259           json.first.has_key?("panel_id").should be_true
1260           json.first.has_key?("code").should be_true
1261           json.first.has_key?("z").should be_true
1262         end
1263       end
1264     end
1265     context '作家権限がないとき' do
1266       before do
1267         sign_out @user
1268       end
1269       context 'html形式' do
1270         it 'ステータスコード302 Foundを返す' do
1271           get :ground_colors
1272           response.status.should eq 302
1273         end
1274         it 'サインインページへ遷移する' do
1275           get :ground_colors
1276           response.should redirect_to '/users/sign_in'
1277         end
1278       end
1279       context 'json形式' do
1280         it 'ステータスコード401 Unauthorizedを返す' do
1281           get :ground_colors, :format => :json
1282           response.status.should eq 401
1283         end
1284         it '応答メッセージにUnauthorizedを返す' do
1285           get :ground_colors, :format => :json
1286           response.message.should match(/Unauthorized/)
1287         end
1288       end
1289     end
1290   end
1291   
1292   describe '自分の素材一覧表示に於いて' do
1293     before do
1294       @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
1295       @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id
1296       @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op.id, :picture_id => @p.id
1297       sign_in @user
1298       ResourcePicture.stub(:mylist).and_return([@rp, @rp, @rp])
1299     end
1300     context 'パラメータpageについて' do
1301       it '@pageに値が入る' do
1302         get :resource_pictures, :page => 5
1303         assigns(:page).should eq 5
1304       end
1305       it '省略されると@pageに1値が入る' do
1306         get :resource_pictures
1307         assigns(:page).should eq 1
1308       end
1309       it '与えられたpage_sizeがセットされている' do
1310         get :resource_pictures, :page_size => 15
1311         assigns(:page_size).should eq 15
1312       end
1313       it '省略されると@page_sizeにデフォルト値が入る' do
1314         get :resource_pictures
1315         assigns(:page_size).should eq Author.default_resource_picture_page_size
1316       end
1317       it '最大を超えると@page_sizeにデフォルト最大値が入る' do
1318         get :resource_pictures, :page_size => 1500
1319         assigns(:page_size).should eq Author.resource_picture_max_page_size
1320       end
1321       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
1322         get :resource_pictures, :page_size => 0
1323         assigns(:page_size).should eq Author.default_resource_picture_page_size
1324       end
1325     end
1326     context 'つつがなく終わるとき' do
1327       it 'ステータスコード200 OKを返す' do
1328         get :resource_pictures
1329         response.should be_success 
1330       end
1331       it '素材モデルに一覧を問い合わせている' do
1332         ResourcePicture.should_receive(:mylist).exactly(1)
1333         get :resource_pictures
1334       end
1335       it '@resource_picturesにリストを取得している' do
1336         get :resource_pictures
1337         assigns(:resource_pictures).should have_at_least(3).items
1338       end
1339       context 'html形式' do
1340         it '@paginateにページ制御を取得している' do
1341           get :resource_pictures
1342           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true
1343         end
1344         it 'resource_picturesテンプレートを描画する' do
1345           get :resource_pictures
1346           response.should render_template("resource_pictures")
1347         end
1348       end
1349       context 'json形式' do
1350         it 'jsonデータを返す' do
1351           get :resource_pictures, :format => :json
1352           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1353         end
1354         it '素材モデルにjson一覧出力オプションを問い合わせている' do
1355           ResourcePicture.should_receive(:list_json_opt).exactly(1)
1356           get :resource_pictures, :format => :json
1357         end
1358         it 'データがリスト構造になっている' do
1359           get :resource_pictures, :format => :json
1360           json = JSON.parse response.body
1361           json.should have_at_least(3).items
1362         end
1363         it 'リストの先頭くらいは素材っぽいものであって欲しい' do
1364           get :resource_pictures, :format => :json
1365           json = JSON.parse response.body
1366           json.first.has_key?("original_picture_id").should be_true
1367           json.first.has_key?("license_id").should be_true
1368         end
1369       end
1370     end
1371     context '作家権限がないとき' do
1372       before do
1373         sign_out @user
1374       end
1375       context 'html形式' do
1376         it 'ステータスコード302 Foundを返す' do
1377           get :resource_pictures
1378           response.status.should eq 302
1379         end
1380         it 'サインインページへ遷移する' do
1381           get :resource_pictures
1382           response.should redirect_to '/users/sign_in'
1383         end
1384       end
1385       context 'json形式' do
1386         it 'ステータスコード401 Unauthorizedを返す' do
1387           get :resource_pictures, :format => :json
1388           response.status.should eq 401
1389         end
1390         it '応答メッセージにUnauthorizedを返す' do
1391           get :resource_pictures, :format => :json
1392           response.message.should match(/Unauthorized/)
1393         end
1394       end
1395     end
1396     context '作家が絵師でないとき' do
1397       before do
1398         Author.any_instance.stub(:artist?).and_return(false)
1399       end
1400       context 'html形式' do
1401         it 'ステータスコード302 Foundを返す' do
1402           get :resource_pictures
1403           response.status.should eq 302
1404         end
1405         it '絵師登録ページへ遷移する' do
1406           get :resource_pictures
1407           response.should redirect_to new_artist_path
1408         end
1409       end
1410       context 'json形式' do
1411         it '例外403 forbiddenを返す' do
1412           lambda{
1413             get :resource_pictures, :format => :json
1414           }.should raise_error(ActiveRecord::Forbidden)
1415         end
1416       end
1417     end
1418   end
1419   
1420 else
1421   describe '自分のスクロール一覧表示に於いて' do
1422     before do
1423       @scroll = FactoryGirl.create :scroll, :author_id => @author.id
1424       sign_in @user
1425       Scroll.stub(:mylist).and_return([@scroll, @scroll, @scroll])
1426     end
1427     context 'つつがなく終わるとき' do
1428       it 'ステータスコード200 OKを返す' do
1429         get :scrolls
1430         response.should be_success 
1431       end
1432       context 'html形式' do
1433         it 'scrollsテンプレートを描画する' do
1434           get :scrolls
1435           response.should render_template("scrolls")
1436         end
1437       end
1438       context 'json形式' do
1439         it 'jsonデータを返す' do
1440           get :scrolls, :format => :json
1441           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1442         end
1443       end
1444     end
1445     context '作家権限がないとき' do
1446       before do
1447         sign_out @user
1448       end
1449       context 'html形式' do
1450         it 'ステータスコード302 Foundを返す' do
1451           get :scrolls
1452           response.status.should eq 302
1453         end
1454         it 'サインインページへ遷移する' do
1455           get :scrolls
1456           response.should redirect_to '/users/sign_in'
1457         end
1458       end
1459       context 'json形式' do
1460         it 'ステータスコード401 Unauthorizedを返す' do
1461           get :scrolls, :format => :json
1462           response.status.should eq 401
1463         end
1464         it '応答メッセージにUnauthorizedを返す' do
1465           get :scrolls, :format => :json
1466           response.message.should match(/Unauthorized/)
1467         end
1468       end
1469     end
1470   end
1471   
1472   describe '自分のコマ一覧表示に於いて' do
1473     before do
1474       @panel = FactoryGirl.create :panel, :author_id => @author.id
1475       sign_in @user
1476       Panel.stub(:mylist).and_return([@panel, @panel, @panel])
1477     end
1478     context 'つつがなく終わるとき' do
1479       context 'html形式' do
1480         it 'ステータスコード200 OKを返す' do
1481           get :panels
1482           response.should be_success 
1483         end
1484         it 'panelsテンプレートを描画する' do
1485           get :panels
1486           response.should render_template("panels")
1487         end
1488       end
1489       context 'json形式' do
1490         it 'ステータスコード200 OKを返す' do
1491           get :panels, :format => :json
1492           response.should be_success 
1493         end
1494         it 'jsonデータを返す' do
1495           get :panels, :format => :json
1496           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1497         end
1498       end
1499     end
1500     context '作家権限がないとき' do
1501       before do
1502         sign_out @user
1503       end
1504       context 'html形式' do
1505         it 'ステータスコード302 Foundを返す' do
1506           get :panels
1507           response.status.should eq 302
1508         end
1509         it 'サインインページへ遷移する' do
1510           get :panels
1511           response.should redirect_to '/users/sign_in'
1512         end
1513       end
1514       context 'json形式' do
1515         it 'ステータスコード401 Unauthorizedを返す' do
1516           get :panels, :format => :json
1517           response.status.should eq 401
1518         end
1519         it '応答メッセージにUnauthorizedを返す' do
1520           get :panels, :format => :json
1521           response.message.should match(/Unauthorized/)
1522         end
1523       end
1524     end
1525   end
1526   
1527   describe '自分のコマ絵一覧表示に於いて' do
1528     before do
1529       @pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :picture_id => @p.id,
1530         :width => @p.width, :height => @p.height
1531       sign_in @user
1532       PanelPicture.stub(:mylist).and_return([@pp, @pp, @pp])
1533     end
1534     context 'つつがなく終わるとき' do
1535       it 'ステータスコード200 OKを返す' do
1536         get :panel_pictures
1537         response.should be_success 
1538       end
1539       context 'html形式' do
1540         it 'panel_picturesテンプレートを描画する' do
1541           get :panel_pictures
1542           response.should render_template("panel_pictures")
1543         end
1544       end
1545       context 'json形式' do
1546         it 'jsonデータを返す' do
1547           get :panel_pictures, :format => :json
1548           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1549         end
1550       end
1551     end
1552     context '作家権限がないとき' do
1553       before do
1554         sign_out @user
1555       end
1556       context 'html形式' do
1557         it 'ステータスコード302 Foundを返す' do
1558           get :panel_pictures
1559           response.status.should eq 302
1560         end
1561         it 'サインインページへ遷移する' do
1562           get :panel_pictures
1563           response.should redirect_to '/users/sign_in'
1564         end
1565       end
1566       context 'json形式' do
1567         it 'ステータスコード401 Unauthorizedを返す' do
1568           get :panel_pictures, :format => :json
1569           response.status.should eq 401
1570         end
1571         it '応答メッセージにUnauthorizedを返す' do
1572           get :panel_pictures, :format => :json
1573           response.message.should match(/Unauthorized/)
1574         end
1575       end
1576     end
1577   end
1578   
1579   
1580   describe '自分のコマの絵地一覧表示に於いて' do
1581     before do
1582       @gp = FactoryGirl.create :ground_picture, :panel_id => @panel.id, :picture_id => @p.id
1583       sign_in @user
1584       GroundPicture.stub(:mylist).and_return([@gp, @gp, @gp])
1585     end
1586     context 'つつがなく終わるとき' do
1587       it 'ステータスコード200 OKを返す' do
1588         get :ground_pictures
1589         response.should be_success 
1590       end
1591       context 'html形式' do
1592         it 'ground_picturesテンプレートを描画する' do
1593           get :ground_pictures
1594           response.should render_template("ground_pictures")
1595         end
1596       end
1597       context 'json形式' do
1598         it 'jsonデータを返す' do
1599           get :ground_pictures, :format => :json
1600           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1601         end
1602       end
1603     end
1604     context '作家権限がないとき' do
1605       before do
1606         sign_out @user
1607       end
1608       context 'html形式' do
1609         it 'ステータスコード302 Foundを返す' do
1610           get :ground_pictures
1611           response.status.should eq 302
1612         end
1613         it 'サインインページへ遷移する' do
1614           get :ground_pictures
1615           response.should redirect_to '/users/sign_in'
1616         end
1617       end
1618       context 'json形式' do
1619         it 'ステータスコード401 Unauthorizedを返す' do
1620           get :ground_pictures, :format => :json
1621           response.status.should eq 401
1622         end
1623         it '応答メッセージにUnauthorizedを返す' do
1624           get :ground_pictures, :format => :json
1625           response.message.should match(/Unauthorized/)
1626         end
1627       end
1628     end
1629   end
1630   
1631   describe '自分の色地一覧表示に於いて' do
1632     before do
1633       @gc = FactoryGirl.create :ground_color
1634       sign_in @user
1635       GroundColor.stub(:mylist).and_return([@gc, @gc, @gc])
1636     end
1637     context 'つつがなく終わるとき' do
1638       it 'ステータスコード200 OKを返す' do
1639         get :ground_colors
1640         response.should be_success 
1641       end
1642       context 'html形式' do
1643         it 'ground_colorsテンプレートを描画する' do
1644           get :ground_colors
1645           response.should render_template("ground_colors")
1646         end
1647       end
1648       context 'json形式' do
1649         it 'jsonデータを返す' do
1650           get :ground_colors, :format => :json
1651           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1652         end
1653       end
1654     end
1655     context '作家権限がないとき' do
1656       before do
1657         sign_out @user
1658       end
1659       context 'html形式' do
1660         it 'ステータスコード302 Foundを返す' do
1661           get :ground_colors
1662           response.status.should eq 302
1663         end
1664         it 'サインインページへ遷移する' do
1665           get :ground_colors
1666           response.should redirect_to '/users/sign_in'
1667         end
1668       end
1669       context 'json形式' do
1670         it 'ステータスコード401 Unauthorizedを返す' do
1671           get :ground_colors, :format => :json
1672           response.status.should eq 401
1673         end
1674         it '応答メッセージにUnauthorizedを返す' do
1675           get :ground_colors, :format => :json
1676           response.message.should match(/Unauthorized/)
1677         end
1678       end
1679     end
1680   end
1681   
1682   describe '自分の素材一覧表示に於いて' do
1683     before do
1684       @op = FactoryGirl.create :original_picture, :artist_id => @artist.id
1685       @p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id
1686       @rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op.id, :picture_id => @p.id
1687       sign_in @user
1688       ResourcePicture.stub(:mylist).and_return([@rp, @rp, @rp])
1689     end
1690     context 'つつがなく終わるとき' do
1691       it 'ステータスコード200 OKを返す' do
1692         get :resource_pictures
1693         response.should be_success 
1694       end
1695       context 'html形式' do
1696         it 'resource_picturesテンプレートを描画する' do
1697           get :resource_pictures
1698           response.should render_template("resource_pictures")
1699         end
1700       end
1701       context 'json形式' do
1702         it 'jsonデータを返す' do
1703           get :resource_pictures, :format => :json
1704           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
1705         end
1706       end
1707     end
1708     context '作家権限がないとき' do
1709       before do
1710         sign_out @user
1711       end
1712       context 'html形式' do
1713         it 'ステータスコード302 Foundを返す' do
1714           get :resource_pictures
1715           response.status.should eq 302
1716         end
1717         it 'サインインページへ遷移する' do
1718           get :resource_pictures
1719           response.should redirect_to '/users/sign_in'
1720         end
1721       end
1722       context 'json形式' do
1723         it 'ステータスコード401 Unauthorizedを返す' do
1724           get :resource_pictures, :format => :json
1725           response.status.should eq 401
1726         end
1727         it '応答メッセージにUnauthorizedを返す' do
1728           get :resource_pictures, :format => :json
1729           response.message.should match(/Unauthorized/)
1730         end
1731       end
1732     end
1733     context '作家が絵師でないとき' do
1734       before do
1735         @artist.destroy
1736       end
1737       context 'html形式' do
1738         it 'ステータスコード302 Foundを返す' do
1739           get :resource_pictures
1740           response.status.should eq 302
1741         end
1742         it '絵師登録ページへ遷移する' do
1743           get :resource_pictures
1744           response.should redirect_to new_artist_path
1745         end
1746       end
1747       context 'json形式' do
1748         it '例外403 forbiddenを返す' do
1749           lambda{
1750             get :resource_pictures, :format => :json
1751           }.should raise_error(ActiveRecord::Forbidden)
1752         end
1753       end
1754     end
1755   end
1756   
1757 end
1758 end