From 5289a5b381d4b042f1227f3538473388eb71bf28 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 2 Nov 2020 19:41:40 +0000 Subject: [PATCH 01/13] Add namespace to all sample data factories These factories are not used in testing and this way we avoid collisions on the root namespace as it was happening already with OrderFactory --- lib/tasks/sample_data.rake | 26 +-- lib/tasks/sample_data/customer_factory.rb | 28 +-- lib/tasks/sample_data/enterprise_factory.rb | 160 +++++++------- lib/tasks/sample_data/fee_factory.rb | 46 ++-- lib/tasks/sample_data/group_factory.rb | 64 +++--- lib/tasks/sample_data/inventory_factory.rb | 58 ++--- lib/tasks/sample_data/order_cycle_factory.rb | 198 +++++++++--------- lib/tasks/sample_data/order_factory.rb | 132 ++++++------ .../sample_data/payment_method_factory.rb | 100 ++++----- lib/tasks/sample_data/permission_factory.rb | 50 ++--- lib/tasks/sample_data/product_factory.rb | 168 +++++++-------- .../sample_data/shipping_method_factory.rb | 100 ++++----- lib/tasks/sample_data/taxon_factory.rb | 44 ++-- lib/tasks/sample_data/user_factory.rb | 66 +++--- 14 files changed, 633 insertions(+), 607 deletions(-) diff --git a/lib/tasks/sample_data.rake b/lib/tasks/sample_data.rake index 1dcac757c9..40cc210f6d 100644 --- a/lib/tasks/sample_data.rake +++ b/lib/tasks/sample_data.rake @@ -27,31 +27,31 @@ namespace :ofn do task sample_data: :environment do raise "Please run `rake db:seed` first." unless seeded? - users = UserFactory.new.create_samples + users = SampleData::UserFactory.new.create_samples - enterprises = EnterpriseFactory.new.create_samples(users) + enterprises = SampleData::EnterpriseFactory.new.create_samples(users) - PermissionFactory.new.create_samples(enterprises) + SampleData::PermissionFactory.new.create_samples(enterprises) - FeeFactory.new.create_samples(enterprises) + SampleData::FeeFactory.new.create_samples(enterprises) - ShippingMethodFactory.new.create_samples(enterprises) + SampleData::ShippingMethodFactory.new.create_samples(enterprises) - PaymentMethodFactory.new.create_samples(enterprises) + SampleData::PaymentMethodFactory.new.create_samples(enterprises) - TaxonFactory.new.create_samples + SampleData::TaxonFactory.new.create_samples - products = ProductFactory.new.create_samples(enterprises) + products = SampleData::ProductFactory.new.create_samples(enterprises) - InventoryFactory.new.create_samples(products) + SampleData::InventoryFactory.new.create_samples(products) - OrderCycleFactory.new.create_samples + SampleData::OrderCycleFactory.new.create_samples - CustomerFactory.new.create_samples(users) + SampleData::CustomerFactory.new.create_samples(users) - GroupFactory.new.create_samples + SampleData::GroupFactory.new.create_samples - OrderFactory.new.create_samples + SampleData::OrderFactory.new.create_samples end def seeded? diff --git a/lib/tasks/sample_data/customer_factory.rb b/lib/tasks/sample_data/customer_factory.rb index c574f3150b..866f98f487 100644 --- a/lib/tasks/sample_data/customer_factory.rb +++ b/lib/tasks/sample_data/customer_factory.rb @@ -1,19 +1,21 @@ require "tasks/sample_data/logging" -class CustomerFactory - include Logging +module SampleData + class CustomerFactory + include Logging - def create_samples(users) - log "Creating customers" - jane = users["Jane Customer"] - maryse_shop = Enterprise.find_by(name: "Maryse's Private Shop") - return if Customer.where(user_id: jane, enterprise_id: maryse_shop).exists? + def create_samples(users) + log "Creating customers" + jane = users["Jane Customer"] + maryse_shop = Enterprise.find_by(name: "Maryse's Private Shop") + return if Customer.where(user_id: jane, enterprise_id: maryse_shop).exists? - log "- #{jane.email}" - Customer.create!( - email: jane.email, - user: jane, - enterprise: maryse_shop - ) + log "- #{jane.email}" + Customer.create!( + email: jane.email, + user: jane, + enterprise: maryse_shop + ) + end end end diff --git a/lib/tasks/sample_data/enterprise_factory.rb b/lib/tasks/sample_data/enterprise_factory.rb index 296d05cef8..5c884dfc9e 100644 --- a/lib/tasks/sample_data/enterprise_factory.rb +++ b/lib/tasks/sample_data/enterprise_factory.rb @@ -1,94 +1,96 @@ require "tasks/sample_data/addressing" require "tasks/sample_data/logging" -class EnterpriseFactory - include Logging - include Addressing +module SampleData + class EnterpriseFactory + include Logging + include Addressing - def create_samples(users) - log "Creating enterprises:" - enterprise_data(users).map do |data| - name = data[:name] - log "- #{name}" - data[:long_description] = data[:long_description].strip_heredoc.tr("\n", " ") - Enterprise.create_with(data).find_or_create_by!(name: name) + def create_samples(users) + log "Creating enterprises:" + enterprise_data(users).map do |data| + name = data[:name] + log "- #{name}" + data[:long_description] = data[:long_description].strip_heredoc.tr("\n", " ") + Enterprise.create_with(data).find_or_create_by!(name: name) + end end - end - private + private - # rubocop:disable Metrics/MethodLength - def enterprise_data(users) - [ - { - name: "Penny's Profile", - owner: users["Penny Profile"], - is_primary_producer: false, - sells: "none", - address: address("25 Myrtle Street, Bayswater, 3153"), - long_description: < Date: Mon, 2 Nov 2020 19:42:13 +0000 Subject: [PATCH 02/13] Add task to reset Orders inside a specific Order Cycle by repeating the placement job --- lib/tasks/subscriptions/subscriptions.rake | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 lib/tasks/subscriptions/subscriptions.rake diff --git a/lib/tasks/subscriptions/subscriptions.rake b/lib/tasks/subscriptions/subscriptions.rake new file mode 100644 index 0000000000..6a9fcb06a8 --- /dev/null +++ b/lib/tasks/subscriptions/subscriptions.rake @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +namespace :ofn do + namespace :subs do + desc "Repeat placement job for a specific Order Cycle" + task repeat_placement_job: :environment do + puts "WARNING: this task will generate new, and potentially duplicate, orders for customers" + + puts "Please input Order Cycle ID to reset" + input = STDIN.gets.chomp + exit if input.blank? || !Integer(input) + order_cycle_id = Integer(input) + + # Open Order Cycle by moving open_at to the past + OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: Time.zone.now - 1000) + + # Reset Proxy Orders of the Order Cycle + # by detatching them from existing orders and resetting placed and confirmed dates + ProxyOrder.find_by(order_cycle_id: order_cycle_id).update(order_id: nil, + confirmed_at: nil, + placed_at: nil) + + # Run placement job to create orders + SubscriptionPlacementJob.new.perform + end + end +end From 51451292bd8ecb2556ad4abac8ca5ea8468fc4ca Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 2 Nov 2020 19:57:26 +0000 Subject: [PATCH 03/13] Add task to closse OC and confirm orders --- lib/tasks/subscriptions/subscriptions.rake | 27 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/lib/tasks/subscriptions/subscriptions.rake b/lib/tasks/subscriptions/subscriptions.rake index 6a9fcb06a8..421911a037 100644 --- a/lib/tasks/subscriptions/subscriptions.rake +++ b/lib/tasks/subscriptions/subscriptions.rake @@ -4,12 +4,9 @@ namespace :ofn do namespace :subs do desc "Repeat placement job for a specific Order Cycle" task repeat_placement_job: :environment do - puts "WARNING: this task will generate new, and potentially duplicate, orders for customers" + puts "WARNING: this task will generate new, and potentially duplicate, customer orders" - puts "Please input Order Cycle ID to reset" - input = STDIN.gets.chomp - exit if input.blank? || !Integer(input) - order_cycle_id = Integer(input) + order_cycle_id = request_order_cycle_id # Open Order Cycle by moving open_at to the past OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: Time.zone.now - 1000) @@ -23,5 +20,25 @@ namespace :ofn do # Run placement job to create orders SubscriptionPlacementJob.new.perform end + + desc "Force confirmation job for a specific Order Cycle" + task force_confirmation_job: :environment do + puts "WARNING: this task will process payments in customer orders" + + order_cycle_id = request_order_cycle_id + + # Close Orde Cycle by moving close_at to the past + OrderCycle.find_by(id: order_cycle_id).update(orders_close_at: Time.zone.now - 1000) + + # Run Confirm Job to process payments + SubscriptionConfirmJob.new.perform + end + + def request_order_cycle_id + puts "Please input Order Cycle ID to reset" + input = STDIN.gets.chomp + exit if input.blank? || !Integer(input) + Integer(input) + end end end From 63d62d7ce44f167a2daf5cf5399310b6f86698e6 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 2 Nov 2020 20:08:47 +0000 Subject: [PATCH 04/13] Improve subs task by making it handle open and close times of the Order Cycle being tested --- lib/tasks/subscriptions/subscriptions.rake | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/tasks/subscriptions/subscriptions.rake b/lib/tasks/subscriptions/subscriptions.rake index 421911a037..84b9c923e1 100644 --- a/lib/tasks/subscriptions/subscriptions.rake +++ b/lib/tasks/subscriptions/subscriptions.rake @@ -8,8 +8,9 @@ namespace :ofn do order_cycle_id = request_order_cycle_id - # Open Order Cycle by moving open_at to the past - OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: Time.zone.now - 1000) + # Open Order Cycle by moving close_at to the future and open_at to the past + OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: Time.zone.now - 15.minutes, + orders_close_at: Time.zone.now + 15.minutes) # Reset Proxy Orders of the Order Cycle # by detatching them from existing orders and resetting placed and confirmed dates @@ -28,7 +29,8 @@ namespace :ofn do order_cycle_id = request_order_cycle_id # Close Orde Cycle by moving close_at to the past - OrderCycle.find_by(id: order_cycle_id).update(orders_close_at: Time.zone.now - 1000) + OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: Time.zone.now - 30.minutes, + orders_close_at: Time.zone.now - 15.minutes) # Run Confirm Job to process payments SubscriptionConfirmJob.new.perform From fdfc0b330f0bf919d094bf505966afe62731b852 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 2 Nov 2020 20:10:42 +0000 Subject: [PATCH 05/13] Remove some duplicated code --- lib/tasks/subscriptions/subscriptions.rake | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/tasks/subscriptions/subscriptions.rake b/lib/tasks/subscriptions/subscriptions.rake index 84b9c923e1..3b9adb852f 100644 --- a/lib/tasks/subscriptions/subscriptions.rake +++ b/lib/tasks/subscriptions/subscriptions.rake @@ -9,8 +9,7 @@ namespace :ofn do order_cycle_id = request_order_cycle_id # Open Order Cycle by moving close_at to the future and open_at to the past - OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: Time.zone.now - 15.minutes, - orders_close_at: Time.zone.now + 15.minutes) + set_order_cycle_times(order_cycle_id, Time.zone.now - 15.minutes, Time.zone.now + 15.minutes) # Reset Proxy Orders of the Order Cycle # by detatching them from existing orders and resetting placed and confirmed dates @@ -29,13 +28,17 @@ namespace :ofn do order_cycle_id = request_order_cycle_id # Close Orde Cycle by moving close_at to the past - OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: Time.zone.now - 30.minutes, - orders_close_at: Time.zone.now - 15.minutes) + set_order_cycle_times(order_cycle_id, Time.zone.now - 30.minutes, Time.zone.now - 15.minutes) # Run Confirm Job to process payments SubscriptionConfirmJob.new.perform end + def set_order_cycle_times(order_cycle_id, open_at, close_at) + OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: open_at, + orders_close_at: close_at) + end + def request_order_cycle_id puts "Please input Order Cycle ID to reset" input = STDIN.gets.chomp From 5d9318008122205edd0e90124b19477e190b36f5 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 2 Nov 2020 20:54:53 +0000 Subject: [PATCH 06/13] Move subs tasks into subs:test namespace --- lib/tasks/subscriptions/subscriptions.rake | 49 ------------------- lib/tasks/subscriptions/test.rake | 55 ++++++++++++++++++++++ 2 files changed, 55 insertions(+), 49 deletions(-) delete mode 100644 lib/tasks/subscriptions/subscriptions.rake create mode 100644 lib/tasks/subscriptions/test.rake diff --git a/lib/tasks/subscriptions/subscriptions.rake b/lib/tasks/subscriptions/subscriptions.rake deleted file mode 100644 index 3b9adb852f..0000000000 --- a/lib/tasks/subscriptions/subscriptions.rake +++ /dev/null @@ -1,49 +0,0 @@ -# frozen_string_literal: true - -namespace :ofn do - namespace :subs do - desc "Repeat placement job for a specific Order Cycle" - task repeat_placement_job: :environment do - puts "WARNING: this task will generate new, and potentially duplicate, customer orders" - - order_cycle_id = request_order_cycle_id - - # Open Order Cycle by moving close_at to the future and open_at to the past - set_order_cycle_times(order_cycle_id, Time.zone.now - 15.minutes, Time.zone.now + 15.minutes) - - # Reset Proxy Orders of the Order Cycle - # by detatching them from existing orders and resetting placed and confirmed dates - ProxyOrder.find_by(order_cycle_id: order_cycle_id).update(order_id: nil, - confirmed_at: nil, - placed_at: nil) - - # Run placement job to create orders - SubscriptionPlacementJob.new.perform - end - - desc "Force confirmation job for a specific Order Cycle" - task force_confirmation_job: :environment do - puts "WARNING: this task will process payments in customer orders" - - order_cycle_id = request_order_cycle_id - - # Close Orde Cycle by moving close_at to the past - set_order_cycle_times(order_cycle_id, Time.zone.now - 30.minutes, Time.zone.now - 15.minutes) - - # Run Confirm Job to process payments - SubscriptionConfirmJob.new.perform - end - - def set_order_cycle_times(order_cycle_id, open_at, close_at) - OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: open_at, - orders_close_at: close_at) - end - - def request_order_cycle_id - puts "Please input Order Cycle ID to reset" - input = STDIN.gets.chomp - exit if input.blank? || !Integer(input) - Integer(input) - end - end -end diff --git a/lib/tasks/subscriptions/test.rake b/lib/tasks/subscriptions/test.rake new file mode 100644 index 0000000000..9a97b443ae --- /dev/null +++ b/lib/tasks/subscriptions/test.rake @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +namespace :ofn do + namespace :subs do + namespace :test do + desc "Repeat placement job for a specific Order Cycle" + task repeat_placement_job: :environment do + puts "WARNING: this task will generate new, and potentially duplicate, customer orders" + + order_cycle_id = request_order_cycle_id + + # Open Order Cycle by moving close_at to the future and open_at to the past + set_order_cycle_times(order_cycle_id, + Time.zone.now - 15.minutes, + Time.zone.now + 15.minutes) + + # Reset Proxy Orders of the Order Cycle + # by detatching them from existing orders and resetting placed and confirmed dates + ProxyOrder.find_by(order_cycle_id: order_cycle_id).update(order_id: nil, + confirmed_at: nil, + placed_at: nil) + + # Run placement job to create orders + SubscriptionPlacementJob.new.perform + end + + desc "Force confirmation job for a specific Order Cycle" + task force_confirmation_job: :environment do + puts "WARNING: this task will process payments in customer orders" + + order_cycle_id = request_order_cycle_id + + # Close Orde Cycle by moving close_at to the past + set_order_cycle_times(order_cycle_id, + Time.zone.now - 30.minutes, + Time.zone.now - 15.minutes) + + # Run Confirm Job to process payments + SubscriptionConfirmJob.new.perform + end + + def set_order_cycle_times(order_cycle_id, open_at, close_at) + OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: open_at, + orders_close_at: close_at) + end + + def request_order_cycle_id + puts "Please input Order Cycle ID to reset" + input = STDIN.gets.chomp + exit if input.blank? || !Integer(input) + Integer(input) + end + end + end +end From 4e155641fca1dadb78855597d576ff3510d086b6 Mon Sep 17 00:00:00 2001 From: Andy Brett Date: Fri, 20 Nov 2020 10:32:48 -0800 Subject: [PATCH 07/13] fix nil error if no proxy orders found --- lib/tasks/subscriptions/test.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/subscriptions/test.rake b/lib/tasks/subscriptions/test.rake index 9a97b443ae..bfe0e48eb6 100644 --- a/lib/tasks/subscriptions/test.rake +++ b/lib/tasks/subscriptions/test.rake @@ -16,7 +16,7 @@ namespace :ofn do # Reset Proxy Orders of the Order Cycle # by detatching them from existing orders and resetting placed and confirmed dates - ProxyOrder.find_by(order_cycle_id: order_cycle_id).update(order_id: nil, + ProxyOrder.find_by(order_cycle_id: order_cycle_id)&.update(order_id: nil, confirmed_at: nil, placed_at: nil) From cd94b2327797e614b4ef28c9395c7b462176fb71 Mon Sep 17 00:00:00 2001 From: Andy Brett Date: Fri, 20 Nov 2020 10:35:02 -0800 Subject: [PATCH 08/13] fix rubocop styles --- lib/tasks/subscriptions/test.rake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/tasks/subscriptions/test.rake b/lib/tasks/subscriptions/test.rake index bfe0e48eb6..517bcecd2a 100644 --- a/lib/tasks/subscriptions/test.rake +++ b/lib/tasks/subscriptions/test.rake @@ -17,8 +17,8 @@ namespace :ofn do # Reset Proxy Orders of the Order Cycle # by detatching them from existing orders and resetting placed and confirmed dates ProxyOrder.find_by(order_cycle_id: order_cycle_id)&.update(order_id: nil, - confirmed_at: nil, - placed_at: nil) + confirmed_at: nil, + placed_at: nil) # Run placement job to create orders SubscriptionPlacementJob.new.perform From feb0ad452db5795a9b7c79e21b0296cdd281518f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 8 Dec 2020 11:33:37 +1100 Subject: [PATCH 09/13] Safeguard production env from test script --- lib/tasks/subscriptions/test.rake | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/tasks/subscriptions/test.rake b/lib/tasks/subscriptions/test.rake index 517bcecd2a..55145d3d03 100644 --- a/lib/tasks/subscriptions/test.rake +++ b/lib/tasks/subscriptions/test.rake @@ -6,6 +6,7 @@ namespace :ofn do desc "Repeat placement job for a specific Order Cycle" task repeat_placement_job: :environment do puts "WARNING: this task will generate new, and potentially duplicate, customer orders" + exit_in_production order_cycle_id = request_order_cycle_id @@ -27,6 +28,7 @@ namespace :ofn do desc "Force confirmation job for a specific Order Cycle" task force_confirmation_job: :environment do puts "WARNING: this task will process payments in customer orders" + exit_in_production order_cycle_id = request_order_cycle_id @@ -39,6 +41,13 @@ namespace :ofn do SubscriptionConfirmJob.new.perform end + def exit_in_production + return unless Rails.env.production? + + puts "Oops, we are in production environment. Exiting." + exit + end + def set_order_cycle_times(order_cycle_id, open_at, close_at) OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: open_at, orders_close_at: close_at) From 70d1888cc23f25176c3c297e8f0fe28186a91b13 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 8 Dec 2020 11:36:15 +1100 Subject: [PATCH 10/13] Ease reading of times --- lib/tasks/subscriptions/test.rake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/tasks/subscriptions/test.rake b/lib/tasks/subscriptions/test.rake index 55145d3d03..ca618c799d 100644 --- a/lib/tasks/subscriptions/test.rake +++ b/lib/tasks/subscriptions/test.rake @@ -12,8 +12,8 @@ namespace :ofn do # Open Order Cycle by moving close_at to the future and open_at to the past set_order_cycle_times(order_cycle_id, - Time.zone.now - 15.minutes, - Time.zone.now + 15.minutes) + 15.minutes.ago, + 15.minutes.from_now) # Reset Proxy Orders of the Order Cycle # by detatching them from existing orders and resetting placed and confirmed dates @@ -34,8 +34,8 @@ namespace :ofn do # Close Orde Cycle by moving close_at to the past set_order_cycle_times(order_cycle_id, - Time.zone.now - 30.minutes, - Time.zone.now - 15.minutes) + 30.minutes.ago, + 15.minutes.from_now) # Run Confirm Job to process payments SubscriptionConfirmJob.new.perform From aa8df639c48a1f12364599334049902cef8258d1 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 8 Dec 2020 11:38:50 +1100 Subject: [PATCH 11/13] Style to avoid indent changes with context changes When the indent of arguments is aligned with the method brackets, it needs to be changed when the method changes. Putting all arguments on their own line makes diffs of method changes or argument changes clearer. See the next commit. --- lib/tasks/subscriptions/test.rake | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/tasks/subscriptions/test.rake b/lib/tasks/subscriptions/test.rake index ca618c799d..7f3974b931 100644 --- a/lib/tasks/subscriptions/test.rake +++ b/lib/tasks/subscriptions/test.rake @@ -11,15 +11,18 @@ namespace :ofn do order_cycle_id = request_order_cycle_id # Open Order Cycle by moving close_at to the future and open_at to the past - set_order_cycle_times(order_cycle_id, - 15.minutes.ago, - 15.minutes.from_now) + set_order_cycle_times( + order_cycle_id, + 15.minutes.ago, + 15.minutes.from_now + ) # Reset Proxy Orders of the Order Cycle # by detatching them from existing orders and resetting placed and confirmed dates - ProxyOrder.find_by(order_cycle_id: order_cycle_id)&.update(order_id: nil, - confirmed_at: nil, - placed_at: nil) + ProxyOrder.find_by(order_cycle_id: order_cycle_id)&.update( + order_id: nil, + confirmed_at: nil, + placed_at: nil) # Run placement job to create orders SubscriptionPlacementJob.new.perform @@ -33,9 +36,11 @@ namespace :ofn do order_cycle_id = request_order_cycle_id # Close Orde Cycle by moving close_at to the past - set_order_cycle_times(order_cycle_id, - 30.minutes.ago, - 15.minutes.from_now) + set_order_cycle_times( + order_cycle_id, + 30.minutes.ago, + 15.minutes.from_now + ) # Run Confirm Job to process payments SubscriptionConfirmJob.new.perform @@ -49,8 +54,10 @@ namespace :ofn do end def set_order_cycle_times(order_cycle_id, open_at, close_at) - OrderCycle.find_by(id: order_cycle_id).update(orders_open_at: open_at, - orders_close_at: close_at) + OrderCycle.find_by(id: order_cycle_id).update( + orders_open_at: open_at, + orders_close_at: close_at + ) end def request_order_cycle_id From 906dbffb29fd190127c93e0c1bd04acf235185d2 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 8 Dec 2020 11:43:21 +1100 Subject: [PATCH 12/13] Fail loudly when task doesn't work --- lib/tasks/subscriptions/test.rake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/tasks/subscriptions/test.rake b/lib/tasks/subscriptions/test.rake index 7f3974b931..5c67cddb03 100644 --- a/lib/tasks/subscriptions/test.rake +++ b/lib/tasks/subscriptions/test.rake @@ -19,7 +19,7 @@ namespace :ofn do # Reset Proxy Orders of the Order Cycle # by detatching them from existing orders and resetting placed and confirmed dates - ProxyOrder.find_by(order_cycle_id: order_cycle_id)&.update( + ProxyOrder.find_by(order_cycle_id: order_cycle_id)&.update!( order_id: nil, confirmed_at: nil, placed_at: nil) @@ -54,7 +54,7 @@ namespace :ofn do end def set_order_cycle_times(order_cycle_id, open_at, close_at) - OrderCycle.find_by(id: order_cycle_id).update( + OrderCycle.find_by(id: order_cycle_id).update!( orders_open_at: open_at, orders_close_at: close_at ) From 84730577da0ec336e8b5b88190f2bda364729829 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 8 Dec 2020 11:48:34 +1100 Subject: [PATCH 13/13] Fail with better message when giving wrong OC id The script was failing with: NoMethodError: undefined method `update!' for nil:NilClass Now it's failing with: ActiveRecord::RecordNotFound: Couldn't find OrderCycle with id=1 --- lib/tasks/subscriptions/test.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/subscriptions/test.rake b/lib/tasks/subscriptions/test.rake index 5c67cddb03..e25d33e90c 100644 --- a/lib/tasks/subscriptions/test.rake +++ b/lib/tasks/subscriptions/test.rake @@ -54,7 +54,7 @@ namespace :ofn do end def set_order_cycle_times(order_cycle_id, open_at, close_at) - OrderCycle.find_by(id: order_cycle_id).update!( + OrderCycle.find(order_cycle_id).update!( orders_open_at: open_at, orders_close_at: close_at )