1 # -*- encoding: utf-8 -*-
7 @user = Factory( :user_yas)
9 @artist = Factory :artist_yas, :author_id => @author.id
16 it 'オーソドックスなデータなら通る' do
17 @comic = Factory.build :normal_comic, :author_id => @author.id
18 @comic.should be_valid
21 context 'titleを検証するとき' do
23 @comic = Factory.build :normal_comic, :author_id => @author.id, :title => nil
24 @comic.should_not be_valid
27 @comic = Factory.build :normal_comic, :author_id => @author.id, :title => 'a'*101
28 @comic.should_not be_valid
31 context 'widthを検証するとき' do
33 @comic = Factory.build :normal_comic, :author_id => @author.id, :width => nil
34 @comic.should_not be_valid
37 @comic = Factory.build :normal_comic, :author_id => @author.id, :width => 0
38 @comic.should_not be_valid
41 @comic = Factory.build :normal_comic, :author_id => @author.id, :width => -1
42 @comic.should be_valid
45 @comic = Factory.build :normal_comic, :author_id => @author.id, :width => 1
46 @comic.should be_valid
49 context 'heightを検証するとき' do
51 @comic = Factory.build :normal_comic, :author_id => @author.id, :height => nil
52 @comic.should_not be_valid
55 @comic = Factory.build :normal_comic, :author_id => @author.id, :height => 0
56 @comic.should_not be_valid
59 @comic = Factory.build :normal_comic, :author_id => @author.id, :height => -1
60 @comic.should be_valid
63 @comic = Factory.build :normal_comic, :author_id => @author.id, :height => 1
64 @comic.should be_valid
67 context 'visibleを検証するとき' do
69 @comic = Factory.build :normal_comic, :author_id => @author.id, :visible => nil
70 @comic.should_not be_valid
73 @comic = Factory.build :normal_comic, :author_id => @author.id, :visible => -1
74 @comic.should_not be_valid
77 @comic = Factory.build :normal_comic, :author_id => @author.id, :visible => 4
78 @comic.should_not be_valid
81 context 'editableを検証するとき' do
83 @comic = Factory.build :normal_comic, :author_id => @author.id, :editable => nil
84 @comic.should_not be_valid
87 @comic = Factory.build :normal_comic, :author_id => @author.id, :visible => -1
88 @comic.should_not be_valid
91 @comic = Factory.build :normal_comic, :author_id => @author.id, :visible => 4
92 @comic.should_not be_valid
97 describe 'データ補充に於いて' do
102 context '初期値を補充するとき' do
104 @comic.supply_default
105 @comic.editable.should == 0
106 @comic.visible.should == 0
108 it 'editableが空でないなら変化なし' do
110 lambda{@comic.supply_default}.should_not change(@comic, :editable)
112 it 'visibleが空でないなら変化なし' do
114 lambda{@comic.supply_default}.should_not change(@comic, :visible)
119 describe '作者判定に於いて' do
123 comic = Factory :normal_comic, :author_id => @author.id
124 comic.own?(@author).should == true
127 comic = Factory :normal_comic, :author_id => @author.id - 1
128 comic.own?(@author).should == false
131 comic = Factory :normal_comic, :author_id => @author.id
132 comic.own?(nil).should == false
135 describe '閲覧許可に於いて' do
138 it '自作の公開コミックを見るときは許可する' do
139 Comic.any_instance.stub(:own?).and_return(true)
140 comic = Factory :normal_comic, :author_id => @author.id
141 comic.visible?(@author).should == true
143 it '自作のコミックは非公開でも許可する' do
144 Comic.any_instance.stub(:own?).and_return(true)
145 comic = Factory :hidden_comic, :author_id => @author.id
146 comic.visible?(@author).should == true
148 it '他人のコミックでも公開コミックなら許可する' do
149 Comic.any_instance.stub(:own?).and_return(false)
150 comic = Factory :normal_comic, :author_id => @author.id - 1
151 comic.visible?(@author).should == true
153 it '他人のコミックで非公開コミックなら許可しない' do
154 Comic.any_instance.stub(:own?).and_return(false)
155 comic = Factory :hidden_comic, :author_id => @author.id - 1
156 comic.visible?(@author).should == false
159 describe '単体取得に於いて' do
161 @comic = Factory :normal_comic, :author_id => @author.id
164 c = Comic.show @comic.id
167 context '関連テーブルオプションがないとき' do
168 it '作家データだけを含んでいる' do
169 r = Comic.show_include_opt
170 r.should eq [:author]
173 context '関連テーブルオプションでコマを含ませたとき' do
174 it '作家データとコマデータを含んでいる' do
175 r = Comic.show_include_opt(:include => :panels)
176 r.should eq [:author, :panels]
180 describe '一覧取得に於いて' do
182 @comic = Factory :normal_comic, :author_id => @author.id
184 context 'page補正について' do
185 it '文字列から数値に変換される' do
186 Comic.page('8').should eq 8
189 Comic.page().should eq 1
192 Comic.page('0').should eq 1
195 context 'page_size補正について' do
196 it '文字列から数値に変換される' do
197 Comic.page_size('7').should eq 7
199 it 'nilの場合はComic.default_page_sizeになる' do
200 Comic.page_size().should eq Comic.default_page_size
202 it '0以下の場合はComic.default_page_sizeになる' do
203 Comic.page_size('0').should eq Comic.default_page_size
205 it 'Comic.max_page_sizeを超えた場合はComic.max_page_sizeになる' do
206 Comic.page_size('1000').should eq Comic.max_page_size
213 it '非公開コミックは(自分のコミックであっても)含んでいない' do
214 Factory :hidden_comic, :author_id => @author.id
219 v = Factory :visible_comic, :author_id => @author.id
221 c.should eq [v, @comic]
223 context 'DBに5件あって1ページの件数を2件に変えたとして' do
225 @comic2 = Factory :visible_comic, :author_id => @author.id
226 @comic3 = Factory :editable_comic, :author_id => @author.id
227 @comic4 = Factory :normal_comic, :author_id => @author.id
228 @comic5 = Factory :editable_comic, :author_id => @author.id
229 Comic.stub(:default_page_size).and_return(2)
233 c.should have(2).items
235 it 'page=1なら末尾2件を返す' do
237 c = Comic.list({}, 1)
238 c.should eq [@comic5, @comic4]
240 it 'page=2なら中間2件を返す' do
241 c = Comic.list({}, 2)
242 c.should eq [@comic3, @comic2]
244 it 'page=3なら先頭1件を返す' do
245 c = Comic.list({}, 3)