1 # -*- encoding: utf-8 -*-
4 describe StoriesController do
8 @comic = Factory :comic, :author_id => @user.author.id
9 Comic.stub(:show).and_return(@comic)
14 Panel.stub(:count).and_return(10)
16 it '与えられたoffsetがセットされている' do
17 get :play, :id => @comic.id, :offset => 7
18 assigns(:offset).should eq 7
20 it '省略されると@offsetに0値が入る' do
21 get :play, :id => @comic.id
22 assigns(:offset).should eq 0
24 it 'コマ数以上が与えられるとコマ数-1が入る' do
25 get :play, :id => @comic.id, :offset => 10
26 assigns(:offset).should eq 9
28 it '負の値が与えられると末尾(コマ数)からさかのぼった値が入る' do
29 get :play, :id => @comic.id, :offset => -3
30 assigns(:offset).should eq 7
32 it 'コマ数以上の負の値が与えられると計算できないので0値が入る' do
33 get :play, :id => @comic.id, :offset => -13
34 assigns(:offset).should eq 0
36 it '与えられたcountがセットされている' do
37 get :play, :id => @comic.id, :count => 18
38 assigns(:panel_count).should eq 18
40 it '省略されると@countにデフォルト値が入る' do
41 get :play, :id => @comic.id
42 assigns(:panel_count).should eq Comic.default_panel_size
44 it '最大を超えると@countにデフォルト最大値が入る' do
45 get :play, :id => @comic.id, :count => 1500
46 assigns(:panel_count).should eq Comic.max_panel_size
48 it '不正な値が入ると@countにデフォルト最大値が入る' do
49 get :play, :id => @comic.id, :page_size => 0
50 assigns(:panel_count).should eq Comic.default_panel_size
53 context 'つつがなく終わるとき' do
54 it 'ステータスコード200 OKを返す' do
55 get :play, :id => @comic.id
56 response.should be_success
58 it 'コミックモデルに単体取得を問い合わせている' do
59 Comic.should_receive(:show).exactly(1)
60 get :play, :id => @comic.id
62 it '@comicにアレを取得している' do
63 get :play, :id => @comic.id
64 assigns(:comic).id.should eq(@comic.id)
67 it 'playテンプレートを描画する' do
68 get :play, :id => @comic.id
69 response.should render_template("play")
74 get :play, :id => @comic.id, :format => :json
75 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
78 get :play, :id => @comic.id, :format => :json
79 json = JSON.parse response.body
80 json["title"].should match(/normal/)
84 context '作家権限がないとき' do
89 it 'ステータスコード302 Foundを返す' do
90 get :play, :id => @comic.id
91 response.status.should eq 302
94 get :play, :id => @comic.id
95 response.body.should redirect_to '/users/sign_in'
99 it 'ステータスコード401 Unauthorizedを返す' do
100 get :play, :id => @comic.id, :format => :json
101 response.status.should eq 401
103 it '応答メッセージにUnauthorizedを返す' do
104 get :play, :id => @comic.id, :format => :json
105 response.message.should match(/Unauthorized/)