Files
openfoodnetwork/spec/factories.rb
2025-03-12 21:23:49 +01:00

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