@user_rom = FactoryGirl.create :user_rom
@author_yas = @user_yas.author
- @my_model_class = Scroll
+ @my_model_class = Scroll #操作モデル
end
if Manifest.manifest.magic_numbers['run_mode'] == 1
before do
get :index, @query
end
- it 'コントローラのマニフェストからScrollモデルを@my_model_classに取得している' do
+ it 'コントローラのマニフェストから操作モデルを導出している' do
set_model? @my_model_class
end
- it 'リストグループのマニフェストから新着リストの取得処理を@listに取得している' do
+ it 'コントローラのマニフェストからリスト操作モデルを導出している' do
+ set_list_model? @my_model_class
+ end
+ it 'リストグループのマニフェストからリストgetter(新着リスト)を導出している' do
set_list? 'scroll', 'public'
end
it '@itemsにリストを取得している' do
before do
get :by_author, @query
end
- it 'コントローラのマニフェストからScrollモデルを@my_model_classに取得している' do
+ it 'コントローラのマニフェストから操作モデルを導出している' do
set_model? @my_model_class
end
it 'リストグループのマニフェストから新着リストの取得処理を@listに取得している' do
@query_format_json = @query.merge(:format => :json)
@query_format_prof = @query.merge(:format => :prof)
end
- context '正常系の共通処理' do
+ context '正常系' do
before do
sign_in @user_yas
end
- it 'コントローラのマニフェストからScrollモデルを@my_model_classに取得している' do
- get :show, @query
- set_model? @my_model_class
- end
- it '@itemにリクエストしたアイテムを取得している' do
- get :show, @query
- expect(assigns(:item)).to eq(@item)
+ context '正常系の共通処理' do
+ before do
+ get :show, @query
+ end
+ it 'コントローラのマニフェストから操作モデルを導出している' do
+ set_model? @my_model_class
+ end
+ it '@itemにリクエストしたアイテムを取得している' do
+ expect(assigns(:item)).to eq(@item)
+ end
end
context 'html形式' do
- it 'showテンプレートを描画している' do
+ before do
get :show, @query
+ end
+ it 'showテンプレートを描画している' do
return_ok?
expect(response).to render_template("show")
end
+ it 'プロファイラーは必要ないので@profilerに用意していない' do
+ expect(assigns(:profiler)).to be nil
+ end
end
context 'json形式' do
- it 'jsonデータを返す' do
+ before do
get :show, @query_format_json
+ end
+ it 'jsonデータを返す' do
return_ok?
render_json?
end
it 'プロファイラーは必要ないので@profilerに用意していない' do
- get :show, @query_format_json
expect(assigns(:profiler)).to be nil
end
end
context 'prof形式' do
- it 'プロファイラーテンプレートを描画している' do
+ before do
get :show, @query_format_prof
+ end
+ it 'プロファイラーテンプレートを描画している' do
return_ok?
render_profiler?
end
+ it '@profilerにプロファイラーを取得している' do
+ let_profiler?
+ end
end
end
context 'サインインの状態が例外的なとき' do
@query = {:id => @item_id}
@query_format_json = @query.merge(:format => :json)
end
- context '正常系の共通処理' do
+ context '正常系' do
before do
sign_in @user_yas
end
- it 'コントローラのマニフェストからScrollPanelモデルを@my_model_classに取得している' do
- # リクエストの対象はスクロールであるが、返されるのはスクコマのリストである。
- # くれぐれも間違えないように。
- get :play, @query
- set_model? ScrollPanel
- end
- it '@itemにリクエストしたスクロールを取得している' do
- get :play, @query
- expect(assigns(:item)).to eq(@item)
- end
- it 'リストグループのマニフェストからプレイリストの取得処理を@listに取得している' do
- get :play, @query
- set_list? 'scroll_panel', 'play'
- end
- it '@itemsにプレイリストを取得している' do
- get :play, @query
- set_play_list?
+ context '共通処理' do
+ before do
+ get :play, @query
+ end
+ it 'コントローラのマニフェストから操作モデルを導出している' do
+ set_model? @my_model_class
+ end
+ it '@itemにリクエストしたスクロールを取得している' do
+ expect(assigns(:item)).to eq(@item)
+ end
+ it 'コントローラのマニフェストからリスト操作モデルを導出している' do
+ # リクエストの対象はスクロールであるが、返されるのはスクコマのリストである。
+ # くれぐれも間違えないように。
+ set_list_model? ScrollPanel
+ end
+ it 'リストグループのマニフェストからリストgetter(プレイリスト)を導出している' do
+ set_list? 'scroll_panel', 'play'
+ end
+ it '@itemsにプレイリストを取得している' do
+ set_play_list? ScrollPanel
+ end
end
context 'html形式' do
- it 'playテンプレートを描画している' do
+ before do
get :play, @query
+ end
+ it 'playテンプレートを描画している' do
return_ok?
expect(response).to render_template("play")
end
end
context 'json形式' do
- it 'jsonデータを返す' do
+ before do
get :play, @query_format_json
+ end
+ it 'jsonデータを返す' do
return_ok?
render_json?
end
@query = { }
@query_format_json = @query.merge(:format => :json)
end
- context '正常系の共通処理' do
+ context '正常系' do
before do
sign_in @user_yas
end
- it 'コントローラのマニフェストからScrollモデルを@my_model_classに取得している' do
- get :new, @query
- set_model? @my_model_class
- end
- it '@itemに新規データを用意している' do
- get :new, @query
- @item = assigns(:item)
- expect(@item.is_a?(@my_model_class)).to be true
- expect(@item.new_record?).to be true
- end
- it '@formに入力フォーム(Bucket)を取得している' do
- get :new, @query
- set_bucket? assigns(:item)
+ context '共通処理' do
+ before do
+ get :new, @query
+ end
+ it 'コントローラのマニフェストから操作モデルを導出している' do
+ set_model? @my_model_class
+ end
+ it '@itemに新規データを用意している' do
+ @item = assigns(:item)
+ expect(@item.is_a?(@my_model_class)).to be true
+ expect(@item.new_record?).to be true
+ end
+ it 'ブーストしている' do
+ boost? []
+ end
end
- it 'スクロールモデルにデフォルト値補充とブーストを依頼している' do
- allow_any_instance_of(@my_model_class).to receive(:supply_default)
- allow_any_instance_of(@my_model_class).to receive(:boosts)
- expect_any_instance_of(@my_model_class).to receive(:supply_default)
- expect_any_instance_of(@my_model_class).to receive(:boosts)
- get :new, @query
+ context '問い合わせ' do
+ it 'スクロールモデルにデフォルト値補充を依頼している' do
+ allow_any_instance_of(@my_model_class).to receive(:supply_default)
+ expect_any_instance_of(@my_model_class).to receive(:supply_default)
+ get :new, @query
+ end
end
context 'html形式' do
- it 'formテンプレートを描画している' do
+ before do
get :new, @query
+ end
+ it 'formテンプレートを描画している' do
return_ok?
render_form?
end
+ it '@formに入力フォーム(Bucket)を取得している' do
+ set_bucket? assigns(:item)
+ end
end
context 'json形式' do
- it 'jsonデータを返す' do
+ before do
get :new, @query_format_json
+ end
+ it 'jsonデータを返す' do
return_ok?
render_json?
end
+ it '入力フォームは必要ないので@formに用意していない' do
+ expect(assigns(:form)).to be nil
+ end
end
end
context 'サインインの状態が例外的なとき' do
@attr = {:scroll => @attributes}
@attr_format_json = @attr.merge(:format => :json)
end
- context '正常系の共通処理' do
+ context '正常系' do
before do
sign_in @user_yas
end
- it 'コントローラのマニフェストからScrollモデルを@my_model_classに取得している' do
- allow_save @my_model_class
- post :create, @attr
- set_model? @my_model_class
- end
- it '@itemに新規アイテムを用意している' do
- allow_save @my_model_class
- post :create, @attr
- @item = assigns(:item)
- expect(@item.is_a?(@my_model_class)).to be true
- end
- it '作成されている' do
- expect {
+ context '共通処理' do
+ before do
+ allow_save @my_model_class
post :create, @attr
- }.to change {@my_model_class.count}.by( 1)
+ end
+ it 'コントローラのマニフェストから操作モデルを導出している' do
+ set_model? @my_model_class
+ end
+ it '@itemに新規アイテムを用意している' do
+ @item = assigns(:item)
+ expect(@item.is_a?(@my_model_class)).to be true
+ end
end
context 'html形式' do
- it '作成されたアイテムの表示ページへ遷移している' do
+ before do
post :create, @attr
+ end
+ it '作成されたアイテムの表示ページへ遷移している' do
redirect? @my_model_class.last
end
end
context 'json形式' do
- it 'ステータスコード200 OKを返して, 作成されたアイテムをjsonデータで返す' do
+ before do
post :create, @attr_format_json
+ end
+ it 'ステータスコード200 OKを返して, 作成されたアイテムをjsonデータで返す' do
return_ok?
render_json?
end
end
+ context 'db' do
+ it '作成されている' do
+ expect {
+ post :create, @attr
+ }.to change {@my_model_class.count}.by(1)
+ end
+ end
end
context '検証、保存に失敗したとき' do
before do
reject_save @my_model_class
end
context 'html形式' do
- it 'ステータスコード200 OKを返して, formテンプレートを描画している' do
+ before do
post :create, @attr
+ end
+ it 'ステータスコード200 OKを返して, formテンプレートを描画している' do
return_ok?
render_form?
end
it '@formに入力フォーム(Bucket)を取得している' do
- post :create, @attr
set_bucket? assigns(:item)
end
end
context 'json形式' do
- it '処理不能を返している' do
+ before do
post :create, @attr_format_json
+ end
+ it '処理不能を返している' do
render_unprocessable?
end
end
@query = {:id => @item_id}
@query_format_json = @query.merge(:format => :json)
end
- context '正常系の共通処理' do
+ context '正常系' do
before do
sign_in @user_yas
end
- it 'コントローラのマニフェストからScrollモデルを@my_model_classに取得している' do
- get :edit, @query
- set_model? @my_model_class
- end
- it '@itemにリクエストしたアイテムを取得している' do
- get :edit, @query
- expect(assigns(:item).is_a?(@my_model_class)).to be true
- expect(assigns(:item).new_record?).not_to be true
- expect(assigns(:item)).to eq(@item)
- end
- it 'スクロールモデルにデフォルト値補充とブーストを依頼している' do
- allow_any_instance_of(@my_model_class).to receive(:boosts)
- expect_any_instance_of(@my_model_class).to receive(:boosts)
- get :edit, @query
+ context '共通処理' do
+ before do
+ get :edit, @query
+ end
+ it 'コントローラのマニフェストから操作モデルを導出している' do
+ set_model? @my_model_class
+ end
+ it '@itemにリクエストしたアイテムを取得している' do
+ expect(assigns(:item).is_a?(@my_model_class)).to be true
+ expect(assigns(:item)).to eq(@item)
+ end
+ it 'ブーストしている' do
+ boost? []
+ end
end
context 'html形式' do
- it 'formテンプレートを描画している' do
+ before do
get :edit, @query
+ end
+ it 'formテンプレートを描画している' do
return_ok?
render_form?
end
it '@formに入力フォーム(Bucket)を取得している' do
- get :edit, @query
set_bucket? assigns(:item)
end
end
context 'json形式' do
- it 'jsonデータを返す' do
+ before do
get :edit, @query_format_json
+ end
+ it 'jsonデータを返す' do
return_ok?
render_json?
end
+ it '入力フォームは必要ないので@formに用意していない' do
+ expect(assigns(:form)).to be nil
+ end
end
end
context 'サインインの状態が例外的なとき' do
@attr = {:id => @item_id, :scroll => @attributes}
@attr_format_json = @attr.merge(:format => :json)
end
- context '正常系の共通処理' do
+ context '正常系' do
before do
sign_in @user_yas
end
- it 'コントローラのマニフェストからScrollモデルを@my_model_classに取得している' do
- allow_save @my_model_class
- put :update, @attr
- set_model? @my_model_class
- end
- it '@itemにリクエストしたアイテムを取得して, 更新している' do
- allow_save @my_model_class
- put :update, @attr
- expect(assigns(:item).is_a?(@my_model_class)).to be true
- expect(assigns(:item).visible).to eq(0)
- expect(assigns(:item)).to eq(@item)
+ context '共通処理' do
+ before do
+ allow_save @my_model_class
+ put :update, @attr
+ end
+ it 'コントローラのマニフェストから操作モデルを導出している' do
+ set_model? @my_model_class
+ end
+ it '@itemにリクエストしたアイテムを取得している' do
+ expect(assigns(:item).is_a?(@my_model_class)).to be true
+ expect(assigns(:item)).to eq(@item)
+ end
end
context 'html形式' do
- it '作成されたアイテムの表示ページへ遷移している' do
+ before do
+ allow_save @my_model_class
put :update, @attr
+ end
+ it 'リクエストしたアイテムの表示ページへ遷移している' do
redirect? @item
end
end
context 'json形式' do
- it 'ステータスコード200 OKを返して, ページ本体は特に返さない' do
+ before do
+ allow_save @my_model_class
put :update, @attr_format_json
+ end
+ it 'ステータスコード200 OKを返して, ページ本体は特に返さない' do
return_ok?
- expect(response.message).to match /./
+ render_complated?
+ end
+ end
+ context 'db' do
+ it '@itemの件数に変わりはない' do
+ expect {
+ put :update, @attr
+ }.to change {@my_model_class.count}.by(0)
+ end
+ it '@itemを更新している' do
+ put :update, @attr
+ # dbから取得しなおす
+ updated_item = @my_model_class.find @item_id
+ # 変化を確認できるカラムはモデルごとに違うので注意
+ expect(updated_item.visible).to eq(0)
end
end
end
reject_save @my_model_class
end
context 'html形式' do
- it 'ステータスコード200 OKを返して, formテンプレートを描画している' do
+ before do
put :update, @attr
+ end
+ it 'ステータスコード200 OKを返して, formテンプレートを描画している' do
return_ok?
render_form?
end
it '@formに入力フォーム(Bucket)を取得している' do
- put :update, @attr
set_bucket? assigns(:item)
end
end
context 'json形式' do
- it '処理不能を返している' do
+ before do
put :update, @attr_format_json
+ end
+ it '処理不能を返している' do
render_unprocessable?
end
+ it '入力フォームは必要ないので@formに用意していない' do
+ expect(assigns(:form)).to be nil
+ end
end
end
context 'サインインの状態が例外的なとき' do
@attr = {:id => @item_id}
@attr_format_json = @attr.merge(:format => :json)
end
- context '正常系の共通処理' do
+ context '正常系' do
before do
sign_in @user_yas
end
- it 'コントローラのマニフェストからScrollモデルを@my_model_classに取得している' do
- allow_destroy @my_model_class
- delete :destroy, @attr
- set_model? @my_model_class
- end
- it '@itemにリクエストしたアイテムを取得している' do
- allow_destroy @my_model_class
- delete :destroy, @attr
- expect(assigns(:item).is_a?(@my_model_class)).to be true
- expect(assigns(:item)).to eq(@item)
- end
- it '削除されている' do
- expect {
- delete :destroy, @attr
- }.to change {@my_model_class.count}.by(-1)
- end
- it 'ぶら下がるリーフも削除されている' do
- expect {
+ context '共通処理' do
+ before do
+ allow_destroy @my_model_class
delete :destroy, @attr
- }.to change {ScrollPanel.count}.from(4).to(0)
+ end
+ it 'コントローラのマニフェストから操作モデルを導出している' do
+ set_model? @my_model_class
+ end
+ it '@itemにリクエストしたアイテムを取得している' do
+ expect(assigns(:item).is_a?(@my_model_class)).to be true
+ expect(assigns(:item)).to eq(@item)
+ end
end
context 'html形式' do
- it 'マイスクロールの一覧ページへ遷移している' do
+ before do
+ allow_destroy @my_model_class
delete :destroy, @attr
+ end
+ it 'マイスクロールの一覧ページへ遷移している' do
redirect? '/home/scrolls'
end
end
context 'json形式' do
- it 'ステータスコード200 OKを返して, ページ本体は特に返さない' do
+ before do
+ allow_destroy @my_model_class
delete :destroy, @attr_format_json
+ end
+ it 'ステータスコード200 OKを返して, ページ本体は特に返さない' do
expect(response).to be_success
- expect(response.message).to match /./
+ render_complated?
+ end
+ end
+ context 'db' do
+ it '削除されている' do
+ expect {
+ delete :destroy, @attr
+ }.to change {@my_model_class.count}.by(-1)
+ end
+ it 'ぶら下がるリーフも削除されている' do
+ expect {
+ delete :destroy, @attr
+ }.to change {ScrollPanel.count}.from(4).to(0)
end
end
end
reject_destroy @my_model_class
end
context 'html形式' do
- it 'リクエストしたアイテムの詳細ページへ遷移している' do
+ before do
delete :destroy, @attr
+ end
+ it 'リクエストしたアイテムの詳細ページへ遷移している' do
redirect? @item
end
end
context 'json形式' do
- it '処理不能を返している' do
+ before do
delete :destroy, @attr_format_json
+ end
+ it '処理不能を返している' do
render_unprocessable?
end
end