ここもほぼ同内容である.
describe 'PATCH #update' do
before { @attrs = object.attributes }
context 'owned object' do
subject { -> { patch event_event_gakusei_path(event, object), params: {event_gakusei: @attrs}, xhr: true } }
context '正しいパラメータに対して' do
before { @attrs['shusseki'] = 'kesseki' }
it_behaves_like :response_status_check, 200
it_behaves_like :change_object_value_by_update, EventGakusei, :shusseki, 'kesseki'
end
end
context 'not owned object' do
subject { -> { patch event_event_gakusei_path(event, not_mine), params: {event_gakusei: @attrs}, xhr: true } }
it_behaves_like :response_status_check, 302
it_behaves_like :redirect_to
it_behaves_like :flash_alert_message, '出席が更新できません.'
end
end
def update
@kesseki_mode = true if params[:kesseki_mode]
@event_gakusei = @event.event_gakuseis.find_by_id(params[:id])
redirect_to(kurasus_path, alert: t('.not_my_event')) and return if @event.nil?
redirect_to(event_event_gakuseis_path(@event), alert: alert_message(EventGakusei)) and return if @event_gakusei.nil?
@pre_value = @event_gakusei.shusseki_before_type_cast
@event_gakusei.update_attributes(event_gakusei_params)
end
(中略)
def event_gakusei_params
params.required(:event_gakusei).permit(:shusseki)
end
:plain
var pre = document.getElementById('#{@event_gakusei.gakusei_id}_#{@pre_value}')
pre.innerHTML = ''
var post = document.getElementById('#{@event_gakusei.gakusei_id}_#{@event_gakusei.shusseki_before_type_cast}')
post.innerHTML = '#{escape_javascript(render partial: 'index_sub.html', locals: {event_gakusei: @event_gakusei, kesseki_mode: @kesseki_mode, mode: @event_gakusei.shusseki_before_type_cast})}'
PATCH #update
owned object
正しいパラメータに対して
behaves like response_status_check
response should be 200
behaves like change_object_value_by_update
should change `klass.find(object.id).send(key)` from "shusseki" to "kesseki"
not owned object
behaves like response_status_check
response should be 302
behaves like redirect_to
should redirect to "/events/2026/event_gakuseis"
behaves like flash_alert_message
should eq "出席が更新できません."
長くなったので今日はここまで