1 # -*- encoding: utf-8 -*-
5 describe PanelPicturesController do
8 @license = Factory :license
9 @user = Factory( :user_yas)
10 @author = @user.author
11 @artist = Factory :artist_yas, :author_id => @author.id
14 describe '一覧表示に於いて' do
16 @pp = Factory :panel_picture
18 PanelPicture.stub(:list).and_return([@pp, @pp, @pp])
20 context 'パラメータpageについて' do
22 get :index, :page => 5
23 assigns(:page).should eq 5
25 it '省略されると@pageに1値が入る' do
27 assigns(:page).should eq 1
29 it '与えられたpage_sizeがセットされている' do
30 get :index, :page_size => 15
31 assigns(:page_size).should eq 15
33 it '省略されると@page_sizeにデフォルト値が入る' do
35 assigns(:page_size).should eq PanelPicture.default_page_size
37 it '最大を超えると@page_sizeにデフォルト最大値が入る' do
38 get :index, :page_size => 1500
39 assigns(:page_size).should eq PanelPicture.max_page_size
41 it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
42 get :index, :page_size => 0
43 assigns(:page_size).should eq PanelPicture.default_page_size
46 context 'つつがなく終わるとき' do
47 it 'ステータスコード200 OKを返す' do
49 response.should be_success
51 it 'コマ絵モデルに一覧を問い合わせている' do
52 PanelPicture.should_receive(:list).exactly(1)
55 it '@panel_picturesにリストを取得している' do
57 assigns(:panel_pictures).should have_at_least(3).items
60 it 'indexテンプレートを描画する' do
62 response.should render_template("index")
67 get :index, :format => :json
68 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
70 it 'データがリスト構造になっている' do
71 get :index, :format => :json
72 json = JSON.parse response.body
73 json.should have_at_least(3).items
75 it 'リストの先頭くらいはコマ絵っぽいものであって欲しい' do
76 get :index, :format => :json
77 json = JSON.parse response.body
78 json.first.has_key?("link").should be_true
82 context '作家権限がないとき' do
87 it 'ステータスコード302 Foundを返す' do
89 response.status.should eq 302
93 response.should redirect_to '/users/sign_in'
97 it 'ステータスコード401 Unauthorizedを返す' do
98 get :index, :format => :json
99 response.status.should eq 401
101 it '応答メッセージにUnauthorizedを返す' do
102 get :index, :format => :json
103 response.message.should match(/Unauthorized/)