From 825f747dffc5f2c4926c03db799abb0c526f4075 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Tue, 5 May 2020 23:14:46 +0100 Subject: [PATCH] Add more types of sample orders --- lib/tasks/sample_data/order_factory.rb | 88 ++++++++++++++++---------- 1 file changed, 56 insertions(+), 32 deletions(-) diff --git a/lib/tasks/sample_data/order_factory.rb b/lib/tasks/sample_data/order_factory.rb index cbd7059dab..0be836ac0e 100644 --- a/lib/tasks/sample_data/order_factory.rb +++ b/lib/tasks/sample_data/order_factory.rb @@ -8,50 +8,74 @@ class OrderFactory include Addressing def create_samples - log "Creating a sample order" - order_cycle = OrderCycle.find_by(name: "Fredo's Farm Hub OC") - distributor = Enterprise.find_by(name: "Fredo's Farm Hub") + log "Creating orders" + @order_cycle = OrderCycle.find_by(name: "Fredo's Farm Hub OC") + @distributor = Enterprise.find_by(name: "Fredo's Farm Hub") + @email = "new.customer@example.org" - create_order( - "new.customer@example.org", - order_cycle, - distributor - ) + log "- cart order" + create_cart_order + + log "- complete order - not paid" + create_complete_order + + log "- complete order - paid" + order = create_complete_order + order.payments.first.capture! + + log "- complete order - delivery" + order = create_complete_order + order.select_shipping_method(delivery_shipping_method_id) + order.save + + log "- complete order - shipped" + order = create_complete_order + order.payments.first.capture! + order.save + order.shipment.ship! end private - def create_order(email, order_cycle, distributor) + def create_cart_order + order = create_order + order.save + order + end + + def create_complete_order + order = create_cart_order + AdvanceOrderService.new(order).call + order + end + + def create_order order = Spree::Order.create!( - email: email, - order_cycle: order_cycle, - distributor: distributor, + email: @email, + order_cycle: @order_cycle, + distributor: @distributor, bill_address: order_address, ship_address: order_address ) - order.line_items.create( variant_id: variant(order_cycle).id, quantity: 5 ) - order.payments.create(payment_method_id: payment_method_id(distributor)) - - place_order(order) - end - - def variant(order_cycle) - # First variant on the first outgoing exchange of the OC - order_cycle.exchanges.outgoing.first.variants.first - end - - def payment_method_id(distributor) - # First payment method of the distributor - distributor.payment_methods.first.id - end - - def place_order(order) - order.save - - AdvanceOrderService.new(order).call + order.line_items.create( variant_id: first_variant.id, quantity: 5 ) + order.payments.create(payment_method_id: first_payment_method_id) order end + def first_variant + # First variant on the first outgoing exchange of the OC + @order_cycle.exchanges.outgoing.first.variants.first + end + + def first_payment_method_id + # First payment method of the distributor + @distributor.payment_methods.first.id + end + + def delivery_shipping_method_id + @distributor.shipping_methods.find_by(name: "Home delivery").id + end + def order_address address = address("25 Myrtle Street, Bayswater, 3153") address.firstname = "John"