1 # -*- encoding: utf-8 -*-
5 describe ColorsController do
7 @admin = FactoryGirl.create :admin
8 @user = FactoryGirl.create( :user_yas)
9 @author = FactoryGirl.create :author, :user_id => @user.id
10 @sp = FactoryGirl.create :system_picture
11 @lg = FactoryGirl.create :license_group, :name => 'peta'
12 @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id
15 describe '一覧表示に於いて' do
18 @color = FactoryGirl.create :color
19 Color.stub(:list).and_return([@color, @color, @color])
21 context 'パラメータpageについて' do
23 get :index, :page => 5
24 assigns(:page).should eq 5
26 it '省略されると@pageに1値が入る' do
28 assigns(:page).should eq 1
30 it '与えられたpage_sizeがセットされている' do
31 get :index, :page_size => 15
32 assigns(:page_size).should eq 15
34 it '省略されると@page_sizeにデフォルト値が入る' do
36 assigns(:page_size).should eq Color.default_page_size
38 it '最大を超えると@page_sizeにデフォルト最大値が入る' do
39 get :index, :page_size => 1500
40 assigns(:page_size).should eq Color.max_page_size
42 it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
43 get :index, :page_size => 0
44 assigns(:page_size).should eq Color.default_page_size
47 context 'つつがなく終わるとき' do
48 it 'ステータスコード200 OKを返す' do
50 response.should be_success
52 it '色モデルに一覧を問い合わせている' do
53 Color.should_receive(:list).exactly(1)
56 it '@colorsにリストを取得している' do
58 assigns(:colors).should have_at_least(3).items
61 it 'indexテンプレートを描画する' do
63 response.should render_template("index")
68 get :index, :format => :json
69 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
71 it '色モデルにjson一覧出力オプションを問い合わせている' do
72 Color.should_receive(:list_json_opt).exactly(1)
73 get :index, :format => :json
75 it 'データがリスト構造になっている' do
76 get :index, :format => :json
77 json = JSON.parse response.body
78 json.should have_at_least(3).items
80 it 'リストの先頭くらいは色っぽいものであって欲しい' do
81 get :index, :format => :json
82 json = JSON.parse response.body
83 json.first.has_key?("name").should be_true
84 json.first.has_key?("code").should be_true
85 json.first.has_key?("t").should be_true
89 context '作家権限がないとき' do
93 it 'ステータスコード200 okを返す' do
95 response.status.should eq 200
100 describe '単体表示に於いて' do
103 @color = FactoryGirl.create :color
104 Color.stub(:show).and_return(@color)
106 context 'つつがなく終わるとき' do
107 it 'ステータスコード200 OKを返す' do
108 get :show, :id => @color.id
109 response.should be_success
111 it '色モデルに単体取得を問い合わせている' do
112 Color.should_receive(:show).exactly(1)
115 it '@colorにアレを取得している' do
116 get :show, :id => @color.id
117 assigns(:color).id.should eq(@color.id)
120 it 'showテンプレートを描画する' do
121 get :show, :id => @color.id
122 response.should render_template("show")
127 get :show, :id => @color.id, :format => :json
128 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
130 it '色モデルにjson単体出力オプションを問い合わせている' do
131 Color.should_receive(:show_json_opt).exactly(1)
132 get :show, :id => @color.id, :format => :json
135 get :show, :id => @color.id, :format => :json
136 json = JSON.parse response.body
137 json["name"].should_not be_nil
138 json["code"].should_not be_nil
139 json["t"].should_not be_nil
143 context '作家権限がないとき' do
147 it 'ステータスコード200 okを返す' do
148 get :show, :id => @color.id
149 response.status.should eq 200