Sha256: 0c78b0b308e56554771ec60fe7d2b7ca5b0460c083b036498fefe6766973b8f1

Contents?: true

Size: 1.3 KB

Versions: 48

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

require 'rails_helper'

RSpec.describe Spree::PromotionAction, type: :model do
  describe '#remove_from' do
    class MyPromotionAction < Spree::PromotionAction
      def perform(options = {})
        order = options[:order]
        order.adjustments.create!(amount: 1, order: order, source: self, label: 'foo')
        true
      end
    end

    let(:action) { promotion.actions.first! }
    let!(:promotion) { create(:promotion, promotion_actions: [MyPromotionAction.new]) }
    let(:order) { create(:order) }

    # this adjustment should not get removed
    let!(:other_adjustment) { create(:adjustment, order: order, source: nil) }

    before do
      action.perform(order: order)
      @action_adjustment = order.adjustments.where(source: action).first!
    end

    it "generates its own partial path" do
      expect(action.to_partial_path).to eq 'spree/admin/promotions/actions/my_promotion_action'
    end

    it 'removes the action adjustment' do
      expect(order.adjustments).to match_array([other_adjustment, @action_adjustment])

      expect(Spree::Deprecation).to(
        receive(:warn).
        with(/"MyPromotionAction" does not define #remove_from/, anything)
      )

      action.remove_from(order)

      expect(order.adjustments).to eq([other_adjustment])
    end
  end
end

Version data entries

48 entries across 48 versions & 2 rubygems

Version Path
solidus_core-2.10.5 spec/models/spree/promotion_action_spec.rb
solidus_core-2.10.3 spec/models/spree/promotion_action_spec.rb
solidus_core-2.10.2 spec/models/spree/promotion_action_spec.rb
solidus_core-2.9.6 spec/models/spree/promotion_action_spec.rb
solidus_core-2.8.6 spec/models/spree/promotion_action_spec.rb
solidus_core-2.10.1 spec/models/spree/promotion_action_spec.rb
solidus_core-2.9.5 spec/models/spree/promotion_action_spec.rb
solidus_core-2.10.0 spec/models/spree/promotion_action_spec.rb
solidus_core-2.9.4 spec/models/spree/promotion_action_spec.rb
solidus_core-2.6.6 spec/models/spree/promotion_action_spec.rb
solidus_core-2.7.4 spec/models/spree/promotion_action_spec.rb
solidus_core-2.8.5 spec/models/spree/promotion_action_spec.rb
solidus_core-2.9.3 spec/models/spree/promotion_action_spec.rb
solidus_core-2.9.2 spec/models/spree/promotion_action_spec.rb
solidus_core-2.10.0.beta1 spec/models/spree/promotion_action_spec.rb
solidus_core-2.7.3 spec/models/spree/promotion_action_spec.rb
solidus_core-2.6.5 spec/models/spree/promotion_action_spec.rb
solidus_core-2.9.1 spec/models/spree/promotion_action_spec.rb
solidus_core-2.9.0 spec/models/spree/promotion_action_spec.rb
solidus_core-2.9.0.rc.1 spec/models/spree/promotion_action_spec.rb