diff --git a/app/controllers/admin/orders_controller.rb b/app/controllers/admin/orders_controller.rb index edd1d18..ea3a9f5 100644 --- a/app/controllers/admin/orders_controller.rb +++ b/app/controllers/admin/orders_controller.rb @@ -3,6 +3,12 @@ class Admin::OrdersController < Admin::ApplicationController def close order = Order.find(params[:id]) + order_date = I18n.l(order.date) + + # rubocop:disable Style/AndOr + redirect_to todays_order_admin_orders_path, alert: "#{order_date}はすでに締め切り処理が済んでいます" \ + and return if order.closed? + # rubocop:enable Style/AndOr order.close! message = if order.realized? diff --git a/spec/features/admin/close_order_spec.rb b/spec/features/admin/close_order_spec.rb index a174d38..665e5b2 100644 --- a/spec/features/admin/close_order_spec.rb +++ b/spec/features/admin/close_order_spec.rb @@ -16,4 +16,27 @@ expect(page).not_to have_selector('input[type=submit][value="予約を締め切る"]') end end + + scenario 'すでに注文の締め切り処理が終わっている場合は予約を締め切れない' do + # TODO 今回あったように日付をまたいだケースを作りたい。 + order = create(:order, date: 'Mon, 29 May 2017') + Timecop.freeze(order.date) do + create(:order_item, lunchbox_id: lunchbox.id, order: order) + create(:order_item, lunchbox_id: lunchbox.id, order: order) + + visit todays_order_admin_orders_path + + using_session SecureRandom.uuid do + visit todays_order_admin_orders_path + click_button('予約を締め切る') + end + + click_button('予約を締め切る') + + expect(page).to have_content '2017/05/29(月)はすでに締め切り処理が済んでいます' + within 'h1' do + expect(page).to have_content '今日(2017/05/29(月))の予約一覧' + end + end + end end