X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=spec%2Fcontrollers%2Fprovider_statuses_controller_spec.rb;h=3af7034cbce67cccd229e7b85438733e0fad0569;hb=0bdfae60dc58932c99849c31d36ee5d7715db782;hp=e70216a8eb62267905d262a75bfbef84bce5288b;hpb=0cd579131bd2cc5390baed66b827a5c99d25c27e;p=pettanr%2Fpettanr.git diff --git a/spec/controllers/provider_statuses_controller_spec.rb b/spec/controllers/provider_statuses_controller_spec.rb index e70216a8..3af7034c 100644 --- a/spec/controllers/provider_statuses_controller_spec.rb +++ b/spec/controllers/provider_statuses_controller_spec.rb @@ -9,7 +9,8 @@ describe ProviderStatusesController do @lg = FactoryGirl.create :license_group @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id @user = FactoryGirl.create :user_yas - @author = @user.author #ユーザ作成時に連動して作成される + @author = FactoryGirl.create :author, :user_id => @user.id + @artist = FactoryGirl.create :artist, :author_id => @author.id end describe '一覧表示に於いて' do @@ -357,5 +358,305 @@ describe ProviderStatusesController do end end end - + + describe 'ライセンスインポートに於いて' do + before do + @ps = FactoryGirl.create :provider_status, :token => 'aaaaaaaaaaaaaaaaa' + @provider = FactoryGirl.create :provider, :provider_status_id => @ps.id + ProviderStatus.stub(:show).and_return(@ps) + sign_in @admin + end + context '事前チェックしておく' do + before do + ProviderStatus.any_instance.stub(:status).with(any_args).and_return(1) + ProviderStatus.stub(:licenses_import).with(any_args).and_return(LicenseImportResult.new([])) + end + it '借受状況モデルに単体取得を問い合わせている' do + ProviderStatus.should_receive(:show).exactly(1) + get :licenses_import, :id => @ps.id + end + it 'インポートを依頼している' do + ProviderStatus.any_instance.should_receive(:licenses_import).exactly(1) + get :licenses_import, :id => @ps.id + end + end + context 'つつがなく終わるとき' do + before do + ProviderStatus.any_instance.stub(:status).with(any_args).and_return(1) + ProviderStatus.any_instance.stub(:licenses_import).with(any_args).and_return(LicenseImportResult.new([])) + end + it 'ステータスコード200 OKを返す' do + get :licenses_import, :id => @ps.id + response.should be_success + end + it '@provider_statusに借受状況を取得している' do + get :licenses_import, :id => @ps.id + assigns(:provider_status).should eq(@ps) + end + it '@import_resultにインポート結果を取得している' do + get :licenses_import, :id => @ps.id + assigns(:import_result).is_a?(ImportResult).should be_true + end + context 'html形式' do + it 'licenses_importテンプレートを描画する' do + get :licenses_import, :id => @ps.id + response.should render_template("licenses_import") + end + end + context 'json形式' do + it 'jsonデータを返す' do + get :licenses_import, :id => @ps.id, :format => :json + lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError) + end + end + end + context '管理者権限がないとき' do + before do + sign_out @admin + end + context 'html形式' do + it 'ステータスコード302 Foundを返す' do + get :licenses_import, :id => @ps.id + response.status.should eq 302 + end + it 'サインインページへ遷移する' do + get :licenses_import, :id => @ps.id + response.body.should redirect_to '/admins/sign_in' + end + end + context 'json形式' do + it 'ステータスコード401 Unauthorizedを返す' do + get :licenses_import, :id => @ps.id, :format => :json + response.status.should eq 401 + end + it '応答メッセージにUnauthorizedを返す' do + get :licenses_import, :id => @ps.id, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context '借受権限がないとき' do + before do + ProviderStatus.any_instance.stub(:status).and_return(0) + end + context 'html形式' do + it '例外403 forbiddenを返す' do + lambda{ + get :licenses_import, :id => @ps.id + }.should raise_error(ActiveRecord::Forbidden) + end + end + context 'json形式' do + it '例外403 forbiddenを返す' do + lambda{ + get :licenses_import, :id => @ps.id, :format => :json + }.should raise_error(ActiveRecord::Forbidden) + end + end + end + end + + describe '絵師インポートに於いて' do + before do + @ps = FactoryGirl.create :provider_status, :token => 'aaaaaaaaaaaaaaaaa' + @provider = FactoryGirl.create :provider, :provider_status_id => @ps.id + ProviderStatus.stub(:show).and_return(@ps) + sign_in @admin + end + context '事前チェックしておく' do + before do + ProviderStatus.any_instance.stub(:status).with(any_args).and_return(1) + ProviderStatus.any_instance.stub(:artists_import).with(any_args).and_return(ArtistImportResult.new([])) + end + it '借受状況モデルに単体取得を問い合わせている' do + ProviderStatus.should_receive(:show).exactly(1) + get :artists_import, :id => @ps.id + end + it 'インポートを依頼している' do + ProviderStatus.any_instance.should_receive(:artists_import).exactly(1) + get :artists_import, :id => @ps.id + end + end + context 'つつがなく終わるとき' do + before do + ProviderStatus.any_instance.stub(:status).with(any_args).and_return(1) + ProviderStatus.any_instance.stub(:artists_import).with(any_args).and_return(ArtistImportResult.new([])) + end + it 'ステータスコード200 OKを返す' do + get :artists_import, :id => @ps.id + response.should be_success + end + it '@provider_statusに借受状況を取得している' do + get :artists_import, :id => @ps.id + assigns(:provider_status).should eq(@ps) + end + it '@import_resultにインポート結果を取得している' do + get :artists_import, :id => @ps.id + assigns(:import_result).is_a?(ImportResult).should be_true + end + context 'html形式' do + it 'artists_importテンプレートを描画する' do + get :artists_import, :id => @ps.id + response.should render_template("artists_import") + end + end + context 'json形式' do + it 'jsonデータを返す' do + get :artists_import, :id => @ps.id, :format => :json + lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError) + end + end + end + context '管理者権限がないとき' do + before do + sign_out @admin + end + context 'html形式' do + it 'ステータスコード302 Foundを返す' do + get :artists_import, :id => @ps.id + response.status.should eq 302 + end + it 'サインインページへ遷移する' do + get :artists_import, :id => @ps.id + response.body.should redirect_to '/admins/sign_in' + end + end + context 'json形式' do + it 'ステータスコード401 Unauthorizedを返す' do + get :artists_import, :id => @ps.id, :format => :json + response.status.should eq 401 + end + it '応答メッセージにUnauthorizedを返す' do + get :artists_import, :id => @ps.id, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context '借受権限がないとき' do + before do + ProviderStatus.any_instance.stub(:status).and_return(0) + end + context 'html形式' do + it '例外403 forbiddenを返す' do + lambda{ + get :artists_import, :id => @ps.id + }.should raise_error(ActiveRecord::Forbidden) + end + end + context 'json形式' do + it '例外403 forbiddenを返す' do + lambda{ + get :artists_import, :id => @ps.id, :format => :json + }.should raise_error(ActiveRecord::Forbidden) + end + end + end + end + + describe '素材インポートに於いて' do + before do + @ps = FactoryGirl.create :provider_status, :token => 'aaaaaaaaaaaaaaaaa' + @provider = FactoryGirl.create :provider, :provider_status_id => @ps.id + ProviderStatus.stub(:show).and_return(@ps) + sign_in @admin + @op = FactoryGirl.create :original_picture, :artist_id => @artist.id + @p = FactoryGirl.create :picture, :artist_id => @artist.id, :original_picture_id => @op.id, :license_id => @license.id, :revision => 0 + @opattr = @op.attributes + @pattr = @p.attributes + @pattr['picture_data'] = "abc\ndef\nghi" + @rpattr = {:original_picture_id => @op.id, :picture_id => @p.id, :license_id => @license.id, :artist_id => @artist.id, :artist_name => 'tester', + :credit => '{}', :settings => {:reverse => 1, :gif_convert => 1}.to_json.to_s} + @opattr['resource_picture'] = @rpattr + @opattr['resource_picture']['picture_data'] = "abc\ndef\nghi" + end + context '事前チェックしておく' do + before do + ProviderStatus.any_instance.stub(:status).with(any_args).and_return(1) + ProviderStatus.any_instance.stub(:original_pictures_import).with(any_args).and_return(OriginalPictureImportResult.new([])) + end + it '借受状況モデルに単体取得を問い合わせている' do + ProviderStatus.should_receive(:show).exactly(1) + get :original_pictures_import, :id => @ps.id + end + it 'インポートを依頼している' do + ProviderStatus.any_instance.should_receive(:original_pictures_import).exactly(1) + get :original_pictures_import, :id => @ps.id + end + end + context 'つつがなく終わるとき' do + before do + ProviderStatus.any_instance.stub(:status).with(any_args).and_return(1) + ProviderStatus.any_instance.stub(:original_pictures_import).with(any_args).and_return(OriginalPictureImportResult.new([])) + end + it 'ステータスコード200 OKを返す' do + get :original_pictures_import, :id => @ps.id + response.should be_success + end + it '@provider_statusに借受状況を取得している' do + get :original_pictures_import, :id => @ps.id + assigns(:provider_status).should eq(@ps) + end + it '@import_resultにインポート結果を取得している' do + get :original_pictures_import, :id => @ps.id + assigns(:import_result).is_a?(ImportResult).should be_true + end + context 'html形式' do + it 'artists_importテンプレートを描画する' do + get :original_pictures_import, :id => @ps.id + response.should render_template("original_pictures_import") + end + end + context 'json形式' do + it 'jsonデータを返す' do + get :original_pictures_import, :id => @ps.id, :format => :json + lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError) + end + end + end + context '管理者権限がないとき' do + before do + sign_out @admin + end + context 'html形式' do + it 'ステータスコード302 Foundを返す' do + get :original_pictures_import, :id => @ps.id + response.status.should eq 302 + end + it 'サインインページへ遷移する' do + get :original_pictures_import, :id => @ps.id + response.body.should redirect_to '/admins/sign_in' + end + end + context 'json形式' do + it 'ステータスコード401 Unauthorizedを返す' do + get :original_pictures_import, :id => @ps.id, :format => :json + response.status.should eq 401 + end + it '応答メッセージにUnauthorizedを返す' do + get :original_pictures_import, :id => @ps.id, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context '借受権限がないとき' do + before do + ProviderStatus.any_instance.stub(:status).and_return(0) + end + context 'html形式' do + it '例外403 forbiddenを返す' do + lambda{ + get :original_pictures_import, :id => @ps.id + }.should raise_error(ActiveRecord::Forbidden) + end + end + context 'json形式' do + it '例外403 forbiddenを返す' do + lambda{ + get :original_pictures_import, :id => @ps.id, :format => :json + }.should raise_error(ActiveRecord::Forbidden) + end + end + end + end + end