mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
126 lines
4.5 KiB
Ruby
126 lines
4.5 KiB
Ruby
FactoryBot.define do
|
|
factory :order_cycle, parent: :simple_order_cycle do
|
|
coordinator_fees { [create(:enterprise_fee, enterprise: coordinator)] }
|
|
|
|
after(:create) do |oc|
|
|
# Suppliers
|
|
supplier1 = create(:supplier_enterprise)
|
|
supplier2 = create(:supplier_enterprise)
|
|
|
|
# Incoming Exchanges
|
|
ex1 = create(:exchange, order_cycle: oc, incoming: true,
|
|
sender: supplier1, receiver: oc.coordinator,
|
|
receival_instructions: 'instructions 0')
|
|
ex2 = create(:exchange, order_cycle: oc, incoming: true,
|
|
sender: supplier2, receiver: oc.coordinator,
|
|
receival_instructions: 'instructions 1')
|
|
ExchangeFee.create!(exchange: ex1,
|
|
enterprise_fee: create(:enterprise_fee, enterprise: ex1.sender))
|
|
ExchangeFee.create!(exchange: ex2,
|
|
enterprise_fee: create(:enterprise_fee, enterprise: ex2.sender))
|
|
|
|
# Distributors
|
|
distributor1 = create(:distributor_enterprise)
|
|
distributor2 = create(:distributor_enterprise)
|
|
|
|
# Outgoing Exchanges
|
|
ex3 = create(:exchange, order_cycle: oc, incoming: false,
|
|
sender: oc.coordinator, receiver: distributor1,
|
|
pickup_time: 'time 0', pickup_instructions: 'instructions 0')
|
|
ex4 = create(:exchange, order_cycle: oc, incoming: false,
|
|
sender: oc.coordinator, receiver: distributor2,
|
|
pickup_time: 'time 1', pickup_instructions: 'instructions 1')
|
|
ExchangeFee.create!(exchange: ex3,
|
|
enterprise_fee: create(:enterprise_fee, enterprise: ex3.receiver))
|
|
ExchangeFee.create!(exchange: ex4,
|
|
enterprise_fee: create(:enterprise_fee, enterprise: ex4.receiver))
|
|
|
|
# Products with images
|
|
[ex1, ex2].each do |exchange|
|
|
product = create(:product, supplier: exchange.sender)
|
|
image = File.open(File.expand_path('../../app/assets/images/logo-white.png', __dir__))
|
|
Spree::Image.create(
|
|
viewable_id: product.master.id,
|
|
viewable_type: 'Spree::Variant',
|
|
alt: "position 1",
|
|
attachment: image,
|
|
position: 1
|
|
)
|
|
|
|
exchange.variants << product.variants.first
|
|
end
|
|
|
|
variants = [ex1, ex2].map(&:variants).flatten
|
|
[ex3, ex4].each do |exchange|
|
|
variants.each { |v| exchange.variants << v }
|
|
end
|
|
end
|
|
end
|
|
|
|
factory :order_cycle_with_overrides, parent: :order_cycle do
|
|
after(:create) do |oc|
|
|
oc.variants.each do |variant|
|
|
create(:variant_override, variant: variant,
|
|
hub: oc.distributors.first,
|
|
price: variant.price + 100)
|
|
end
|
|
end
|
|
end
|
|
|
|
factory :simple_order_cycle, class: OrderCycle do
|
|
sequence(:name) { |n| "Order Cycle #{n}" }
|
|
|
|
orders_open_at { 1.day.ago }
|
|
orders_close_at { 1.week.from_now }
|
|
|
|
coordinator { Enterprise.is_distributor.first || FactoryBot.create(:distributor_enterprise) }
|
|
|
|
transient do
|
|
suppliers []
|
|
distributors []
|
|
variants []
|
|
end
|
|
|
|
after(:create) do |oc, proxy|
|
|
proxy.suppliers.each do |supplier|
|
|
ex = create(:exchange, order_cycle: oc,
|
|
sender: supplier,
|
|
receiver: oc.coordinator,
|
|
incoming: true,
|
|
receival_instructions: 'instructions')
|
|
proxy.variants.each { |v| ex.variants << v }
|
|
end
|
|
|
|
proxy.distributors.each do |distributor|
|
|
ex = create(:exchange, order_cycle: oc,
|
|
sender: oc.coordinator,
|
|
receiver: distributor,
|
|
incoming: false,
|
|
pickup_time: 'time',
|
|
pickup_instructions: 'instructions')
|
|
proxy.variants.each { |v| ex.variants << v }
|
|
end
|
|
end
|
|
end
|
|
|
|
factory :undated_order_cycle, parent: :simple_order_cycle do
|
|
orders_open_at nil
|
|
orders_close_at nil
|
|
end
|
|
|
|
factory :upcoming_order_cycle, parent: :simple_order_cycle do
|
|
orders_open_at { 1.week.from_now }
|
|
orders_close_at { 2.weeks.from_now }
|
|
end
|
|
|
|
factory :open_order_cycle, parent: :simple_order_cycle do
|
|
orders_open_at { 1.week.ago }
|
|
orders_close_at { 1.week.from_now }
|
|
end
|
|
|
|
factory :closed_order_cycle, parent: :simple_order_cycle do
|
|
orders_open_at { 2.weeks.ago }
|
|
orders_close_at { 1.week.ago }
|
|
end
|
|
end
|