Add more types of sample orders

This commit is contained in:
Luis Ramos
2020-05-05 23:14:46 +01:00
parent 4083da5b16
commit 825f747dff

View File

@@ -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"