Skip to content

Commit 679c5c9

Browse files
committed
Removed metadata from variant
1 parent 5df6f94 commit 679c5c9

File tree

10 files changed

+25
-71
lines changed

10 files changed

+25
-71
lines changed

api/app/controllers/spree/api/base_controller.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ class BaseController < ActionController::Base
1212
:ReturnAuthorization,
1313
:Shipment,
1414
:StockLocation,
15-
:StockMovement,
16-
:Variant
15+
:StockMovement
1716
]
1817

1918
self.responder = Spree::Api::Responders::AppResponder

api/app/controllers/spree/api/line_items_controller.rb

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ def create
1515
@line_item = @order.contents.add(
1616
variant,
1717
params[:line_item][:quantity] || 1,
18-
options: line_item_params[:options].to_h
18+
options: line_item_params[:options].to_h,
19+
**extract_metadata
1920
)
20-
set_metadata(@line_item)
21+
2122
respond_with(@line_item, status: 201, default_template: :show)
2223
rescue ActiveRecord::RecordInvalid => error
2324
invalid_resource!(error.record)
@@ -27,7 +28,6 @@ def create
2728
def update
2829
@line_item = find_line_item
2930
if @order.contents.update_cart(line_items_attributes)
30-
set_metadata(@line_item)
3131
@line_item.reload
3232
respond_with(@line_item, default_template: :show)
3333
else
@@ -43,14 +43,6 @@ def destroy
4343

4444
private
4545

46-
def set_metadata(line_item)
47-
line_item.update(customer_metadata: line_item_params[:customer_metadata])
48-
49-
if can?(:admin, Spree::LineItem)
50-
line_item.update(admin_metadata: line_item_params[:admin_metadata])
51-
end
52-
end
53-
5446
def load_order
5547
@order ||= Spree::Order.includes(:line_items).find_by!(number: order_id)
5648
authorize! :update, @order, order_token
@@ -66,10 +58,21 @@ def line_items_attributes
6658
{ line_items_attributes: {
6759
id: params[:id],
6860
quantity: params[:line_item][:quantity],
69-
options: line_item_params[:options] || {}
61+
options: line_item_params[:options] || {},
62+
**extract_metadata
7063
} }
7164
end
7265

66+
def extract_metadata
67+
metadata = { customer_metadata: line_item_params[:customer_metadata] }
68+
69+
if @current_user_roles&.include?("admin")
70+
metadata[:admin_metadata] = line_item_params[:admin_metadata]
71+
end
72+
73+
metadata
74+
end
75+
7376
def line_item_params
7477
params.require(:line_item).permit(permitted_line_item_attributes)
7578
end

api/app/helpers/spree/api/api_helpers.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ module ApiHelpers
4545
shipment: Spree::Shipment,
4646
stock_location: Spree::StockLocation,
4747
stock_movement: Spree::StockMovement,
48-
user: Spree::LegacyUser
48+
user: Spree::LegacyUser,
49+
line_item: Spree::LineItem
4950
}
5051

5152
ATTRIBUTES.each do |attribute|
@@ -79,7 +80,7 @@ def required_fields_for(model)
7980
def variant_attributes
8081
preference_attributes = Spree::Api::Config.variant_attributes
8182
if @current_user_roles&.include?("admin")
82-
preference_attributes + [:cost_price] + [:admin_metadata]
83+
preference_attributes + [:cost_price]
8384
else
8485
preference_attributes
8586
end

api/lib/spree/api_configuration.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class ApiConfiguration < Preferences::Configuration
1414

1515
preference :variant_attributes, :array, default: [
1616
:id, :name, :sku, :weight, :height, :width, :depth, :is_master,
17-
:slug, :description, :track_inventory, :customer_metadata
17+
:slug, :description, :track_inventory
1818
]
1919

2020
preference :image_attributes, :array, default: [

api/spec/requests/spree/api/variants_spec.rb

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -216,22 +216,6 @@ module Spree::Api
216216
:option_type_id])
217217
end
218218

