Files
openfoodnetwork/spec/factories/shipping_method_factory.rb
2024-04-23 12:31:41 +03:00

77 lines
2.1 KiB
Ruby

# frozen_string_literal: true
FactoryBot.define do
factory :base_shipping_method, class: Spree::ShippingMethod do
zones { [] }
name { 'UPS Ground' }
distributors { [Enterprise.is_distributor.first || FactoryBot.create(:distributor_enterprise)] }
display_on { '' }
before(:create) do |shipping_method, _evaluator|
shipping_method.shipping_categories << DefaultShippingCategory.find_or_create
end
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
factory :shipping_method, class: Spree::ShippingMethod do
association(:calculator, factory: :calculator, strategy: :build)
end
factory :free_shipping_method, class: Spree::ShippingMethod do
association(:calculator, factory: :no_amount_calculator, strategy: :build)
end
end
factory :shipping_method_with, parent: :shipping_method do
trait :delivery do
require_ship_address { true }
end
trait :pickup do
require_ship_address { false }
end
trait :flat_rate do
transient { amount { 50.0 } }
calculator { Calculator::FlatRate.new(preferred_amount: amount) }
end
trait :expensive_name do
name { "Shipping" }
description { "Expensive" }
calculator { Calculator::FlatRate.new(preferred_amount: 100.55) }
end
trait :distributor do
transient do
distributor { create :enterprise }
end
distributors { [distributor] }
end
trait :shipping_fee do
transient do
shipping_fee { 3 }
end
calculator { build(:calculator_per_item, preferred_amount: shipping_fee) }
require_ship_address { false }
distributors { [create(:distributor_enterprise_with_tax)] }
end
end
factory :distributor_shipping_method, class: DistributorShippingMethod do
shipping_method { FactoryBot.create(:shipping_method) }
distributor { FactoryBot.create(:distributor_enterprise) }
end
end