Sha256: 00f1168dd8ada72d072cdf12d64342a409ff366d3dcd4796b98404889b1924da

Contents?: true

Size: 1.97 KB

Versions: 30

Compression:

Stored size: 1.97 KB

Contents

# frozen_string_literal: true

require 'spree/testing_support/factories/promotion_code_factory'
require 'spree/testing_support/factories/variant_factory'

FactoryBot.define do
  factory :promotion, class: 'Spree::Promotion' do
    name { 'Promo' }

    transient do
      code { nil }
    end
    before(:create) do |promotion, evaluator|
      if evaluator.code
        promotion.codes << build(:promotion_code, promotion: promotion, value: evaluator.code)
      end
    end

    trait :with_line_item_adjustment do
      transient do
        adjustment_rate { 10 }
      end

      after(:create) do |promotion, evaluator|
        calculator = Spree::Calculator::FlatRate.new
        calculator.preferred_amount = evaluator.adjustment_rate
        Spree::Promotion::Actions::CreateItemAdjustments.create!(calculator: calculator, promotion: promotion)
      end
    end
    factory :promotion_with_item_adjustment, traits: [:with_line_item_adjustment]

    trait :with_order_adjustment do
      transient do
        weighted_order_adjustment_amount { 10 }
      end

      after(:create) do |promotion, evaluator|
        calculator = Spree::Calculator::FlatRate.new
        calculator.preferred_amount = evaluator.weighted_order_adjustment_amount
        action = Spree::Promotion::Actions::CreateAdjustment.create!(calculator: calculator)
        promotion.actions << action
        promotion.save!
      end
    end
    factory :promotion_with_order_adjustment, traits: [:with_order_adjustment]

    trait :with_item_total_rule do
      transient do
        item_total_threshold_amount { 10 }
      end

      after(:create) do |promotion, evaluator|
        rule = Spree::Promotion::Rules::ItemTotal.create!(
          promotion: promotion,
          preferred_operator: 'gte',
          preferred_amount: evaluator.item_total_threshold_amount
        )
        promotion.rules << rule
        promotion.save!
      end
    end
    factory :promotion_with_item_total_rule, traits: [:with_item_total_rule]
  end
end

Version data entries

30 entries across 30 versions & 2 rubygems

Version Path
solidus_core-2.8.6 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.6.6 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.7.4 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.8.5 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.7.3 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.6.5 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.8.4 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.8.3 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.7.2 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.6.4 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.8.2 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.8.1 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.6.3 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.8.0 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core-2.7.1 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core_devise_token_auth-2.8.0.alpha.14 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core_devise_token_auth-2.8.0.alpha.13 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core_devise_token_auth-2.8.0.alpha.12 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core_devise_token_auth-2.8.0.alpha.11 lib/spree/testing_support/factories/promotion_factory.rb
solidus_core_devise_token_auth-2.8.0.alpha.10 lib/spree/testing_support/factories/promotion_factory.rb