219-
it "can see a single variant with customer metadata" do
220-
subject
221-
222-
expect(json_response).to have_attributes(show_attributes)
223-
expect(json_response["stock_items"]).to be_present
224-
225-
option_values = json_response["option_values"]
226-
227-
expect(json_response).to have_key('customer_metadata')
228-
expect(json_response).not_to have_key('admin_metadata')
229-
expect(option_values.first).to have_attributes([:name,
230-
:presentation,
231-
:option_type_name,
232-
:option_type_id])
233-
end
234-
235219
it "can see a single variant with images" do
236220
variant.images.create!(attachment: image("blank.jpg"))
237221

@@ -331,18 +315,6 @@ module Spree::Api
331315
expect(variant.product.variants.count).to eq(1)
332316
end
333317

334-
it "can create a new variant with metadata" do
335-
post spree.api_product_variants_path(product), params: { variant: { sku: "12345", customer_metadata: { 'type' => 'limited edition' }, admin_metadata: { 'in_demand' => 'true' } } }
336-
337-
expect(json_response).to have_attributes(new_attributes)
338-
expect(response.status).to eq(201)
339-
expect(json_response["sku"]).to eq("12345")
340-
expect(json_response["admin_metadata"]).to eq({ 'in_demand' => 'true' })
341-
expect(json_response["customer_metadata"]).to eq({ 'type' => 'limited edition' })
342-
343-
expect(variant.product.variants.count).to eq(1)
344-
end
345-
346318
it "creates new variants with nested option values" do
347319
option_values = create_list(:option_value, 2)
348320
expect do

core/app/models/spree/simple_order_contents.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,11 @@ def add_to_line_item(variant, quantity, options = {})
8585
adjustments: []
8686
)
8787

88+
permitted_attributes = Spree::PermittedAttributes.line_item_attributes.dup
89+
permitted_attributes << { admin_metadata: {} } if options[:admin_metadata].present?
90+
8891
line_item.quantity += quantity.to_i
89-
line_item.options = ActionController::Parameters.new(options).permit(PermittedAttributes.line_item_attributes).to_h
92+
line_item.options = ActionController::Parameters.new(options).permit(permitted_attributes).to_h
9093

9194
line_item.target_shipment = options[:shipment]
9295
line_item.save!

core/app/models/spree/variant.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class Variant < Spree::Base
1919
acts_as_list scope: :product
2020

2121
include Spree::SoftDeletable
22-
include Metadata
2322

2423
after_discard do
2524
stock_items.discard_all

core/db/migrate/20250129061658_add_metadata_to_spree_resources.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ def change
1313
spree_customer_returns
1414
spree_stock_locations
1515
spree_store_credit_events
16-
spree_variants
1716
spree_users
1817
spree_return_authorizations
1918
].each do |table_name|

core/lib/spree/permitted_attributes.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ module PermittedAttributes
143143
:position, :track_inventory,
144144
:product_id, :product, :price,
145145
:weight, :height, :width, :depth, :sku, :cost_currency,
146-
:tax_category_id, :shipping_category_id, customer_metadata: {},
146+
:tax_category_id, :shipping_category_id,
147147
option_value_ids: [],
148148
options: [:name, :value]
149149
]

core/spec/models/spree/variant_spec.rb

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,26 +1083,4 @@
10831083
expect { variant.option_values << variant.option_values.first }
10841084
.to raise_error ActiveRecord::RecordNotUnique
10851085
end
1086-
1087-
describe "metadata fields" do
1088-
subject { described_class.new }
1089-
1090-
it "responds to customer_metadata" do
1091-
expect(subject).to respond_to(:customer_metadata)
1092-
end
1093-
1094-
it "responds to admin_metadata" do
1095-
expect(subject).to respond_to(:admin_metadata)
1096-
end
1097-
1098-
it "can store data in customer_metadata" do
1099-
subject.customer_metadata = { "variant_type" => "veg" }
1100-
expect(subject.customer_metadata["variant_type"]).to eq("veg")
1101-
end
1102-
1103-
it "can store data in admin_metadata" do
1104-
subject.admin_metadata = { "variant_details" => "veg" }
1105-
expect(subject.admin_metadata["variant_details"]).to eq("veg")
1106-
end
1107-
end
11081086
end

0 commit comments

Comments
 (0)