mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-11 18:26:50 +00:00
126 lines
3.4 KiB
Ruby
126 lines
3.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'ffaker'
|
|
|
|
FactoryBot.define do
|
|
sequence(:random_string) { FFaker::Lorem.sentence }
|
|
sequence(:random_description) { FFaker::Lorem.paragraphs(Kernel.rand(1..5)).join("\n") }
|
|
sequence(:random_email) { FFaker::Internet.email }
|
|
|
|
factory :exchange, class: Exchange do
|
|
incoming { false }
|
|
order_cycle { OrderCycle.first || FactoryBot.create(:simple_order_cycle) }
|
|
sender { incoming ? FactoryBot.create(:enterprise) : order_cycle.coordinator }
|
|
receiver { incoming ? order_cycle.coordinator : FactoryBot.create(:enterprise) }
|
|
end
|
|
|
|
factory :schedule, class: Schedule do
|
|
sequence(:name) { |n| "Schedule #{n}" }
|
|
|
|
transient do
|
|
order_cycles { [OrderCycle.first || create(:simple_order_cycle)] }
|
|
end
|
|
|
|
before(:create) do |schedule, evaluator|
|
|
evaluator.order_cycles.each do |order_cycle|
|
|
order_cycle.schedules << schedule
|
|
end
|
|
end
|
|
end
|
|
|
|
factory :proxy_order, class: ProxyOrder do
|
|
subscription
|
|
order_cycle { subscription.order_cycles.first }
|
|
before(:create) do |proxy_order, _proxy|
|
|
proxy_order.order&.update_attribute(:order_cycle_id, proxy_order.order_cycle_id)
|
|
end
|
|
end
|
|
|
|
factory :variant_override, class: VariantOverride do
|
|
price { 77.77 }
|
|
on_demand { false }
|
|
count_on_hand { 11_111 }
|
|
default_stock { 2000 }
|
|
resettable { false }
|
|
|
|
trait :on_demand do
|
|
on_demand { true }
|
|
count_on_hand { nil }
|
|
end
|
|
|
|
trait :use_producer_stock_settings do
|
|
on_demand { nil }
|
|
count_on_hand { nil }
|
|
end
|
|
end
|
|
|
|
factory :inventory_item, class: InventoryItem do
|
|
enterprise
|
|
variant
|
|
visible { true }
|
|
end
|
|
|
|
factory :enterprise_relationship do
|
|
nil
|
|
end
|
|
|
|
factory :enterprise_role do
|
|
nil
|
|
end
|
|
|
|
factory :enterprise_group, class: EnterpriseGroup do
|
|
name { 'Enterprise group' }
|
|
sequence(:permalink) { |n| "group#{n}" }
|
|
description { 'this is a group' }
|
|
on_front_page { false }
|
|
address { FactoryBot.build(:address) }
|
|
end
|
|
|
|
factory :enterprise_fee, class: EnterpriseFee do
|
|
transient { amount { nil } }
|
|
|
|
sequence(:name) { |n| "Enterprise fee #{n}" }
|
|
sequence(:fee_type) { |n| EnterpriseFee::FEE_TYPES[n % EnterpriseFee::FEE_TYPES.count] }
|
|
|
|
enterprise { Enterprise.first || FactoryBot.create(:supplier_enterprise) }
|
|
calculator { build(:calculator_per_item, preferred_amount: amount) }
|
|
|
|
after(:create) { |ef| ef.calculator.save! }
|
|
|
|
trait :flat_rate do
|
|
transient { amount { 1 } }
|
|
calculator { build(:calculator_flat_rate, preferred_amount: amount) }
|
|
end
|
|
|
|
trait :per_item do
|
|
transient { amount { 1 } }
|
|
calculator { build(:calculator_per_item, preferred_amount: amount) }
|
|
end
|
|
|
|
trait :flat_percent_per_item do
|
|
transient { amount { 1 } }
|
|
calculator { build(:calculator_flat_percent_per_item, preferred_flat_percent: amount) }
|
|
end
|
|
end
|
|
|
|
factory :adjustment_metadata, class: AdjustmentMetadata do
|
|
adjustment { FactoryBot.create(:adjustment) }
|
|
enterprise { FactoryBot.create(:distributor_enterprise) }
|
|
fee_name { 'fee' }
|
|
fee_type { 'packing' }
|
|
enterprise_role { 'distributor' }
|
|
end
|
|
|
|
factory :producer_property, class: ProducerProperty do
|
|
value { 'abc123' }
|
|
producer { create(:supplier_enterprise) }
|
|
property
|
|
end
|
|
|
|
factory :stripe_account do
|
|
enterprise { FactoryBot.create(:distributor_enterprise) }
|
|
stripe_user_id { "abc123" }
|
|
stripe_publishable_key { "xyz456" }
|
|
end
|
|
end
|