Bring order factory from spree_core and merge with modification

This commit is contained in:
Luis Ramos
2020-08-23 13:36:29 +01:00
parent 4ac6664502
commit 8d74c69402

View File

@@ -1,4 +1,103 @@
FactoryBot.define do
factory :order, class: Spree::Order do
transient do
shipping_method { create(:shipping_method, distributors: [distributor]) }
end
user
bill_address
completed_at nil
email { user.email }
factory :order_with_totals do
after(:create) do |order|
create(:line_item, order: order)
order.line_items.reload # to ensure order.line_items is accessible after
end
end
factory :order_with_line_items do
bill_address
ship_address
ignore do
line_items_count 5
end
after(:create) do |order, evaluator|
create(:shipment, order: order)
order.shipments.reload
create_list(:line_item, evaluator.line_items_count, order: order)
order.line_items.reload
order.update!
end
factory :completed_order_with_totals do
state 'complete'
completed_at { Time.now }
distributor { create(:distributor_enterprise) }
after(:create) do |order|
order.refresh_shipment_rates
end
factory :order_ready_to_ship do
payment_state 'paid'
shipment_state 'ready'
after(:create) do |order|
create(:payment, amount: order.total, order: order, state: 'completed')
order.shipments.each do |shipment|
shipment.inventory_units.each { |u| u.update_column('state', 'on_hand') }
shipment.update_column('state', 'ready')
end
order.reload
end
end
factory :shipped_order do
after(:create) do |order|
order.shipments.each do |shipment|
shipment.inventory_units.each { |u| u.update_column('state', 'shipped') }
shipment.update_column('state', 'shipped')
end
order.reload
end
end
end
end
trait :with_line_item do
transient do
variant { FactoryBot.create(:variant) }
end
after(:create) do |order, evaluator|
line_item = create(:line_item_with_shipment, order: order,
variant: evaluator.variant,
shipping_method: evaluator.shipping_method)
order.shipments << line_item.target_shipment
end
end
trait :completed do
transient do
payment_method { create(:payment_method, distributors: [distributor]) }
ship_address { create(:address) }
end
after(:create) do |order, evaluator|
create(:payment, state: "checkout", order: order, amount: order.total,
payment_method: evaluator.payment_method)
order.update_distribution_charge!
order.ship_address = evaluator.ship_address
while !order.completed? do break unless a = order.next! end
order.select_shipping_method(evaluator.shipping_method.id)
end
end
end
factory :order_with_totals_and_distribution, parent: :order_with_distributor do
transient do
shipping_fee 3
@@ -99,44 +198,3 @@ FactoryBot.define do
end
end
end
FactoryBot.modify do
factory :order do
transient do
shipping_method { create(:shipping_method, distributors: [distributor]) }
end
trait :with_line_item do
transient do
variant { FactoryBot.create(:variant) }
end
after(:create) do |order, evaluator|
line_item = create(:line_item_with_shipment, order: order,
variant: evaluator.variant,
shipping_method: evaluator.shipping_method)
order.shipments << line_item.target_shipment
end
end
trait :completed do
transient do
payment_method { create(:payment_method, distributors: [distributor]) }
ship_address { create(:address) }
end
after(:create) do |order, evaluator|
create(:payment, state: "checkout", order: order, amount: order.total,
payment_method: evaluator.payment_method)
order.update_distribution_charge!
order.ship_address = evaluator.ship_address
while !order.completed? do break unless a = order.next! end
order.select_shipping_method(evaluator.shipping_method.id)
end
end
end
factory :completed_order_with_totals do
distributor { create(:distributor_enterprise) }
end
end