diff --git a/spec/factories.rb b/spec/factories.rb index 99b704de80..da823a1e48 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -102,17 +102,21 @@ FactoryBot.define do factory :line_item_with_shipment, parent: :line_item do transient do shipping_fee 3 + shipping_method nil end - target_shipment do - shipment = order.reload.shipments.first + after(:build) do |line_item, evaluator| + shipment = line_item.order.reload.shipments.first if shipment.nil? - shipping_method = create(:shipping_method_with, :shipping_fee, shipping_fee: shipping_fee) - shipping_method.distributors << order.distributor if order.distributor + shipping_method = evaluator.shipping_method + unless shipping_method + shipping_method = create(:shipping_method_with, :shipping_fee, shipping_fee: evaluator.shipping_fee) + shipping_method.distributors << line_item.order.distributor if line_item.order.distributor + end shipment = create(:shipment_with, :shipping_method, shipping_method: shipping_method, - order: order) + order: line_item.order) end - shipment + line_item.target_shipment = shipment end end diff --git a/spec/factories/order_factory.rb b/spec/factories/order_factory.rb index bab9767ca0..9b1e60c0ff 100644 --- a/spec/factories/order_factory.rb +++ b/spec/factories/order_factory.rb @@ -94,27 +94,36 @@ 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 { FactoryGirl.create(:variant) } end after(:create) do |order, evaluator| - create(:line_item, order: order, variant: evaluator.variant) + 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| - order.create_shipment! create(:payment, state: "checkout", order: order, amount: order.total, payment_method: evaluator.payment_method) order.update_distribution_charge! - while !order.completed? do break unless order.next! end + 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