mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-13 23:37:47 +00:00
Add more types of sample orders
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user