From 4d222c61c658199d3f6b7344df3a1768c214ec8a Mon Sep 17 00:00:00 2001 From: wandji20 Date: Tue, 20 Aug 2024 20:31:23 +0100 Subject: [PATCH] Improve readability of order_cycle_set process method --- app/services/sets/order_cycle_set.rb | 21 +++++++++++++------ .../admin/order_cycles_controller_spec.rb | 1 - 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/services/sets/order_cycle_set.rb b/app/services/sets/order_cycle_set.rb index afe7b71f3a..9d2e2dfee5 100644 --- a/app/services/sets/order_cycle_set.rb +++ b/app/services/sets/order_cycle_set.rb @@ -9,16 +9,25 @@ module Sets super(OrderCycle, collection, attributes) end - def process(found_element, attributes) - if @confirm_datetime_change && found_element.orders.exists? && - ((attributes.key?(:orders_open_at) && - !found_element.same_datetime_value(:orders_open_at, attributes[:orders_open_at])) || - (attributes.key?(:orders_close_at) && - !found_element.same_datetime_value(:orders_close_at, attributes[:orders_close_at]))) + def process(order_cycle, attributes) + if @confirm_datetime_change && + order_cycle.orders.exists? && + datetime_value_changed(order_cycle, attributes) raise @error_class end super end + + private + + def datetime_value_changed(order_cycle, attributes) + # return true if either key is present in params and change in values detected + return true if attributes.key?(:orders_open_at) && + !order_cycle.same_datetime_value(:orders_open_at, attributes[:orders_open_at]) + + attributes.key?(:orders_close_at) && + !order_cycle.same_datetime_value(:orders_close_at, attributes[:orders_close_at]) + end end end diff --git a/spec/controllers/admin/order_cycles_controller_spec.rb b/spec/controllers/admin/order_cycles_controller_spec.rb index cce80bae2a..6f02b81802 100644 --- a/spec/controllers/admin/order_cycles_controller_spec.rb +++ b/spec/controllers/admin/order_cycles_controller_spec.rb @@ -336,7 +336,6 @@ module Admin context "as a manager of the coordinator" do let(:user) { coordinator.owner } - let(:error_class) { Admin::OrderCyclesController::DateTimeChangeError } let(:expected) { [order_cycle, allowed.merge(restricted).merge(datetime_confirmation_attrs), user] }