Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Vchekryzhov/f1e21d649fba90c89adf91890134621e to your computer and use it in GitHub Desktop.
Save Vchekryzhov/f1e21d649fba90c89adf91890134621e to your computer and use it in GitHub Desktop.
stress_test_script.rb
class StressTestOrders
def call(order_number, amount)
logger = Logger.new('log/stress_test_orders.log')
200.times do
order = Spree::Order.find_by_number(order_number)
new_order = Spree::Cart::Create.call(user: order.user, store: nil, currency: nil)
new_order = new_order.value
new_order.email = order.email
new_order.ship_address = order.ship_address.dup
new_order.ship_address.save!
new_order.bill_address = order.bill_address.dup
new_order.bill_address.save!
new_order.save!
new_order.delivery_date = Time.now + 14.days
order.line_items.each do |line_item|
Spree::Cart::LightAddItem.call(order: new_order, variant: line_item.variant, quantity: line_item.quantity)
end
new_order.next
new_order.next
new_order.shipments.first.shipping_rates.find do |shipping_rate|
shipping_rate.shipping_method_id == order.shipments.first.selected_shipping_rate.shipping_method_id
end.update(selected: true)
new_order.shipments.first.update_amounts
new_order.update_with_updater!
new_order.payments.create(payment_method_id: order.payments.first.payment_method_id, source: order.payments.first.source, amount: amount)
Spree::Checkout::Complete.call(order: new_order)
new_order.update_totals
new_order.update_with_updater!
logger.info(new_order.number)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment