Skip to content

Commit 8433651

Browse files
committed
Add reverse_charge_status on store
Store model now has an enum for reverse_charge_status which let's user choose whether it is enabled, disabled or not validated.
1 parent dfe87ae commit 8433651

4 files changed

Lines changed: 48 additions & 0 deletions

File tree

core/app/models/spree/store.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ class Store < Spree::Base
2727
before_save :ensure_default_exists_and_is_unique
2828
before_destroy :validate_not_default
2929

30+
enum :reverse_charge_status, {
31+
disabled: 0,
32+
enabled: 1,
33+
not_validated: 2
34+
}, prefix: true
35+
3036
def available_locales
3137
locales = super()
3238
if locales

core/config/locales/en.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2081,6 +2081,10 @@ en:
20812081
return_quantity: Return Quantity
20822082
return_reasons: Return Reasons
20832083
returned: Returned
2084+
reverse_charge_statuses:
2085+
disabled: Disabled
2086+
enabled: Enabled
2087+
not_validated: Not Validated
20842088
review: Review
20852089
risk: Risk
20862090
risk_analysis: Risk Analysis
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# frozen_string_literal: true
2+
3+
class AddReverseChargeStatusToStore < ActiveRecord::Migration[7.2]
4+
def change
5+
add_column :spree_stores, :reverse_charge_status, :integer, default: 0, null: false,
6+
comment: "Enum values: 0 = disabled, 1 = enabled, 2 = not_validated"
7+
end
8+
end

core/spec/models/spree/store_spec.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,34 @@
106106
end
107107
end
108108
end
109+
110+
describe 'enum reverse_charge_status' do
111+
it 'defines the expected enum values' do
112+
expect(Spree::Store.reverse_charge_statuses).to eq({
113+
'disabled' => 0,
114+
'enabled' => 1,
115+
'not_validated' => 2
116+
})
117+
end
118+
119+
it 'allows valid values' do
120+
store = build(:store)
121+
# Updates the reverse_charge_status to "not_validated"
122+
expect(store).to be_valid
123+
store.reverse_charge_status_not_validated!
124+
125+
# Updates the reverse_charge_status to "disabled"
126+
expect(store).to be_valid
127+
store.reverse_charge_status_disabled!
128+
expect(store).to be_valid
129+
130+
# Updates the reverse_charge_status to "enabled"
131+
store.reverse_charge_status_enabled!
132+
expect(store).to be_valid
133+
end
134+
135+
it 'raises an error for invalid values' do
136+
expect { Spree::Store.new(reverse_charge_status: :invalid_status) }.to raise_error(ArgumentError)
137+
end
138+
end
109139
end

0 commit comments

Comments
 (0)