Skip to content

Commit

Permalink
Merge pull request solidusio#5728 from mamhoff/do-not-initialize-prom…
Browse files Browse the repository at this point in the history
…otions-object-on-startup

Do not initialize promotions object on startup
  • Loading branch information
kennyadsl authored May 6, 2024
2 parents a1551e7 + 0f24a5d commit 4f9c427
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
12 changes: 11 additions & 1 deletion api/lib/spree/api_configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,17 @@ class ApiConfiguration < Preferences::Configuration
:variant_id
]

preference :promotion_attributes, :array, default: Spree::Config.promotions.promotion_api_attributes
def promotion_attributes
Spree::Config.promotions.promotion_api_attributes
end
alias_method :preferred_promotion_attributes, :promotion_attributes

def promotion_attributes=(value)
Spree::Config.promotions.promotion_api_attributes = value
end
alias_method :preferred_promotion_attributes=, :promotion_attributes=
promotion_attributes_deprecation_message = "Spree::ApiConfiguration#promotion_attributes= is deprecated. Please use Spree::Config.promotions.promotion_api_attributes= instead."
deprecate "promotion_attributes=" => promotion_attributes_deprecation_message, deprecator: Spree.deprecator

preference :store_attributes, :array, default: [
:id, :name, :url, :meta_description, :meta_keywords, :seo_title,
Expand Down
41 changes: 41 additions & 0 deletions api/spec/lib/spree/api_configuration_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# frozen_string_literal: true

require "spec_helper"

RSpec.describe Spree::ApiConfiguration do
subject(:config) { Spree::ApiConfiguration.new }

describe "#promotion_attributes" do
subject(:promotion_attributes) { config.promotion_attributes }

it { is_expected.to eq(Spree::Config.promotions.promotion_api_attributes) }

it "can be changed" do
config.promotion_attributes << :foo
expect(promotion_attributes).to include(:foo)
end

it "can delete attributes" do
expect(promotion_attributes).to include(:name)
config.promotion_attributes.delete(:name)
expect(promotion_attributes).not_to include(:name)
end
end

describe "#promotion_attributes=" do
subject(:promotion_attributes_setter) { config.promotion_attributes = [:name] }

around do |example|
original_attributes = Spree::Config.promotions.promotion_api_attributes
Spree.deprecator.silence do
example.run
end
Spree::Config.promotions.promotion_api_attributes = original_attributes
end

it "sets the promotion_attributes" do
promotion_attributes_setter
expect(config.promotion_attributes).to eq([:name])
end
end
end

0 comments on commit 4f9c427

Please sign in to comment.