先輩エンジニアの皆様質問失礼致します。
updateアクションにリクエストが送られてきたら、agreement.stateと、room.consensusをupdate_attributeしています。この2つの一貫性を保つためにもトランザクション処理をしているのですが、何らかが原因でupdate_attributeが失敗したときのresponseをテストしたいです。
テスト内でどのようにすればトランザクションの中のupdate_attributeを失敗させればいいか分かりません。
ご教授お願い致します。
ruby
1#agreements_controller.rb 2 3def update 4 agreement = Agreement.find(params[:id]) 5 room = agreement.room 6 if (api_user_signed_in? && current_api_user = agreement.user) || (api_host_signed_in? && current_api_host = agreement.host) 7 if agreement.start_time > 24.hours.since 8##############トランザクション############## 9 begin 10 ActiveRecord::Base.transaction do 11 agreement.update_attribute(:state, "変更申請中") 12 room.update_attribute(:consensus, "交渉中") 13 end 14 obj = {agreement: agreement, room: room} 15 render json: obj, status: 200 16 rescue => error 17 render json: {error: error}, status: 400 18 end 19########################################### 20 else 21 render body: nil, status: 400 22 end 23 else 24 render body: nil, status: 403 25 end 26 end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/30 19:32
2021/11/30 20:14