1 # -*- encoding: utf-8 -*-
5 describe LicensesController do
7 @admin = Factory :admin
9 @cl = Factory :common_license, :license_id => @lc.id
10 @user = Factory( :user_yas)
11 @author = @user.author
12 @artist = Factory :artist_yas, :author_id => @author.id
15 describe '一覧表示に於いて' do
18 License.stub(:list).and_return([@lc, @lc, @lc])
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 License.default_page_size
37 it '最大を超えると@page_sizeにデフォルト最大値が入る' do
38 get :index, :page_size => 1500
39 assigns(:page_size).should eq License.max_page_size
41 it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do
42 get :index, :page_size => 0
43 assigns(:page_size).should eq License.default_page_size
46 context 'つつがなく終わるとき' do
47 it 'ステータスコード200 OKを返す' do
49 response.should be_success
51 it 'ライセンスモデルに一覧を問い合わせている' do
52 License.should_receive(:list).exactly(1)
55 it '@licensesにリストを取得している' do
57 assigns(:licenses).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?("url").should be_true
82 context '作家権限がないとき' do
86 it 'ステータスコード200 okを返す' do
88 response.status.should eq 200
93 describe '単体表示に於いて' do
96 License.stub(:show).and_return(@lc)
98 context 'つつがなく終わるとき' do
99 it 'ステータスコード200 OKを返す' do
100 get :show, :id => @lc.id
101 response.should be_success
103 it 'ライセンスモデルに単体取得を問い合わせている' do
104 License.should_receive(:show).exactly(1)
107 it '@licenseにアレを取得している' do
108 get :show, :id => @lc.id
109 assigns(:license).id.should eq(@lc.id)
112 it 'showテンプレートを描画する' do
113 get :show, :id => @lc.id
114 response.should render_template("show")
119 get :show, :id => @lc.id, :format => :json
120 lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)
123 get :show, :id => @lc.id, :format => :json
124 json = JSON.parse response.body
125 json["name"].should match(/peta/)
129 context '作家権限がないとき' do
133 it 'ステータスコード200 okを返す' do
134 get :show, :id => @lc.id
135 response.status.should eq 200